2004-01-21 (Wed)
_ [Ruby] Net::IMAPでclosed streamエラー
mobileimapで以下のようなエラーが出るというレポートをいただいた。
closed stream /usr/local/lib/ruby/1.8/net/imap.rb:1013:in `write' /usr/local/lib/ruby/1.8/net/imap.rb:1013:in `print' /usr/local/lib/ruby/1.8/net/imap.rb:1013:in `put_line' /usr/local/lib/ruby/1.8/net/imap.rb:986:in `send_command' /usr/local/lib/ruby/1.8/net/imap.rb:980:in `synchronize' /usr/local/lib/ruby/1.8/net/imap.rb:998:in `send_command' /usr/local/lib/ruby/1.8/net/imap.rb:311:in `logout' ...
Net::IMAPのせいではないか、ということだけど、そうに違いない。 ごめんなさい。
でも、上記のバックトレースだけでは状況がよくわからない。
Net::IMAPはスレッドを使ってるのだが、Rubyだとメイン以外のスレッド
が例外で落ちた時にデフォルトでは何もおこならい(Javaとかはどうなんだっけ)
ので、バックトレースの情報があんまり有用でないことがある(本当の問
題はバックトレースが出てくるより前の、別スレッドの挙動にあるため)。
こういう時は、Thread.abort_on_exception = trueとすると原因
がわかることが多い。
*1
*2
あと、Rubyのスレッドではまりやすいのは、Cで実装したメソッドの中で ブロックしてしまうと(関係ないスレッドもふくめて)全部の処理が止まっ てしまうことだ。 たとえば、データベースのトランザクションなんかでデッドロックに陥 ると、どうしようもなくなる。 *3
_ [Ruby] Changes
rubyの変更点を日本語で読みたい時は <URL:http://rrr.jin.gr.jp/rwiki?cmd=view;name=ruby-cvs> を見ればいいらしい。 *4
[ツッコミを入れる]
[TrackBack URL: http://shugo.net/jit/tb.rb/20040121]
本日のリンク元
- http://search.live.com/results.aspx?q=local&mrt=en... ×3
- http://www.mylab.jp/diary/20040121.html ×3
- http://www.rubyist.net/~matz/20040120.html ×2
- http://search.live.com/results.aspx?q=local ×2
- tDiary.Net[sunoko] ×2
- http://sbs.mobile.yahoo.co.jp/union/search?p=エラーレポ... ×2
- http://www.mylab.jp/diary/ ×1
- http://search.live.com/results.aspx?q=local&form=Q... ×1
- http://www.rubyist.net/~matz/20031221.html ×1
- http://sheepman.parfait.ne.jp/200401.html ×1
