Closed ntkme closed 3 months ago
So far this happened twice on Github Actions x86_64 macOS runner. I have tired to reproduce this locally on arm64 macOS, and was not able to reproduce after running for a full day. I guess this issue might have to do with specific architecture and how cext was compiled on that architecture.
I assume tag v26.0 is the same as the gem 4.26.0?
This is the Init_
function of protobuf: https://github.com/protocolbuffers/protobuf/blob/v26.0/ruby/ext/google/protobuf_c/protobuf.c#L336-L356
I don't see an immediate usage of Float or not-fixnum-long in there, so it doesn't seem to be the same cause as #3478.
However the fact it happens in resolve_registered_addresses
makes me think it might be related, and in fact the first change in lib/truffle/truffle/cext.rb
of https://github.com/oracle/truffleruby/commit/f40067b3c7857a2a0377d42b2e3fa540006f2b1a#diff-f48865e98d79bb21eb524e1ff1d15b468fa1622fa9b65d4b83471e1d4b8a9486 might fix this.
Specifically on line 222 the comment explains we now resolve while we have all preserved objects which should be safer, before I think some handles could possibly GC in between.
So this might be solved on truffleruby master.
I assume tag v26.0 is the same as the gem 4.26.0?
Yes, more or less the same thing. 26.0
is the protoc
compiler version, 4.26.0
is the ruby gem version.
Seems to be fixed by truffleruby-24.0.1. Closing for now, and will reopen if reproduced again.
This is happening extremely rarely when loading
google-protobuf-4.26.0
ontruffleruby+graalvm-24.0.0
.What's interesting is that it is throwing from just loading the cext with
require 'google/protobuf'
: https://github.com/protocolbuffers/protobuf/blob/v26.0/ruby/lib/google/protobuf_native.rb#L15