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

[freewnn:00917] Re: dtoa SEGV



青野です。全然調べていませんので、情報量少ないです。

<1031625038.3023.64.camel@Remba>の記事において
zic-fw@XXXXさんは書きました。

>> 2002年09月07日(土)の05時01分に 亀井 信義 曰く:
>> > なんですが、 -R で作成した自分の辞書に、幾つか単語登録をしたところで、
>> > dtoa をやると、やはり SEGV (笑)。
>> > 
>> > 実は、こっちが元々の問題でした。
>> > この壊れた辞書(と思う)は、jserverで読み込むことができません。
>> > サーバがコケて死にます。
>> > 
>> > こっちについては継続調査です(なので、自動的に青野さんの今回の atod パッチも保留になってしまうと思うのです)。

保留ですか…。まだまだ道は遠いですね。Wnn(ここでは日本語に
限る)の三種類の辞書でそれぞれ別の処理を行っているのでもっ
と広い範囲での分析が必要そうです…。
#時間が許せば今回の部分だけでもcommitしておきます(間違っ
#てたと判明したら元に戻してください)。

>> 再発したので、もう少し追いかけてみました。
>> サーバ側処理迄は見てない(これはマニュアルには載ってるようですが)、
>> ちょっと辛いので、誰か助けて欲しいです。

確認ですが、currentではなくRedHatのパッケージ(SRPM)+パッチ
の構成ですよね?
#currentだったら小野さんのmalloc -> callocの変更でなんと
#かなるかもしれないので。

>> 1. 正常に使用できている辞書がある(確認したのは、逆変換可能辞書)
>> 2. タイミングは不明だが、その辞書に対して複数の単語登録を行なうと、
>> 	どこかの時点で辞書が壊れる。
>> 3. 但し、辞書がメモリ上のままならば、問題なく追加登録した単語を含めて使える。

…(^^;;。厳しいですなあ。こんな症状なら多くの環境で起こり
そうなものですが…。どの順番で登録したら起きるのか、が分か
れば分析しやすいのですが。

>> 4. Emacs上でのwnn-closeなどで、辞書をファイルに書き戻すと、壊れる。

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

(略)

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

御意。いまどきのソフトとしては想定外の入力ごときで落ちては
いけないのです(単なる私見)。
#dtoa・jserverどちらにもほしい所です。

>> 辞書のフォーマットが、分からないんですよねぇ。
>> 特にマッピングというかファイル内オフセットと内容。

Wnn/manual/6.jutil/dictionary とかは参考になりますか?

どこまでお手伝いできるかお約束はできませんが、お願いはいく
つかあります(^^;。
#直すためのパッチができるのが一番よいのですがそれ以外とい
#うことで。

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

- 壊れた辞書を差し支えない範囲でいただけませんか?
#再現方法があればそちらでも可です。

- (currentを使っている場合は)gdb jserverで、
[freewnn:00896] を参考にforkしないようにした上でクラッシュ
するまで(continueで)進めた上でbacktraceとっていただく、と
いうのはできますか。
#currentでない時は…起動しているプロセスにattachすればな
#んとかなるかな。(gdb jserverで起動した上でattach
#(jserverのpid)。中断する時はdetachします)
----
青野智樹	(aono@XXXX)
Personal opinion only..