[Senna-dev 31] mecab-0.81.mte.patchがFedoraCore3で不具合発生

アーカイブの一覧に戻る

Kazuhiro Osawa ko****@yappo*****
2005年 4月 19日 (火) 11:30:13 JST


大沢です。


FedoraCore3にて、Senna環境を構築をしてたのですがmecab-0.81.mte.patchを当てた
libmecab.soが正常に動作しませんでした。

gcc -vの結果は下記のとおりです。
gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)

下記のソースを
mecab.c------------------------------------------
#include <mecab.h>
int main () {
  char *arg[] = {"", "-Owakati"};
  mecab_load_dictionary(2, arg);
}
------------------------------------------

$ gcc -o mecab mecab.c -lmecab
して
$ gdb ./mecab
(gdb) run
としたら、下記のメッセージが表示され

------------------------------------------
Program received signal SIGSEGV, Segmentation fault.
0x006a325d in std::_Rb_tree<std::string, std::pair<std::string const, std::string>, std::_Select1st<std::pair<std::string const, std::string> >, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >::insert_unique () from /usr/local/lib/libmecab.so.0
------------------------------------------

(gdb) bt
したら、下記のようになりました。
------------------------------------------
#0  0x006a325d in std::_Rb_tree<std::string, std::pair<std::string const, std::string>, std::_Select1st<std::pair<std::string const, std::string> >, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >::insert_unique () from /usr/local/lib/libmecab.so.0
#1  0x0069eeb6 in MeCab::Param::setProfile () from /usr/local/lib/libmecab.so.0
#2  0x006a1c85 in MeCab::Param::open () from /usr/local/lib/libmecab.so.0
#3  0x006b508d in MeCab::SharedResource::open () from /usr/local/lib/libmecab.so.0
#4  0x006b8d15 in MeCab::SharedResourceOpen () from /usr/local/lib/libmecab.so.0
#5  0x006bf9ca in mecab_load_dictionary () from /usr/local/lib/libmecab.so.0
#6  0x0804849c in main ()
------------------------------------------

mecabのsrc/param.cppのconf変数に値を入れる時にエラーが出ているようなので
conf.clear()してみたり色々やっているうちに
mecab-0.81.mte.patchにpatchを当てる事で正常に動作するようになりました。

mecab-0.81.mte.patch.patch------------------------------------------
--- mecab-0.81.mte.patch        2005-04-11 10:19:25.000000000 +0900
+++ mecab-0.81.mte.patch.patch  2005-04-18 19:09:23.140384355 +0900
@@ -482,7 +482,7 @@
 +
 +  bool SharedResource::open(int argc, char** argv)
 +  {
-+    if (opened) close();
++    opened = true;close();
 +    if (! param.open (argc, argv, long_options)) {
 +      return false;
 +    }
------------------------------------------

正直STLには疎いので、この対処方で良いのかどうか分りませんが
応急処置という事で。。。

---
osawa



Senna-dev メーリングリストの案内
アーカイブの一覧に戻る