[groonga-dev,00242] Re: TokenMecabを指定してレコードを追加するとSEGVが発生する

Back to archive index

morit****@razil***** morit****@razil*****
2009年 10月 20日 (火) 02:22:29 JST


森です。

ruby-groongaについて相談です。

以前、mecabを使うとatexit()まわりで問題が出るため、
回避策としてrb_set_end_proc()を使用するようにしていただいたと思います。

ところが、apache + mod_rubyを使用した場合、
スクリプトを実行する度にrb_set_end_proc()で指定した関数が呼ばれるため、
同一プロセスでgrn_fin()が何度も呼ばれることになり、
結果として2度目にスクリプトが実行されるタイミングで、
segvで落ちてしまうことが判明しました。

以下それぞれのバージョンです。

Apache/2.2.9
Ruby/1.8.7(2008-08-11)
mod_ruby/1.2.6

できればmod_rubyを使ってwebアプリケーションを書きたいのですが、
何か良い回避策はないでしょうか。。?

どうぞよろしくお願いいたします。

>>> morit****@razil***** さんは書きました:
> 森です。
> 
> >>> Kouhei Sutou さんは書きました:
> > 須藤です。
> > 
> > In <a3699****@mail*****>
> >   "[groonga-dev,00205] TokenMecabを指定してレコードを追加するとSEGVが発生する" on Tue, 22 Sep 2009 16:16:17 +0900,
> >   SHIDARA Yoji <dara****@shida*****> wrote:
> > 
> > > TokenMecabを使っている状態でレコードを追加すると
> > > SEGVが発生するようです。
> > 
> > 原因は森さんの言うとおりです。
> > atexit()よりもう少し前にMeCabをきれいにするようにしてみまし
> > た。
> > 
> > ログにも
> >   grn_fin (0)
> > と出ているので大丈夫じゃないかと思います。
> 
> ありがとうございます!!
> 
> > ただ、grn_gctxを使っちゃうんですよね。。。
> > やっぱり、使っちゃまずいですか? > 森さん
> 
> 了解です。当面はgrn_gctxを使うしかないですよね。。
> 
> openされているctxのリストを取得するような良いAPIが作れれば良いのですが、
> すっきりした仕様がなかなか思いつかないんですよね。。
> 
> > -- 
> > 須藤 功平 <kou****@clear*****>
> > 株式会社クリアコード (http://www.clear-code.com/)
> > 
> > _______________________________________________
> > groonga-dev mailing list
> > groon****@lists*****
> > http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
> > 
> --
> morita
> 
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
> 
--
morita




groonga-dev メーリングリストの案内
Back to archive index