[Senna-dev 813] Re: sen_index_info関数(4Gbyte)

Back to archive index

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




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