Project

General

Profile

Actions

Bug #9881

closed

stuck in test/openssl/test_ssl.rb on Windows

Added by usa (Usaku NAKAMURA) over 10 years ago. Updated over 10 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 2.2.0dev (2014-05-29 trunk 46235) [x64-mswin64_100]
[ruby-dev:48266]

Description

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

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

  ssl.sync_close = true

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

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

Updated by akr (Akira Tanaka) over 10 years 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つに分けてみるとかでしょうか。
それも含め、再現スクリプトを最小化してみるというのはどうでしょうか。

Updated by usa (Usaku NAKAMURA) over 10 years 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行目でなく)ということがわかったので、なんだか不穏な感じです。
ちょっと出かけないといけないのでまだ途中ですが、また新しいことがわかったら報告します。

Updated by usa (Usaku NAKAMURA) over 10 years 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] [ruby-dev:48266]
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0