From: Yukihiro Matsumoto Date: 2006-07-11T01:06:11+09:00 Subject: [ruby-list:42564] Re: IO::select() の dead lock ? まつもと ゆきひろです めったに起きない現象だそうですから、原因の特定は難しいかもし れませんが。 In message "Re: [ruby-list:42563] IO::select() の dead lock ?" on Tue, 11 Jul 2006 00:04:29 +0900, Hiroshi migimatsu ^^ writes: | 切替元サーバは telnet コネクションが継続してるとみなして, | データを送って来ているのですが,telnet クライアントはアド | レスが変わった切替先のサーバに応答をしています. | | 切替元 [データ] --> Net::telnet --> [ACK] 切替先 | <-- [RST] |     [ 再送 ] --> --> [ACK] | <-- [RST] | ... うーむ。これはこれで難儀な...。 | この時,Net::telnet() 内 IO::select() にてデッドロックする | 現象に悩まされています.telnet#cmd() がタイムアウトを検知 | しないばかりか,timeout ブロックで括ってもタイムアウト検知 | しません. Net::telnet()内IO::selectというのはtelnet.rb何行目に登場する IO::selectでしょうか。telnet.rbには3ヶ所selectが登場するので すが、ふたつはwaitforメソッド、もうひとつはwriteメソッドです。 また、net/telnet自身はスレッドを使っていませんが、クライアン トプログラムはスレッドを利用しているのでしょうか。その辺も関 係があるかもしれません。 まつもと ゆきひろ /:|)