読者です 読者をやめる 読者になる 読者になる

mac portでインストールしたMeCabはマルチスレッドでうまく動かない

MeCab

雑誌のファイルから機械学習に投げるための素性作成C++のプログラムを書いているが、時間がかかりまくるのでマルチスレッドにしている。が、ローカル環境ではうまくいくのに、リモートではうまくいかないという困った事態に遭遇。

gdb使って死んだところでwhereとかしてみるとMeCab::Viterbi::connectNormalというところで死んでいた。なんでかな思いながら調べていると、リモートでは

$ mecab -v
mecab of 0.96

$ which mecab
/opt/local/bin/mecab

で、ローカルでは

$ mecab -v
mecab of 0.98pre2

$ which mecab
/usr/local/bin/mecab

となっていた。そういえばリモートはportで入れたMeCabで、ローカルはソースから入れたものだった。

マルチスレッド環境で辞書を開くときの排他制御がうまくいっていなかったバグの修正

http://mecab.sourceforge.jp

ということなので、この付近かな。思ったより早く原因をつきとめられてよかった。