morit****@razil*****
morit****@razil*****
2008年 3月 17日 (月) 16:36:47 JST
森です。こんにちは。 ご指摘ありがとうございます。修正させていただきます!! >>> kousa****@nttda***** さんは書きました: > 幸坂です。こんにちは。 > > sen_index_info関数を使用する際に、 > chunk_sizeを正常に計測できない問題が発生したため、 > 報告させて頂きます。 > > 環境: > RHEL 4 (32bit) kernel 2.6.9 > gcc 3.4.6 > Senna 1.1.2 > > 1073483776 byte 394452.SEN.i.c > 1073741824 byte 394452.SEN.i.c.001 > 1073741824 byte 394452.SEN.i.c.002 > 1073741824 byte 394452.SEN.i.c.003 > 1073741824 byte 394452.SEN.i.c.004 > 837812224 byte 394452.SEN.i.c.005 > > 上記のchunkファイルが存在する状態で、 > sen_index_info関数を用いて、chunkファイルサイズを計測すると、 > 4294709248 となります。(4つのファイルサイズの合計です。) > > ソースを覗いたところ、io.cの以下のあたりが気になります。 > > uint64_t tail = io->base + segment * segment_size + offset + size; > if (tail > io->header->curr_size) { io->header->curr_size = tail; } > > segmentとsement_sizeはuint32_tで定義されているので、 > segment*segment_sizeが4ギガ(uint32_tの上限)を超えると、 > オーバーフローが発生すると思われます。 > segmentをuint64_tでキャストする必要があると思われます。 > > 以上です。 > > _______________________________________________ > Senna-dev mailing list > Senna****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita