[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freewnn:00918] Re: dtoa SEGV



小野寛生です

すみません。こっちは jserver の方をひと区切りつけてから手をつける
つもりです。
% それまでに解決していると嬉しいですが :p

At Tue, 10 Sep 2002 19:30:01 JST,
Tomoki AONO wrote:
> 確認ですが、currentではなくRedHatのパッケージ(SRPM)+パッチ
> の構成ですよね?
> #currentだったら小野さんのmalloc -> callocの変更でなんと
> #かなるかもしれないので。

jserver を nm して、malloc1 というのが見えたら (これまでの snap は全て
そのはずですが)、
・malloc のかわりに calloc している。
・realloc は、新しいサイズを calloc した後に、元のデータを bcopy
(FreeBSD で malloc.conf を Z にするのに相当)
となっているので、この件はあまり関係ないでしょう。

> この時点まではエラーメッセージらしきものはない、と理解して
> いいでしょうか。

> >> ※ コード中に適度に assert があるべきだと思う。

> 御意。いまどきのソフトとしては想定外の入力ごときで落ちては
> いけないのです(単なる私見)。

FreeWnn の source を見ていると、私の拙いプログラミングの知識で見ても
 (見ると?) invariant 条件のチェックはかなり怪しく感じます。
dtoa に 頻度ファイル食わせると、Wnn Malloc Error とか (エラーメッセー
ジは不正確です) いって落ちるとか、jserver で realloc 使っているところ
はエラー処理を一応はしているものの、realloc は失敗しないという期待の
もと書かれているように思えるとか。

> - jserverにSIGSEGV のハンドラをつけましょうか?
> #基本的にSIGSEGVしましたよ、以上のことは記録できないでしょ
> #う。

あまり意味はないと思います。
-g2 でコンパイルしていただいた上で、core が出来れば十分と思います。

> - (currentを使っている場合は)gdb jserverで、
> [freewnn:00896] を参考にforkしないようにした上でクラッシュ
> するまで(continueで)進めた上でbacktraceとっていただく、と
> いうのはできますか。

core を backtrace って出来ませんでしたっけ?