[Namazu-users-ja 438] Re: mknmzが止まる

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2005年 7月 12日 (火) 16:37:56 JST


寺西です。

Katsuhiko Satoh wrote:
> 
> > > 「Warning: working buffer overflow!」が多量に表示され、数分後
> > > 止まってしまいます。
> >
> > ということでしたら、
> > ・xlhtml のバグ
> > あるいは
> > ・ファイルが壊れている
> > のいずれかでしょう。
> >
> > # ただ、状況からすると前者かな?
...
> > main_line_processor で使うバッファのようですから、1行が長い、あるいは
> > 複雑でデータサイズが大きいとかではないかと思います。(未確認)
> >
> > xlhtml.h の WBUFF_SIZE が 8240 ですから、この値をより大きなものに
> > すると改善するかもしれません。
> 
> 私もこの方法で既に試しましたが、改善できませんでした。

なるほど。

> 下記のようにデバックを追加し、バグを探しましたが、オーバーフローとなる原因が
> 掴めませんでした。

    if ((count == 0) && cont_opcode && after_str_header)
    {
        now_16bit = data & 0x01;
        if (now_16bit && !buf_16bit)
        {   /* previous chunk was not Unicode but this one is */
            int i;
            /* we will be doubling the buffer contents
             *   => check if there is space
             */
            if (2*buflast >= WBUFF_SIZE)
            {
                bufidx = WBUFF_SIZE + 1;
                break;
            }

という箇所があるので、各種条件がそろった場合に
bufidx = WBUFF_SIZE + 1 になるようです。

2*buflast が WBUFF_SIZE を超えるのが問題のようですが、さて、
なぜそれが超えるのかはわかりません。
データ側の問題か、解析部分のバグか。
 
> なかなか改善出来ないし、問題のエクセルファイル自体は壊れていないので、xlhtml
> のバグでは?

でしょう。

また、あまりこの現象が起こったという報告は聞いたことがないので、
データが特殊なのかなとも思います。

その Excel ファイルは Excel で作られたものでしょうか?
あるいは、何らかの別ツールで作られたものでしょうか。
日本語以外の言語を使っているとか、何か特殊なことをしているので
しょうか?
そういう何かちょっと特殊なデータには対応しきれていないということなの
かもしれません。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-users-ja メーリングリストの案内