-
Notifications
You must be signed in to change notification settings - Fork 171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
method `session_new_cb' called on hidden T_DATA object (NotImplementedError) #464
Comments
I tried to reproduce with So maybe it's a red herring and this bug has nothing to do with GC compaction? |
I believe this is coming from openssl/ext/openssl/ossl_ssl.c Line 398 in e3a4093
The receiver is an Unfortunately I know little about the compactor. Do we need to mark/pin the |
That was just my assumption as I did deal with several compactor issues in native gems, and they usually revolve around methods being called on random objects, this one might be entirely different. |
This causes segfault, so this indeed seems to be the root cause. require "socket"
require "openssl"
p1, p2 = UNIXSocket.pair
ctx = OpenSSL::SSL::SSLContext.new.tap { |x| x.security_level = 0; x.ciphers = "aNULL" }
s1 = OpenSSL::SSL::SSLSocket.new(p1, ctx)
s2 = OpenSSL::SSL::SSLSocket.new(p2, ctx)
GC.verify_compaction_references
[
Thread.new { s1.accept },
Thread.new { s2.connect },
].map(&:join) |
Yes, @XrXr came to the same conclusion: XrXr@ad02bb9 |
#465 should fix this by adding |
openssl 2.1.3 and 2.2.1 have been released with the fix. Thanks for reporting this issue! |
A weird error that happened once in production.
Ruby
3.0.2 (linux)
Full backtrace:
We do call
GC.compact
once, so maybe there's a static VALUE reference that isn't properly declared to the GC?The text was updated successfully, but these errors were encountered: