Skip to content

StackOverflow running Protobuf tests #3878

Open
@nirvdrum

Description

@nirvdrum

While running the Protobuf test suite in order to reproduce #3860 I sporadically would receive a StackOverflow error. This occurred while running the test suite with a debug build of the google-protobuf gem's native extension.

Reproduction:

  1. git clone https://github.com/protocolbuffers/protobuf.git
  2. cd protobuf/ruby
  3. export PROTOBUF_CONFIG=dbg
  4. bundle
  5. bundle exec rake test

Unfortunately, I'm more likely to see a segfault than I am the StackOverflow. The backtrace is too long to include in the issue so I've attached the file. Below is an excerpt.

Backtrace
[ruby] WARNING StackOverflowError
[ruby] WARNING StackOverflowError
Uncaught exception:
java.lang.StackOverflowError
        at com.oracle.truffle.nfi.backend.libffi.LibFFIContext.executeNative(com.oracle.truffle.truffle_nfi_libffi/Native Method)
        at com.oracle.truffle.nfi.backend.libffi.LibFFIContext.executeNative(com.oracle.truffle.truffle_nfi_libffi/LibFFIContext.java:373)
        at com.oracle.truffle.nfi.backend.libffi.LibFFISignature$CachedSignatureInfo.execute(com.oracle.truffle.truffle_nfi_libffi/LibFFISignature.java:322)
        at com.oracle.truffle.nfi.backend.libffi.FunctionExecuteNode$SignatureExecuteNode.execute(com.oracle.truffle.truffle_nfi_libffi/FunctionExecuteNode.java:151)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at com.oracle.truffle.nfi.backend.libffi.FunctionExecuteNode.cachedSignature(com.oracle.truffle.truffle_nfi_libffi/FunctionExecuteNode.java:80)
        at com.oracle.truffle.nfi.backend.libffi.FunctionExecuteNodeGen$Inlined.execute(com.oracle.truffle.truffle_nfi_libffi/FunctionExecuteNodeGen.java:95)
        at com.oracle.truffle.nfi.backend.libffi.LibFFISignature$Call.callGeneric(com.oracle.truffle.truffle_nfi_libffi/LibFFISignature.java:161)
        at com.oracle.truffle.nfi.backend.libffi.LibFFISignatureGen$NFIBackendSignatureLibraryExports$Cached.call(com.oracle.truffle.truffle_nfi_libffi/LibFFISignatureGen.java:239)
        at com.oracle.truffle.nfi.backend.spi.NFIBackendSignatureLibraryGen$CachedDispatch.call(com.oracle.truffle.truffle_nfi/NFIBackendSignatureLibraryGen.java:439)
        at com.oracle.truffle.nfi.CallSignatureNode$OptimizedCallSignatureNode.doCall(com.oracle.truffle.truffle_nfi/CallSignatureNode.java:208)
        at com.oracle.truffle.nfi.CallSignatureNodeFactory$OptimizedCallSignatureNodeGen.execute(com.oracle.truffle.truffle_nfi/CallSignatureNodeFactory.java:460)
        at com.oracle.truffle.nfi.CallSignatureNode$CachedCallSignatureNode.doOptimizedDirect(com.oracle.truffle.truffle_nfi/CallSignatureNode.java:89)
        at com.oracle.truffle.nfi.CallSignatureNodeFactory$CachedCallSignatureNodeGen.execute(com.oracle.truffle.truffle_nfi/CallSignatureNodeFactory.java:134)
        at com.oracle.truffle.nfi.NFISignature.call(com.oracle.truffle.truffle_nfi/NFISignature.java:103)
        at com.oracle.truffle.nfi.NFISignatureGen$SignatureLibraryExports$Cached.call(com.oracle.truffle.truffle_nfi/NFISignatureGen.java:602)
        at com.oracle.truffle.llvm.runtime.nodes.func.LLVMNativeCallUtils.callNativeFunction(org.graalvm.llvm_community/LLVMNativeCallUtils.java:53)
        at com.oracle.truffle.llvm.runtime.nodes.func.LLVMNativeDispatchNode.doGenericSingleContext(org.graalvm.llvm_community/LLVMNativeDispatchNode.java:135)
        at com.oracle.truffle.llvm.runtime.nodes.func.LLVMNativeDispatchNodeGen.executeDispatch(org.graalvm.llvm_community/LLVMNativeDispatchNodeGen.java:99)
        at com.oracle.truffle.llvm.runtime.nodes.func.LLVMDispatchNode.doNativeFunction(org.graalvm.llvm_community/LLVMDispatchNode.java:406)
        at com.oracle.truffle.llvm.runtime.nodes.func.LLVMDispatchNodeGen.executeDispatch(org.graalvm.llvm_community/LLVMDispatchNodeGen.java:292)
        at com.oracle.truffle.llvm.runtime.nodes.func.LLVMCallNode.doCall(org.graalvm.llvm_community/LLVMCallNode.java:86)
        at com.oracle.truffle.llvm.runtime.nodes.func.LLVMCallNodeGen.executeGeneric(org.graalvm.llvm_community/LLVMCallNodeGen.java:57)
        at com.oracle.truffle.llvm.runtime.nodes.api.LLVMVoidStatementNodeGen.execute(org.graalvm.llvm_community/LLVMVoidStatementNodeGen.java:30)
        at com.oracle.truffle.llvm.runtime.nodes.api.LLVMFrameNuller.doExecute(org.graalvm.llvm_community/LLVMFrameNuller.java:61)
        at com.oracle.truffle.llvm.runtime.nodes.api.LLVMFrameNullerNodeGen.execute(org.graalvm.llvm_community/LLVMFrameNullerNodeGen.java:28)
        at com.oracle.truffle.llvm.runtime.nodes.base.LLVMBasicBlockNode$InitializedBlockNode.execute(org.graalvm.llvm_community/LLVMBasicBlockNode.java:154)
        at com.oracle.truffle.llvm.runtime.nodes.control.LLVMDispatchBasicBlockNode.dispatchFromBasicBlock(org.graalvm.llvm_community/LLVMDispatchBasicBlockNode.java:117)
        at com.oracle.truffle.llvm.runtime.nodes.control.LLVMDispatchBasicBlockNode.doDispatch(org.graalvm.llvm_community/LLVMDispatchBasicBlockNode.java:88)
        at com.oracle.truffle.llvm.runtime.nodes.control.LLVMDispatchBasicBlockNodeGen.executeGeneric(org.graalvm.llvm_community/LLVMDispatchBasicBlockNodeGen.java:31)
        at com.oracle.truffle.llvm.runtime.nodes.control.LLVMFunctionRootNode.doRun(org.graalvm.llvm_community/LLVMFunctionRootNode.java:81)
        at com.oracle.truffle.llvm.runtime.nodes.control.LLVMFunctionRootNodeGen.executeGeneric(org.graalvm.llvm_community/LLVMFunctionRootNodeGen.java:32)
        at com.oracle.truffle.llvm.runtime.nodes.func.LLVMFunctionStartNode.execute(org.graalvm.llvm_community/LLVMFunctionStartNode.java:102)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:671)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at com.oracle.truffle.llvm.runtime.interop.nfi.LLVMNativeWrapper$CallbackHelperNode.doCached(org.graalvm.llvm_community/LLVMNativeWrapper.java:118)
        at com.oracle.truffle.llvm.runtime.interop.nfi.LLVMNativeWrapperFactory$CallbackHelperNodeGen.execute(org.graalvm.llvm_community/LLVMNativeWrapperFactory.java:56)
        at com.oracle.truffle.llvm.runtime.interop.nfi.LLVMNativeWrapper$Execute.doExecute(org.graalvm.llvm_community/LLVMNativeWrapper.java:82)
        at com.oracle.truffle.llvm.runtime.interop.nfi.LLVMNativeWrapperGen$InteropLibraryExports$Cached.execute(org.graalvm.llvm_community/LLVMNativeWrapperGen.java:102)
        at com.oracle.truffle.nfi.CallSignatureNode$OptimizedCallClosureNode.doCall(com.oracle.truffle.truffle_nfi/CallSignatureNode.java:262)
        at com.oracle.truffle.nfi.CallSignatureNodeFactory$OptimizedCallClosureNodeGen.execute(com.oracle.truffle.truffle_nfi/CallSignatureNodeFactory.java:582)
        at com.oracle.truffle.nfi.NFIClosure$Execute.doOptimizedDirect(com.oracle.truffle.truffle_nfi/NFIClosure.java:95)
        at com.oracle.truffle.nfi.NFIClosureGen$InteropLibraryExports$Cached.execute(com.oracle.truffle.truffle_nfi/NFIClosureGen.java:166)
        at com.oracle.truffle.nfi.backend.libffi.LibFFIClosure$CallClosureNode.doCall(com.oracle.truffle.truffle_nfi_libffi/LibFFIClosure.java:207)
        at com.oracle.truffle.nfi.backend.libffi.LibFFIClosureFactory$CallClosureNodeGen.execute(com.oracle.truffle.truffle_nfi_libffi/LibFFIClosureFactory.java:76)
        at com.oracle.truffle.nfi.backend.libffi.LibFFIClosure$VoidRetClosureRootNode.execute(com.oracle.truffle.truffle_nfi_libffi/LibFFIClosure.java:360)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedCallTarget.call(org.graalvm.truffle.runtime/OptimizedCallTarget.java:549)
        at com.oracle.truffle.nfi.backend.libffi.LibFFIContext.executeNative(com.oracle.truffle.truffle_nfi_libffi/Native Method)
        at com.oracle.truffle.nfi.backend.libffi.LibFFIContext.executeNative(com.oracle.truffle.truffle_nfi_libffi/LibFFIContext.java:373)
        at com.oracle.truffle.nfi.backend.libffi.LibFFISignature$CachedSignatureInfo.execute(com.oracle.truffle.truffle_nfi_libffi/LibFFISignature.java:322)
        at com.oracle.truffle.nfi.backend.libffi.FunctionExecuteNode$SignatureExecuteNode.execute(com.oracle.truffle.truffle_nfi_libffi/FunctionExecuteNode.java:151)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at com.oracle.truffle.nfi.backend.libffi.FunctionExecuteNode.cachedSignature(com.oracle.truffle.truffle_nfi_libffi/FunctionExecuteNode.java:80)
        at com.oracle.truffle.nfi.backend.libffi.FunctionExecuteNodeGen$Inlined.execute(com.oracle.truffle.truffle_nfi_libffi/FunctionExecuteNodeGen.java:95)
        at com.oracle.truffle.nfi.backend.libffi.LibFFISignature$Call.callLibFFI(com.oracle.truffle.truffle_nfi_libffi/LibFFISignature.java:126)
        at com.oracle.truffle.nfi.backend.libffi.LibFFISignatureGen$NFIBackendSignatureLibraryExports$Cached.call(com.oracle.truffle.truffle_nfi_libffi/LibFFISignatureGen.java:230)
        at com.oracle.truffle.nfi.backend.spi.NFIBackendSignatureLibraryGen$CachedDispatch.call(com.oracle.truffle.truffle_nfi/NFIBackendSignatureLibraryGen.java:439)
        at com.oracle.truffle.nfi.CallSignatureNode$OptimizedCallSignatureNode.doCall(com.oracle.truffle.truffle_nfi/CallSignatureNode.java:208)
        at com.oracle.truffle.nfi.CallSignatureNodeFactory$OptimizedCallSignatureNodeGen.execute(com.oracle.truffle.truffle_nfi/CallSignatureNodeFactory.java:460)
        at com.oracle.truffle.nfi.CallSignatureNode$CachedCallSignatureNode.doOptimizedDirect(com.oracle.truffle.truffle_nfi/CallSignatureNode.java:89)
        at com.oracle.truffle.nfi.CallSignatureNodeFactory$CachedCallSignatureNodeGen.execute(com.oracle.truffle.truffle_nfi/CallSignatureNodeFactory.java:134)
        at com.oracle.truffle.nfi.NFISymbol.execute(com.oracle.truffle.truffle_nfi/NFISymbol.java:86)
        at com.oracle.truffle.nfi.NFISymbolGen$InteropLibraryExports$Cached.execute(com.oracle.truffle.truffle_nfi/NFISymbolGen.java:124)
        at org.truffleruby.interop.InteropNodes.execute(org.graalvm.ruby/InteropNodes.java:88)
        at org.truffleruby.interop.InteropNodes$InteropExecuteNode.interopExecuteWithoutConversion(org.graalvm.ruby/InteropNodes.java:160)
        at org.truffleruby.interop.InteropNodesFactory$InteropExecuteNodeFactory$InteropExecuteNodeGen.execute(org.graalvm.ruby/InteropNodesFactory.java:634)
        at org.truffleruby.language.control.SequenceNode.execute(org.graalvm.ruby/SequenceNode.java:35)
        at org.truffleruby.language.RubyLambdaRootNode.execute(org.graalvm.ruby/RubyLambdaRootNode.java:84)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at org.truffleruby.language.yield.CallBlockNode.callBlockCached(org.graalvm.ruby/CallBlockNode.java:86)
        at org.truffleruby.language.yield.CallBlockNodeGen$Inlined.executeAndSpecialize(org.graalvm.ruby/CallBlockNodeGen.java:255)
        at org.truffleruby.language.yield.CallBlockNodeGen$Inlined.executeCallBlock(org.graalvm.ruby/CallBlockNodeGen.java:221)
        at org.truffleruby.core.proc.ProcNodes$CallNode.call(org.graalvm.ruby/ProcNodes.java:149)
        at org.truffleruby.core.proc.ProcNodesFactory$CallNodeFactory$CallNodeGen.executeAndSpecialize(org.graalvm.ruby/ProcNodesFactory.java:823)
        at org.truffleruby.core.proc.ProcNodesFactory$CallNodeFactory$CallNodeGen.execute(org.graalvm.ruby/ProcNodesFactory.java:814)
        at org.truffleruby.language.methods.CallInternalMethodNode.alwaysInlined(org.graalvm.ruby/CallInternalMethodNode.java:102)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(org.graalvm.ruby/CallInternalMethodNodeGen.java:250)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(org.graalvm.ruby/CallInternalMethodNodeGen.java:141)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(org.graalvm.ruby/DispatchNode.java:300)
        at org.truffleruby.language.dispatch.DispatchNodeGen.executeAndSpecialize(org.graalvm.ruby/DispatchNodeGen.java:172)
        at org.truffleruby.language.dispatch.DispatchNodeGen.execute(org.graalvm.ruby/DispatchNodeGen.java:153)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(org.graalvm.ruby/RubyCallNode.java:186)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(org.graalvm.ruby/RubyCallNode.java:138)
        at org.truffleruby.language.RubyContextSourceNode.executeVoid(org.graalvm.ruby/RubyContextSourceNode.java:23)
        at org.truffleruby.language.control.SequenceNode.execute(org.graalvm.ruby/SequenceNode.java:32)
        at org.truffleruby.language.control.UnlessNode.doUnless(org.graalvm.ruby/UnlessNode.java:36)
        at org.truffleruby.language.control.UnlessNodeGen.execute(org.graalvm.ruby/UnlessNodeGen.java:80)
        at org.truffleruby.language.control.SequenceNode.execute(org.graalvm.ruby/SequenceNode.java:35)
        at org.truffleruby.language.RubyMethodRootNode.execute(org.graalvm.ruby/RubyMethodRootNode.java:65)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:671)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(org.graalvm.ruby/CallInternalMethodNode.java:66)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(org.graalvm.ruby/CallInternalMethodNodeGen.java:190)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(org.graalvm.ruby/CallInternalMethodNodeGen.java:141)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(org.graalvm.ruby/DispatchNode.java:300)
        at org.truffleruby.language.dispatch.DispatchNodeGen.executeAndSpecialize(org.graalvm.ruby/DispatchNodeGen.java:172)
        at org.truffleruby.language.dispatch.DispatchNodeGen.execute(org.graalvm.ruby/DispatchNodeGen.java:153)
        at org.truffleruby.language.dispatch.DispatchNode.call(org.graalvm.ruby/DispatchNode.java:95)
        at org.truffleruby.core.MarkingServiceNodes$RunMarkOnExitNode.markSingleObject(org.graalvm.ruby/MarkingServiceNodes.java:93)
        at org.truffleruby.core.MarkingServiceNodesFactory$RunMarkOnExitNodeGen$Inlined.executeAndSpecialize(org.graalvm.ruby/MarkingServiceNodesFactory.java:308)
        at org.truffleruby.core.MarkingServiceNodesFactory$RunMarkOnExitNodeGen$Inlined.execute(org.graalvm.ruby/MarkingServiceNodesFactory.java:279)
        at org.truffleruby.cext.CExtNodes$CallWithCExtLockAndFrameAndUnwrapNode.callWithCExtLockAndFrame(org.graalvm.ruby/CExtNodes.java:269)
        at org.truffleruby.cext.CExtNodesFactory$CallWithCExtLockAndFrameAndUnwrapNodeFactory$CallWithCExtLockAndFrameAndUnwrapNodeGen.execute(org.graalvm.ruby/CExtNodesFactory.java:566)
        at org.truffleruby.language.control.SequenceNode.execute(org.graalvm.ruby/SequenceNode.java:35)
        at org.truffleruby.core.module.ModuleNodes$DefineMethodNode$CallMethodWithLambdaBody.execute(org.graalvm.ruby/ModuleNodes.java:1382)
        at org.truffleruby.language.RubyLambdaRootNode.execute(org.graalvm.ruby/RubyLambdaRootNode.java:84)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:671)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(org.graalvm.ruby/CallInternalMethodNode.java:66)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(org.graalvm.ruby/CallInternalMethodNodeGen.java:102)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(org.graalvm.ruby/DispatchNode.java:300)
        at org.truffleruby.language.dispatch.DispatchNodeGen.execute(org.graalvm.ruby/DispatchNodeGen.java:146)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(org.graalvm.ruby/RubyCallNode.java:186)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(org.graalvm.ruby/RubyCallNode.java:138)
        at org.truffleruby.language.control.SequenceNode.execute(org.graalvm.ruby/SequenceNode.java:35)
        at org.truffleruby.language.RubyMethodRootNode.execute(org.graalvm.ruby/RubyMethodRootNode.java:65)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:671)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(org.graalvm.ruby/CallInternalMethodNode.java:66)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(org.graalvm.ruby/CallInternalMethodNodeGen.java:102)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(org.graalvm.ruby/DispatchNode.java:300)
        at org.truffleruby.language.dispatch.DispatchNodeGen.execute(org.graalvm.ruby/DispatchNodeGen.java:146)
        at org.truffleruby.language.dispatch.DispatchNode.call(org.graalvm.ruby/DispatchNode.java:135)
        at org.truffleruby.language.RubyDynamicObject.invokeMember(org.graalvm.ruby/RubyDynamicObject.java:688)
        at org.truffleruby.language.RubyDynamicObjectGen$InteropLibraryExports$Cached.invokeMember(org.graalvm.ruby/RubyDynamicObjectGen.java:2607)
        at com.oracle.truffle.api.interop.InteropLibraryGen$CachedDispatch.invokeMember(org.graalvm.truffle/InteropLibraryGen.java:8497)
        at com.oracle.truffle.llvm.runtime.nodes.intrinsics.interop.LLVMPolyglotInvoke.doInvoke(org.graalvm.llvm_community/LLVMPolyglotInvoke.java:83)
        at com.oracle.truffle.llvm.runtime.nodes.intrinsics.interop.LLVMPolyglotInvoke.doIntrinsic(org.graalvm.llvm_community/LLVMPolyglotInvoke.java:95)
        at com.oracle.truffle.llvm.runtime.nodes.intrinsics.interop.LLVMPolyglotInvokeNodeGen.executeGeneric(org.graalvm.llvm_community/LLVMPolyglotInvokeNodeGen.java:75)
        at com.oracle.truffle.llvm.runtime.nodes.api.LLVMFrameNullerExpression.doGeneric(org.graalvm.llvm_community/LLVMFrameNullerExpression.java:68)
        at com.oracle.truffle.llvm.runtime.nodes.api.LLVMFrameNullerExpressionNodeGen.executeGeneric(org.graalvm.llvm_community/LLVMFrameNullerExpressionNodeGen.java:28)
        at com.oracle.truffle.llvm.runtime.nodes.func.LLVMCallNode.doCall(org.graalvm.llvm_community/LLVMCallNode.java:83)
        at com.oracle.truffle.llvm.runtime.nodes.func.LLVMCallNodeGen.executeGeneric(org.graalvm.llvm_community/LLVMCallNodeGen.java:57)
        at com.oracle.truffle.llvm.runtime.nodes.api.LLVMFrameNullerExpression.doGeneric(org.graalvm.llvm_community/LLVMFrameNullerExpression.java:68)
        at com.oracle.truffle.llvm.runtime.nodes.api.LLVMFrameNullerExpressionNodeGen.executeGeneric(org.graalvm.llvm_community/LLVMFrameNullerExpressionNodeGen.java:28)
        at com.oracle.truffle.llvm.runtime.nodes.vars.LLVMWriteNodeFactory$LLVMWriteI64NodeGen.execute_generic1(org.graalvm.llvm_community/LLVMWriteNodeFactory.java:554)
        at com.oracle.truffle.llvm.runtime.nodes.vars.LLVMWriteNodeFactory$LLVMWriteI64NodeGen.execute(org.graalvm.llvm_community/LLVMWriteNodeFactory.java:528)
        at com.oracle.truffle.llvm.runtime.nodes.base.LLVMBasicBlockNode$InitializedBlockNode.execute(org.graalvm.llvm_community/LLVMBasicBlockNode.java:154)
        at com.oracle.truffle.llvm.runtime.nodes.control.LLVMDispatchBasicBlockNode.dispatchFromBasicBlock(org.graalvm.llvm_community/LLVMDispatchBasicBlockNode.java:117)
        at com.oracle.truffle.llvm.runtime.nodes.control.LLVMDispatchBasicBlockNode.doDispatch(org.graalvm.llvm_community/LLVMDispatchBasicBlockNode.java:88)
        at com.oracle.truffle.llvm.runtime.nodes.control.LLVMDispatchBasicBlockNodeGen.executeGeneric(org.graalvm.llvm_community/LLVMDispatchBasicBlockNodeGen.java:31)
        at com.oracle.truffle.llvm.runtime.nodes.control.LLVMFunctionRootNode.doRun(org.graalvm.llvm_community/LLVMFunctionRootNode.java:81)
        at com.oracle.truffle.llvm.runtime.nodes.control.LLVMFunctionRootNodeGen.executeGeneric(org.graalvm.llvm_community/LLVMFunctionRootNodeGen.java:32)
        at com.oracle.truffle.llvm.runtime.nodes.func.LLVMFunctionStartNode.execute(org.graalvm.llvm_community/LLVMFunctionStartNode.java:102)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:671)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at com.oracle.truffle.llvm.runtime.interop.nfi.LLVMNativeWrapper$CallbackHelperNode.doCached(org.graalvm.llvm_community/LLVMNativeWrapper.java:118)
        at com.oracle.truffle.llvm.runtime.interop.nfi.LLVMNativeWrapperFactory$CallbackHelperNodeGen.execute(org.graalvm.llvm_community/LLVMNativeWrapperFactory.java:56)
        at com.oracle.truffle.llvm.runtime.interop.nfi.LLVMNativeWrapper$Execute.doExecute(org.graalvm.llvm_community/LLVMNativeWrapper.java:82)
        at com.oracle.truffle.llvm.runtime.interop.nfi.LLVMNativeWrapperGen$InteropLibraryExports$Cached.execute(org.graalvm.llvm_community/LLVMNativeWrapperGen.java:102)
        at com.oracle.truffle.nfi.CallSignatureNode$OptimizedCallClosureNode.doCall(com.oracle.truffle.truffle_nfi/CallSignatureNode.java:262)
        at com.oracle.truffle.nfi.CallSignatureNodeFactory$OptimizedCallClosureNodeGen.execute(com.oracle.truffle.truffle_nfi/CallSignatureNodeFactory.java:582)
        at com.oracle.truffle.nfi.NFIClosure$Execute.doOptimizedDirect(com.oracle.truffle.truffle_nfi/NFIClosure.java:95)
        at com.oracle.truffle.nfi.NFIClosureGen$InteropLibraryExports$Cached.execute(com.oracle.truffle.truffle_nfi/NFIClosureGen.java:166)
        at com.oracle.truffle.nfi.backend.panama.PanamaClosure$CallClosureNode.doCall(com.oracle.truffle.truffle_nfi_panama/PanamaClosure.java:204)
        at com.oracle.truffle.nfi.backend.panama.PanamaClosureFactory$CallClosureNodeGen.execute(com.oracle.truffle.truffle_nfi_panama/PanamaClosureFactory.java:70)
        at com.oracle.truffle.nfi.backend.panama.PanamaClosure$GenericRetClosureRootNode.execute(com.oracle.truffle.truffle_nfi_panama/PanamaClosure.java:343)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:671)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedCallTarget.call(org.graalvm.truffle.runtime/OptimizedCallTarget.java:549)
        at com.oracle.truffle.nfi.backend.libffi.LibFFIContext.executeNative(com.oracle.truffle.truffle_nfi_libffi/Native Method)
        at com.oracle.truffle.nfi.backend.libffi.LibFFIContext.executeNative(com.oracle.truffle.truffle_nfi_libffi/LibFFIContext.java:373)
        at com.oracle.truffle.nfi.backend.libffi.LibFFISignature$CachedSignatureInfo.execute(com.oracle.truffle.truffle_nfi_libffi/LibFFISignature.java:322)
        at com.oracle.truffle.nfi.backend.libffi.FunctionExecuteNode$SignatureExecuteNode.execute(com.oracle.truffle.truffle_nfi_libffi/FunctionExecuteNode.java:151)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:671)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at com.oracle.truffle.nfi.backend.libffi.FunctionExecuteNode.cachedSignature(com.oracle.truffle.truffle_nfi_libffi/FunctionExecuteNode.java:80)
        at com.oracle.truffle.nfi.backend.libffi.FunctionExecuteNodeGen$Inlined.execute(com.oracle.truffle.truffle_nfi_libffi/FunctionExecuteNodeGen.java:95)
        at com.oracle.truffle.nfi.backend.libffi.LibFFISignature$Call.callLibFFI(com.oracle.truffle.truffle_nfi_libffi/LibFFISignature.java:126)
        at com.oracle.truffle.nfi.backend.libffi.LibFFISignatureGen$NFIBackendSignatureLibraryExports$Cached.call(com.oracle.truffle.truffle_nfi_libffi/LibFFISignatureGen.java:230)
        at com.oracle.truffle.nfi.backend.spi.NFIBackendSignatureLibraryGen$CachedDispatch.call(com.oracle.truffle.truffle_nfi/NFIBackendSignatureLibraryGen.java:439)
        at com.oracle.truffle.nfi.CallSignatureNode$OptimizedCallSignatureNode.doCall(com.oracle.truffle.truffle_nfi/CallSignatureNode.java:208)
        at com.oracle.truffle.nfi.CallSignatureNodeFactory$OptimizedCallSignatureNodeGen.execute(com.oracle.truffle.truffle_nfi/CallSignatureNodeFactory.java:460)
        at com.oracle.truffle.nfi.CallSignatureNode$CachedCallSignatureNode.doOptimizedDirect(com.oracle.truffle.truffle_nfi/CallSignatureNode.java:89)
        at com.oracle.truffle.nfi.CallSignatureNodeFactory$CachedCallSignatureNodeGen.execute(com.oracle.truffle.truffle_nfi/CallSignatureNodeFactory.java:134)
        at com.oracle.truffle.nfi.NFISymbol.execute(com.oracle.truffle.truffle_nfi/NFISymbol.java:86)
        at com.oracle.truffle.nfi.NFISymbolGen$InteropLibraryExports$Cached.execute(com.oracle.truffle.truffle_nfi/NFISymbolGen.java:124)
        at com.oracle.truffle.api.interop.InteropLibraryGen$CachedDispatch.execute(org.graalvm.truffle/InteropLibraryGen.java:7900)
        at org.truffleruby.interop.InteropNodes.execute(org.graalvm.ruby/InteropNodes.java:88)
        at org.truffleruby.cext.CExtNodes$CallWithCExtLockAndFrameAndUnwrapNode.callWithCExtLockAndFrame(org.graalvm.ruby/CExtNodes.java:267)
        at org.truffleruby.cext.CExtNodesFactory$CallWithCExtLockAndFrameAndUnwrapNodeFactory$CallWithCExtLockAndFrameAndUnwrapNodeGen.execute(org.graalvm.ruby/CExtNodesFactory.java:566)
        at org.truffleruby.language.control.SequenceNode.execute(org.graalvm.ruby/SequenceNode.java:35)
        at org.truffleruby.core.module.ModuleNodes$DefineMethodNode$CallMethodWithLambdaBody.execute(org.graalvm.ruby/ModuleNodes.java:1382)
        at org.truffleruby.language.RubyLambdaRootNode.execute(org.graalvm.ruby/RubyLambdaRootNode.java:84)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:671)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(org.graalvm.ruby/CallInternalMethodNode.java:66)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(org.graalvm.ruby/CallInternalMethodNodeGen.java:102)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(org.graalvm.ruby/DispatchNode.java:300)
        at org.truffleruby.language.dispatch.DispatchNodeGen.execute(org.graalvm.ruby/

<... Cut due to length. See the attached log for the full trac. ...>

        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:671)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at com.oracle.truffle.nfi.backend.libffi.FunctionExecuteNode.cachedSignature(com.oracle.truffle.truffle_nfi_libffi/FunctionExecuteNode.java:80)
        at com.oracle.truffle.nfi.backend.libffi.FunctionExecuteNodeGen$Inlined.execute(com.oracle.truffle.truffle_nfi_libffi/FunctionExecuteNodeGen.java:95)
        at com.oracle.truffle.nfi.backend.libffi.LibFFISignature$Call.callLibFFI(com.oracle.truffle.truffle_nfi_libffi/LibFFISignature.java:126)
        at com.oracle.truffle.nfi.backend.libffi.LibFFISignatureGen$NFIBackendSignatureLibraryExports$Cached.call(com.oracle.truffle.truffle_nfi_libffi/LibFFISignatureGen.java:230)
        at com.oracle.truffle.nfi.backend.spi.NFIBackendSignatureLibraryGen$CachedDispatch.call(com.oracle.truffle.truffle_nfi/NFIBackendSignatureLibraryGen.java:439)
        at com.oracle.truffle.nfi.CallSignatureNode$OptimizedCallSignatureNode.doCall(com.oracle.truffle.truffle_nfi/CallSignatureNode.java:208)
        at com.oracle.truffle.nfi.CallSignatureNodeFactory$OptimizedCallSignatureNodeGen.execute(com.oracle.truffle.truffle_nfi/CallSignatureNodeFactory.java:460)
        at com.oracle.truffle.nfi.CallSignatureNode$CachedCallSignatureNode.doOptimizedDirect(com.oracle.truffle.truffle_nfi/CallSignatureNode.java:89)
        at com.oracle.truffle.nfi.CallSignatureNodeFactory$CachedCallSignatureNodeGen.execute(com.oracle.truffle.truffle_nfi/CallSignatureNodeFactory.java:134)
        at com.oracle.truffle.nfi.NFISymbol.execute(com.oracle.truffle.truffle_nfi/NFISymbol.java:86)
        at com.oracle.truffle.nfi.NFISymbolGen$InteropLibraryExports$Cached.execute(com.oracle.truffle.truffle_nfi/NFISymbolGen.java:124)
        at com.oracle.truffle.api.interop.InteropLibraryGen$CachedDispatch.execute(org.graalvm.truffle/InteropLibraryGen.java:7900)
        at org.truffleruby.interop.InteropNodes.execute(org.graalvm.ruby/InteropNodes.java:88)
        at org.truffleruby.cext.CExtNodes$CallWithCExtLockAndFrameAndUnwrapNode.callWithCExtLockAndFrame(org.graalvm.ruby/CExtNodes.java:267)
        at org.truffleruby.cext.CExtNodesFactory$CallWithCExtLockAndFrameAndUnwrapNodeFactory$CallWithCExtLockAndFrameAndUnwrapNodeGen.execute(org.graalvm.ruby/CExtNodesFactory.java:566)
        at org.truffleruby.language.control.SequenceNode.execute(org.graalvm.ruby/SequenceNode.java:35)
        at org.truffleruby.core.module.ModuleNodes$DefineMethodNode$CallMethodWithLambdaBody.execute(org.graalvm.ruby/ModuleNodes.java:1382)
        at org.truffleruby.language.RubyLambdaRootNode.execute(org.graalvm.ruby/RubyLambdaRootNode.java:84)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:671)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(org.graalvm.ruby/CallInternalMethodNode.java:66)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(org.graalvm.ruby/CallInternalMethodNodeGen.java:102)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(org.graalvm.ruby/DispatchNode.java:300)
        at org.truffleruby.language.dispatch.DispatchNodeGen.execute(org.graalvm.ruby/DispatchNodeGen.java:146)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(org.graalvm.ruby/RubyCallNode.java:186)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(org.graalvm.ruby/RubyCallNode.java:138)
        at org.truffleruby.language.control.SequenceNode.execute(org.graalvm.ruby/SequenceNode.java:35)
        at org.truffleruby.language.RubyMethodRootNode.execute(org.graalvm.ruby/RubyMethodRootNode.java:65)
        at com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(org.graalvm.truffle.runtime/OptimizedCallTarget.java:823)
        at com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(org.graalvm.truffle.runtime/OptimizedCallTarget.java:747)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(org.graalvm.truffle.runtime/OptimizedCallTarget.java:671)
        at com.oracle.truffle.runtime.OptimizedCallTarget.doInvoke(org.graalvm.truffle.runtime/OptimizedCallTarget.java:655)
        at com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(org.graalvm.truffle.runtime/OptimizedCallTarget.java:603)
        at com.oracle.truffle.runtime.OptimizedDirectCallNode.call(org.graalvm.truffle.runtime/OptimizedDirectCallNode.java:94)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(org.graalvm.ruby/CallInternalMethodNode.java:66)
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (upcallLinker.cpp:137), pid=47338, tid=2307
#  fatal error: Unrecoverable uncaught exception encountered
#
# JRE version: OpenJDK Runtime Environment GraalVM CE 25-dev+22.1 (25.0+22) (build 25+22-jvmci-b01)
# Java VM: OpenJDK 64-Bit Server VM GraalVM CE 25-dev+22.1 (25+22-jvmci-b01, mixed mode, sharing, tiered, jvmci, jvmci compiler, compressed oops, compressed class ptrs, g1 gc, bsd-aarch64)
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /Users/nirvdrum/dev/workspaces/protobuf/ruby/hs_err_pid47338.log
[7.561s][warning][os] Loading hsdis library failed
#
# If you would like to submit a bug report, please visit:
#   https://github.com/oracle/graal/issues
#
rake aborted!
SignalException: SIGABRT (SignalException)

[stackoverflow.log](https://github.com/user-attachments/files/20403202/stackoverflow.log)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions