[#34647] fork 不可能な環境での test_argv0_noarg — wanabe <s.wanabe@...>

ワナベと申します。

13 messages 2008/05/11
[#34667] Re: fork 不可能な環境での test_argv0_noarg — Yukihiro Matsumoto <matz@...> 2008/05/13

まつもと ゆきひろです

[#34742] Ruby 1.8.7-preview3 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.7-preview3 をリリースしました。

14 messages 2008/05/18
[#34744] Re: [ruby-list:44957] Ruby 1.8.7-preview3 has been released — Takahiro Kambe <taca@...> 2008/05/19

お疲れ様です。

[#34800] Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...>

木村です。

18 messages 2008/05/22
[#34801] Re: Windows2000上でtrunkがビルドできない — "U.Nakamura" <usa@...> 2008/05/22

こんにちは、なかむら(う)です。

[#34824] Re: Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...> 2008/05/23

木村です。

[#34850] Re: Windows2000上でtrunkがビルドできない — KIMURA Koichi <kimura.koichi@...> 2008/05/26

木村です。

[#34854] Re: Windows2000上でtrunkがビルドできない — "U.Nakamura" <usa@...> 2008/05/26

こんにちは、なかむら(う)です。

[#34889] Ruby 1.8.7-preview4 test-all failed in OpenSSL::TestSSL — Nobuhiro IMAI <nov@...>

いまいです。

10 messages 2008/05/29

[ruby-dev:34739] net/imap uses Thread#raise

From: Tanaka Akira <akr@...>
Date: 2008-05-18 15:21:49 UTC
List: ruby-dev #34739
net/imap が原因だと思うのですが、

make test-all で test_eucjp(TestKconv) が net/imap 関連のバッ
クトレースがついて
OpenSSL::SSL::SSLError: SSL_read:: certificate verify failed
という例外でエラーになったり、

http://www.rubyist.net/~akr/chkbuild/debian-sarge/ruby-trunk/log/20080513T002703.txt.gz :

  5) Error:
test_eucjp(TestKconv):
OpenSSL::SSL::SSLError: SSL_read:: certificate verify failed
    /home/akr/chkbuild/tmp/build/ruby-trunk/20080513T002703/ruby/.ext/common/openssl/buffering.rb:35:in `sysread'
    /home/akr/chkbuild/tmp/build/ruby-trunk/20080513T002703/ruby/.ext/common/openssl/buffering.rb:35:in `fill_rbuff'
    /home/akr/chkbuild/tmp/build/ruby-trunk/20080513T002703/ruby/.ext/common/openssl/buffering.rb:106:in `gets'
    /home/akr/chkbuild/tmp/build/ruby-trunk/20080513T002703/ruby/lib/net/imap.rb:1012:in `get_response'
    /home/akr/chkbuild/tmp/build/ruby-trunk/20080513T002703/ruby/lib/net/imap.rb:955:in `receive_responses'
    /home/akr/chkbuild/tmp/build/ruby-trunk/20080513T002703/ruby/lib/net/imap.rb:948:in `block in initialize'

make test-all が唐突に終わってしまったりします。

http://www.rubyist.net/~akr/chkbuild/debian-sarge/ruby-trunk/log/20080518T034301.txt.gz :

...
test_encode_utf7(IMAPTest): .
test_imaps_post_connection_check(IMAPTest): .
test_imaps_unknown_ca(IMAPTest): .
test_imaps_verify_none(IMAPTest): .
test_imaps_with_ca_file(IMAPTest): .
test_starttls(IMAPTest): E
test_eucjp(TestKconv): .
test_jis(TestKconv): .
test_shiftjis(TestKconv): .
test_utf8(TestKconv): .
/home/akr/chkbuild/tmp/build/ruby-trunk/20080518T034301/ruby/.ext/common/openssl/buffering.rb:35:in `sysread': SSL_read:: certificate verify failed (OpenSSL::SSL::SSLError)
        from /home/akr/chkbuild/tmp/build/ruby-trunk/20080518T034301/ruby/.ext/common/openssl/buffering.rb:35:in `fill_rbuff'
        from /home/akr/chkbuild/tmp/build/ruby-trunk/20080518T034301/ruby/.ext/common/openssl/buffering.rb:106:in `gets'
        from /home/akr/chkbuild/tmp/build/ruby-trunk/20080518T034301/ruby/lib/net/imap.rb:1012:in `get_response'
        from /home/akr/chkbuild/tmp/build/ruby-trunk/20080518T034301/ruby/lib/net/imap.rb:955:in `receive_responses'
        from /home/akr/chkbuild/tmp/build/ruby-trunk/20080518T034301/ruby/lib/net/imap.rb:948:in `block in initialize'

test/net/imap/test_imap.rb をいじって確実に disconnect させ
るようにしたりもしたのですが、どうも症状が消えません。

調べてみると、どうも net/imap は内部で @receiver_thread とい
うスレッドを作っていて、それが例外になった時に、クライアント
側のスレッドに Thread#raise で例外を発生させ直すということを
やっているようです。その結果、タイミングによっては、たとえば
test_eucjp の最中に起これば最初の例のようなエラーとなり、ま
た、テストとテストの合間に起これば test-all のプロセス自身が
終了してしまう、ということのようです。

で、思うのですが、まずそもそも Thread#raise を使うのはよろし
くありません。しばらく前に、[ruby-talk:292398] で始まるスレッ
ドがあり、私も何通か書きましたが、どのタイミングで起こるかわ
からない例外は対処が困難だと思います。もしうまく対処できると
いうのであれば、ぜひ方法を教えてください。

私としては、Thread#raise を使うのは止めて、例外はそのままス
レッドを終了させるようにし、disconnect あたりで join するこ
とによりクライアント側に例外を移すのが良いのではないかと思い
ます。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread

Prev Next