From: Martin Bosslet Date: 2011-06-30T11:21:16+09:00 Subject: [ruby-core:37680] [Ruby 1.9 - Bug #4923] [ext/openssl] test_ssl.rb: test_client_auth fails Issue #4923 has been updated by Martin Bosslet. Oops, the n += 1 was misplaced indeed :) I tried on Fedora 15 with the official 0.9.8k and was able to reproduce the error in 'test_write_non_block'. Closing sockets s1 and s2 in the ensure block in 'test_connect_accept_nonblock' unfortunately didn't help, still the same error (running the tests normally). Next, I tested with 0.9.8o (official download) and *wasn't* able to reproduce it (again Fedora 15 32 bit) - in contrast to your experience. 0.9.8k: Fails 0.9.8l: Fails 0.9.8m: Succeeds 0.9.8n: Succeeds 0.9.8o: Succeeds 0.9.8r: Succeeds 1.0.0d: Succeeds So it seems that on my side I'm able to reproduce it deterministically with 0.9.8k and 0.9.8l, but the failure vanishes in versions >= 0.9.8m. I scanned through OpenSSL's change log looking for changes made in 0.9.8m and found this: Handle non-blocking I/O properly in SSL_shutdown() call. [Darryl Miles ] The behavior on my machine would underline the assumption that this is probably the cause. What do you think? Should I try to find out exactly what Darryl Miles changed to see whether we could handle this in ext/openssl, too? ---------------------------------------- Bug #4923: [ext/openssl] test_ssl.rb: test_client_auth fails http://redmine.ruby-lang.org/issues/4923 Author: Martin Bosslet Status: Open Priority: Normal Assignee: Hiroshi Nakamura Category: ext Target version: 1.9.3 ruby -v: ruby 1.9.3dev (2011-06-13 trunk 32213) [i686-linux] Hi, I was finally able to reproduce this with Fedora 15 32 bit, OpenSSL 1.0.0d. The error occurs only when running make test-all TESTS="openssl", if I run test_ssl.rb independently the test succeeds. Here is the output I get: 1) Error: test_client_auth(OpenSSL::TestSSL): OpenSSL::SSL::SSLError: SSL_read:: sslv3 alert bad record mac /home/martin/Projekte/Ruby/build/.ext/common/openssl/buffering.rb:53:in `sysread' /home/martin/Projekte/Ruby/build/.ext/common/openssl/buffering.rb:53:in `fill_rbuff' /home/martin/Projekte/Ruby/build/.ext/common/openssl/buffering.rb:200:in `gets' /home/martin/Projekte/Ruby/ruby/test/openssl/test_ssl.rb:118:in `block in test_client_auth' /home/martin/Projekte/Ruby/ruby/test/openssl/utils.rb:280:in `call' /home/martin/Projekte/Ruby/ruby/test/openssl/utils.rb:280:in `start_server' /home/martin/Projekte/Ruby/ruby/test/openssl/test_ssl.rb:103:in `test_client_auth' Related to #4919. Regards, Martin -- http://redmine.ruby-lang.org