[groonga-dev,01814] Re: mecabトークナイザでのtoo long sentenceの回避方法について

Back to archive index

Naoya Murakami visio****@gmail*****
2013年 9月 24日 (火) 06:58:49 JST


お世話になっております。村上です。

mecabトークナイザーのtoo long sentenceを回避するために、所定バイト数で分割し、
且つ、文章の区切りとなる文字まで戻して、mecab_sparse_to_str2に渡すように
トークナイザをいじりました。

https://github.com/naoa/groonga-tokenizer-customized/blob/master/tokenizers/mecabfilter.c

しかしながら、以下のような、corrupted double-linked listのメッセージがでて、
mysqldがクラッシュして、インデックス構築ができませんでした。。。

ソースをちょこちょこいじりましたが、3回まったく同じタイミングで再現しました。

また、インデックスに失敗したカラムを10分割にしてやってみると、
以下のメッセージはでず、インデックス構築に成功しました。

今、ご調査していただいているやつと、似たような状況なんでしょうかね。。。?
freeの処理が失敗??freeが重なりすぎている??よくわかりません。

http://d.hatena.ne.jp/msr_humpy/20120501/1335847763

それか、結構適当に無理やり分割処理しているので、そこがだめなのかよくわかりません。
でも、オリジナルのmecabトークナイザだと、too long sentenceでインデックス構築
できないという。。

またまた、困りました。。。
ご調査していただいている件の解決を期待しつつ、とりあえずは、
以下のメッセージがでないラインをさがしてみようかなぁと思ってます。


2013-09-24 06:23:10.361836|n|e85b7700|flushing:452 npostings:16731998
2013-09-24 06:23:10.582497|n|e85b7700|flushed: 452 encsize:26620463
*** glibc detected *** /usr/local/mysql/bin/mysqld: corrupted double-linked
list: 0x00007f80b864e610 ***
======= Backtrace: =========
/lib64/libc.so.6[0x37f36760e6]
/lib64/libc.so.6[0x37f3678f01]
/usr/lib64/libgroonga.so.0(grn_free_default+0x31)[0x7f8d17966fd1]
/usr/lib64/libgroonga.so.0(grn_string_close+0x3b)[0x7f8d17b019bb]
/usr/lib64/libgroonga.so.0(grn_obj_close+0x360)[0x7f8d17977710]
/usr/lib64/libgroonga.so.0(grn_tokenizer_query_close+0x1e)[0x7f8d17b046de]
/usr/lib64/groonga/plugins/tokenizers/mecabfilter.so(+0x1666)[0x7f821b9f4666]
/usr/lib64/libgroonga.so.0(grn_token_close+0x31)[0x7f8d17b035b1]
/usr/lib64/libgroonga.so.0(+0x116add)[0x7f8d17a55add]
/usr/lib64/libgroonga.so.0(grn_ii_build+0x64e)[0x7f8d17a70f1e]
/usr/lib64/libgroonga.so.0(grn_obj_set_info+0xaec)[0x7f8d1799bcac]
/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga20storage_create_indexEP5TABLEPKcP8_grn_objP16st_mroonga_shareP6st_keyPS5_SA_j+0x476)[0x7f8d17d98036]
/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga22storage_enable_indexesEj+0x274)[0x7f8d17da2c34]
/usr/local/mysql/bin/mysqld(_Z17mysql_alter_tableP3THDPcS1_P24st_ha_create_informationP10TABLE_LISTP10Alter_infojP8st_orderb+0x2164)[0x726b64]
/usr/local/mysql/bin/mysqld(_ZN19Sql_cmd_alter_table7executeEP3THD+0x43c)[0x81a9cc]
/usr/local/mysql/bin/mysqld(_Z21mysql_execute_commandP3THD+0x1a24)[0x6d3824]
/usr/local/mysql/bin/mysqld(_Z11mysql_parseP3THDPcjP12Parser_state+0x4c7)[0x6d6d47]
/usr/local/mysql/bin/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcj+0x189c)[0x6d86dc]
/usr/local/mysql/bin/mysqld(_Z24do_handle_one_connectionP3THD+0x10d)[0x6a0b2d]
/usr/local/mysql/bin/mysqld(handle_one_connection+0x42)[0x6a0c62]
/usr/local/mysql/bin/mysqld(pfs_spawn_thread+0x127)[0xae9357]
/lib64/libpthread.so.0[0x37f3a07851]
/lib64/libc.so.6(clone+0x6d)[0x37f36e890d]


>おぉ!独自ノーマライザー!
>11/29のgroonga勉強会でなにか話してみませんか!?
> http://atnd.org/events/43461
>groonga/mroongaを使い込んでいる系の話もあるといいなぁと思っ
>ていたのです!

いろいろお世話になっておりますし、お手伝いできればいいなとは思っていますが、
以下の理由からちょっと厳しそうです。
11月29日までに何とか目処がついて、そのときにまだ空きがあれば、
またご相談ということでいいですかね?

1.関西在住
2.groongaは本職では使っておらず、そもそも本職はシステムにまったく関係ない職業
3.インデックス構築に失敗していて、そもそも使い込めておらず、まだ紹介できるような状態にない

以上、よろしくお願いします。



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