Bug #9881

stuck in test/openssl/test_ssl.rb on Windows

Added by Usaku NAKAMURA 12 months ago. Updated 12 months ago.

[ruby-dev:48266]
Status:Closed
Priority:Normal
Assignee:Akira Tanaka
ruby -v:ruby 2.2.0dev (2014-05-29 trunk 46235) [x64-mswin64_100] Backport:2.0.0: UNKNOWN, 2.1: UNKNOWN

Description

r46223以降、WindowsにおいてOpenSSL::TestSSL#test_verify_resultで刺さってしまうようになりました。
(CI等で確認できます)

調べてみたところ、この変更時に追加された、

  ssl.sync_close = true

の1行が問題のようです。
よくわからないのですが、他のテストメソッドはこれがあっても問題ありません。

意味がわかってないので私にはなんとも言えないのですが、何かわかりますでしょうか?

Associated revisions

Revision 46325
Added by Usaku NAKAMURA 12 months ago

  • test/openssl/test_ssl.rb (OpenSSL::TestSSL#test_verify_result): shouldn't use same server for respective tests, because the 1st test sometimes kills the server main loop silently. [Bug #9881]

Revision 46325
Added by Usaku NAKAMURA 12 months ago

  • test/openssl/test_ssl.rb (OpenSSL::TestSSL#test_verify_result): shouldn't use same server for respective tests, because the 1st test sometimes kills the server main loop silently. [Bug #9881]

History

#1 Updated by Akira Tanaka 12 months ago

まず ssl.sync_close = true の意味は、
ssl.close としたときに ssl に入っている
IO も同時に close するようにする、という意味です。

これがないと、test_verify_result で
sock = TCPSocket.new("127.0.0.1", port) として作ったソケットを close し忘れることになります。

close するようにしたら刺さるようになるというのは
ちょっと原因が想像しがたいのですが、
とりあえず刺さっているのはどこでしょうか。

刺さっている場所は ssl.sync_close = true そのものじゃなくて、それよりも後ではないかと思うのですが。

あと思いつくこととしては、test_verify_result は 3つのテストが入っている感じなので、
メソッドを 3つに分けてみるとかでしょうか。
それも含め、再現スクリプトを最小化してみるというのはどうでしょうか。

#2 Updated by Usaku NAKAMURA 12 months ago

Akira Tanaka wrote:

close するようにしたら刺さるようになるというのは
ちょっと原因が想像しがたいのですが、
とりあえず刺さっているのはどこでしょうか。

刺さっている場所は ssl.sync_close = true そのものじゃなくて、それよりも後ではないかと思うのですが。

はい、2回目の ssl.connect (266行目) です。

あと思いつくこととしては、test_verify_result は 3つのテストが入っている感じなので、
メソッドを 3つに分けてみるとかでしょうか。
それも含め、再現スクリプトを最小化してみるというのはどうでしょうか。

なるほど。
というわけで、今作業途中なのですが、247行目の ssl.sync_close = true があると266行目で刺さる
(249行目でなく)ということがわかったので、なんだか不穏な感じです。
ちょっと出かけないといけないのでまだ途中ですが、また新しいことがわかったら報告します。

#3 Updated by Usaku NAKAMURA 12 months ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

Applied in changeset r46325.


  • test/openssl/test_ssl.rb (OpenSSL::TestSSL#test_verify_result): shouldn't use same server for respective tests, because the 1st test sometimes kills the server main loop silently. [Bug #9881]

Also available in: Atom PDF