Bug #4966
closedOpenSSL まわりで GC.stress で [BUG]
Description
私の環境で、trunk の r32371 以降で(ですが、おそらくその変更で、潜んでいたバグが顕在化した模様)以下のようなスクリプトで以下のように [BUG] になります
/usr/local/lib/ruby/1.9.1/openssl/ssl-internal.rb:162: [BUG] gc_sweep(): unknown data type 0x0(0x80134fdd8)
全メッセージとバックトレースは添付ファイルにしました
また、test-all が OpenSSL::TestSSL#test_parallel でこれを踏んで途中で止まります
$ uname -a
FreeBSD norikura.localdomain 8.2-STABLE FreeBSD 8.2-STABLE #0 r223459: Thu Jun 30 19:24:47 JST 2011 ksmakoto@norikura.localdomain:/export/obj/usr/src/sys/NORIKURA20110630 amd64
$ cat foo.rb
require "openssl"
require "socket"
GC.stress = true
tcps = nil
port = 20443
begin
tcps = TCPServer.new("127.0.0.1", port)
rescue Errno::EADDRINUSE
port += 1
retry
end
ssls = OpenSSL::SSL::SSLServer.new(tcps, OpenSSL::SSL::SSLContext.new)
ssls.start_immediately = true
Thread.new{
Thread.current.abort_on_exception = true
loop{
ssls.accept
}
}
sock = TCPSocket.new("127.0.0.1", port.to_i)
ssl = OpenSSL::SSL::SSLSocket.new(sock)
ssl.connect
Files