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

[freewnn:00896] Re: defect in Japanese conversion



小野寛生です。

At Thu, 15 Aug 2002 19:36:27 JST,
Tomoki AONO wrote:
> >> >   union wait status
> Web検索してみると似たような問題はどこでも起きているようで、

> #GNU-makeなどは真面目にconfigureで検査しているようです。

うーん。やっぱそうした方がよいですかねえ。
ちょっと、GNU make の source もみてみます。

> これはどんな状況で起きるものなのでしょうか。再現できるよう
> な例ならお教えいただけるとありがたいです。本来なら
> js_open()辺りで対応すべきことかもしれませんので…。

Aug/12/2002:03:52:54 server: script started
Aug/12/2002:03:52:54 server: invoked as /build/FreeWnn/t6/bin/Wnn4/jserver.
Aug/12/2002:03:52:54 server: max_client=64
Aug/12/2002:03:55:02 server: new Client: sd = 0
Aug/12/2002:03:55:02 client=佩佩佩佩佩佩佩佩佩佩佩佩...
	以下、ゴミが延々と続く。で最後に、
	: JS_OPEN(1): cur_clp = 0
Aug/12/2002:03:55:02 client=hiroo: Inet user=hiroo@XXXX
Aug/12/2002:03:55:02 client=hiroo: JS_ENV_EXIST(7): cur_clp = 0
Aug/12/2002:03:55:02 client=hiroo: JS_CONNECT(5): cur_clp = 0
Aug/12/2002:03:55:02 client=hiroo: new_env: Created , hiroo env_id=0
Aug/12/2002:03:55:02 client=hiroo: JS_FUZOKUGO_GET(48): cur_clp = 0
Aug/12/2002:03:55:02 client=hiroo: Error 付属語ファイルが読み込まれていません。(27): cur_clp = 0

・ js_open でユーザー名を set する前に log_debug が呼ばれる。
・ malloc 後初期化していないので、ゴミが入っている。

ということのようです。malloc の実体を calloc にする wrapper をとっぱらう前は、

Aug/12/2002:16:25:11 server: script started
Aug/12/2002:16:25:11 server: invoked as /build/FreeWnn/t7/bin/Wnn4/jserver.
Aug/12/2002:16:25:11 server: max_client=64
Aug/12/2002:16:25:20 server: new Client: sd = 0
Aug/12/2002:16:25:20 client=<UNKNOWN>: JS_OPEN(1): cur_clp = 0
Aug/12/2002:16:25:20 client=hiroo: Inet user=hiroo@XXXX
Aug/12/2002:16:25:20 client=hiroo: JS_ENV_EXIST(7): cur_clp = 0
Aug/12/2002:16:25:20 client=hiroo: JS_CONNECT(5): cur_clp = 0

で意図どおり弾いていました。
なので、c_c の実体を確保する際は calloc を使うべきなのでしょう。
と推測しているので、これから実際の code をみてみます。

> 前回のcommitで小野さんが目指しているforkしないオプションま
> で後一歩というところになって喜ばしいのですが、ほかに気になっ
> た点があるのでもう少し書かせて下さい。

ちなみに、debugger で追っかける時は、de.c の
     226   option_flag |= SERVER_FORK;
まで実行した後で、option_flag の値を 0 にして下さい。
そうしたら fork しません。
% 今のところ、最下位のビットしか使っていません。

本当は *BSD では daemon(2) 使いたいなとか思っているのですが、
そうするといろいろ直さないといけないところが…。

> 今回de.cで有効にされた ready_socksの表示(322行目)なのです
> が、いつも同じ値が記録されるので意味があるのか分かりません。

なんも考えずに有効にしてしまいましたが、その通りですね。
下記のように変えるか、消すかどっちがよいでしょう。
その情報をみたいかどうかだと思うのですが。

> #手元ではno_of_ready_socks(現時点で入力がある(処理すべき) 
> #接続数)に変えてしまいました。自信がないのでcommitはしま
> #せんが…。