mksaryの-bオプションと-sオプション

sary付属のmksaryで800MBytesのファイルに2bytesごとにインデックスを割り当ててSuffix Arrayを作りたかったのだが、Perlスクリプトでインデックスを割り当てておいて、

 mksary -b -s foo

とやると、Segmentation Faultで落ちた。
ソースを追いかけると、どうも -s オプションを指定した場合はインデックスファイルをmmapで読み込むらしい。テキストとインデックスであわせて2.4GBytesのメモリを確保しようとするので、x86の1プロセス2GBytesの壁に当たって失敗するというオチ。しかもこのとき(sary_builder_block_sortの中)に限って戻り値のチェックがないものだからソースを追いかける羽目に。
まぁ、要するにsaryで任意の位置にインデックスを張りたくて、テキスト+インデックスが2GBytesを超える場合はあらかじめインデックスを分割しておいて、自力でマージしろってことですな。
って良く考えれば、libsaryの関数使えば簡単にできるんような。そもそもそんなユースケースがどれほどあるよって話もあるけど。