[groonga-dev,03720] Re: groonga検索時にrc=-35のエラーが発生する

Back to archive index

Susumu Yata yata****@razil*****
2015年 12月 7日 (月) 17:59:42 JST


矢田です.

ご報告ありがとうございます.

エラーメッセージを参考にソースコードを辿ってみたところ, OR の個数が原因のようです.

[[-35,1449474361.23027,0.00206923484802246,"stack is
full",[["grn_expr_append_obj","expr.c",751]]],[]]

検索条件を構成する要素が多すぎるために,固定サイズの領域が埋まってしまったようです.

// expr.c
if (e->codes_curr >= e->codes_size) {
  ERR(GRN_NO_MEMORY_AVAILABLE, "stack is full");
  goto exit;
}

// expr.c
int size = GRN_STACK_SIZE;
...
expr->codes_size = size;

// config.h
/* stack size */
#define GRN_STACK_SIZE 1024

一応,この値はビルド時に指定できるみたいです.
コミットメッセージには "This is DANGER parameter!!!" と書かれていますが….

- Make GRN_STACK_SIZE customizable on build · groonga/groonga @ 1162623
 - https://github.com/groonga/groonga/commit/116262374751a91318c4815e9a293aeeaf98cfbb

2015年12月7日 16:52 Hiroyuki Sato <hiroy****@gmail*****>:
> 手動でコマンドを実行したら
>
> [[-35,1449474361.23027,0.00206923484802246,"stack is
> full",[["grn_expr_append_obj","expr.c",751]]],[]]
>
> となりました。
> ORの個数?、クエリの長さ?を減らすと大丈夫なようです。
>
> よろしくお願いします。
>
>
>
> 2015年12月7日(月) 16:19 Hiroyuki Sato <hiroy****@gmail*****>:
>>
>> 佐藤です。
>>
>> 質問です。
>>
>> 1, rc=-35のエラー
>>
>>  groongaで検索をしていて次のエラーが発生しました。
>>
>>    2015-12-07 15:26:13.929059|0x7fee80d71d10|:000000000834456 select(0)
>>    2015-12-07 15:26:13.929103|0x7fee80d71d10|<000000000878385 rc=-35
>>
>>  rc=-35とは、メモリ不足だと思うのですが、
>>  なにか設定でこの容量を増やすことはできますでしょうか?
>>
>>  include/groonga/groonga.h
>>    GRN_NO_MEMORY_AVAILABLE = -35,
>>
>> 2, やっていることは
>>
>>   https://github.com/hiroyuki-sato/groonga-highlight_test#クエリ
>>   とほぼ同じです。ただし、ORの数が252個ぐらいあります。
>>
>>   select \
>>     --table Data \
>>     --match_columns article \
>>     --output_columns "_key,highlight_html(article),line_no" \
>>     --query "( あいこ OR あかり OR ありま OR いつお OR うらら OR かおり OR かとう OR かなえ OR かなめ
>> OR きよこ OR きよみ OR こずえ OR しげこ OR すずき  OR せいこ OR せんだ OR たいじ OR たけお OR たまえ OR
>> ちゃん OR ちょこ OR とよこ OR ながの OR のぼる OR のむら OR まこと OR みどり OR みやこ OR みゆき OR よしの OR
>> よしみ OR 健次郎 OR 利根川 OR 千々石 OR 千鶴子 OR 大久保 OR 大河原 OR 威海衛 OR 宇都宮 OR 小石川 OR 江田島 OR
>> 海江田 OR 西久保 OR 高千穂 OR こうへい OR こうめい ) OR (line_no:>1 + line_no:<500)" \
>>     --command_version 2 \
>>     --limit -1
>>
>> 3, 環境
>>   OS: Scientific Linux 6 64bit
>>  groonga: 5.0.8です。(正確にはhighlight_html修正済みの5.0.7-2)
>>
>>   vm.overcommit_memroyは1にしてあります。
>>   DBの格納されているサイズは280MBぐらいでそれほど容量が大きいわけではありません。
>>
>>   ファイルは32個ぐらいしか開いておらずファイルディスクリプタが足りないということ
>>   もないようです。
>>
>> よろしくお願いします。
>>
>>
>>
>>
>
>
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.osdn.me/mailman/listinfo/groonga-dev
>



-- 
Susumu Yata <yata****@razil*****>



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