Kouhei Sutou
kou****@clear*****
2013年 8月 27日 (火) 16:28:58 JST
須藤です。 In <CANM+Hhf_Ammt1iyJiqrSiMrTAx0T_aT6Gx****@mail*****> "[groonga-dev,01701] Re: 仮想メモリサイズを超えるmroongaのインデックス構築について" on Tue, 27 Aug 2013 15:14:28 +0900, Naoya Murakami <visio****@gmail*****> wrote: > 当方あまりに解析能力がなくて申し訳ないです。 いえいえ! いろいろ試してもらって助かっています。 > mysqldのバックトレースというのは、たぶん以下でいいのですよね? > mysql5.5.14と5.6.13でクラッシュしたときの2種類がありました。 > 5.6.13では、groongaの関数が見えている感じですが、これで特定できますか? はい!だいぶ特定できます。 ありがとうございます! > /usr/lib64/libgroonga.so.0(grn_free_default+0x31)[0x7f73542828f1] > /usr/lib64/libgroonga.so.0(+0x10b0d4)[0x7f735436c0d4] > /usr/lib64/libgroonga.so.0(grn_ii_buffer_commit+0x3fd)[0x7f735438a10d] が2つでているのが妙なのですが、↑の真ん中の関数名がでていな いやつがわかれば原因がわかりそうな気がします。 > できなければ、教えていただいたデバッグをしかけて、再現させてみたいと思います。 もう少し原因を絞り込むために、groongaだけデバッグビルドにし てもらえないでしょうか。。。 あと、デバッグログを埋め込んだブランチを作ったので、それを使っ て動かしてもらえるとうれしいです。手順をまとめるとこんな感じ のことをして欲しいです。(すでにgit cloneしたgroongaリポジト リを持っている前提です。持っていますよね?) % cd groonga % git stash % git pull --rebase % git checkout origin/debug-groonga-dev-01701 % git stash pop # commitした変更点があればそれを変更する % ./configure --with-debug ...(他のオプション)... % make -j > /dev/null % sudo make install このgroongaを使うとnoticeレベルで grn_ii_buffer_commit: ... のようなログがgroogna.logにでてきます。クラッシュしたときか らさかのぼって2番目の grn_ii_buffer_commit: start 以降のログを見せてもらえるとうれしいです。 私の予想では、 grn_ii_buffer_commit: datavec_init: -35 というのがでていて、 grn_ii_buffer_commit: databec_fin というのが最後のログになっているんじゃないかと思っています。 また、 > /usr/lib64/libgroonga.so.0(grn_free_default+0x31)[0x7f73542828f1] > /usr/lib64/libgroonga.so.0(+0x10b0d4)[0x7f735436c0d4] > /usr/lib64/libgroonga.so.0(grn_ii_buffer_commit+0x3fd)[0x7f735438a10d] ↑の関数名がでていないやつはdatavec_finになるんじゃないあk と思っています。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/ コミットへのコメントサービスはじめました: http://www.clear-code.com/services/commit-comment.html