Skip to content
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

Concurrent Hash access in fluent-plugin-kubernetes_metadata_filter and kubeclient #2763

Open
rbjorklin opened this issue Oct 12, 2022 · 2 comments

Comments

@rbjorklin
Copy link

rbjorklin commented Oct 12, 2022

Trying to run Fluentd with the fluent-plugin-kubernetes_metadata_filter plugin. Using the ghcr.io/flavorjones/truffleruby:22.2.0 image.

EDIT: I also tried with ghcr.io/flavorjones/truffleruby:nightly and saw the same issue.

Full stacktrace

2022-10-12 19:44:09 +0000 [info]: parsing config file is succeeded path="/etc/fluent/fluent.conf"
2022-10-12 19:44:10 +0000 [info]: gem 'fluentd' version '1.15.2'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-concat' version '2.5.0'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-detect-exceptions' version '0.0.14'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-dynamic-filter' version '0.0.1'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-elasticsearch' version '3.8.0'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-flatten-hash' version '0.5.1'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-k8s-concat' version '0.0.2'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-kafka' version '0.18.1'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-kubernetes_metadata_filter' version '3.1.2'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-multi-format-parser' version '1.0.0'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-prometheus' version '2.0.3'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-remote_syslog' version '1.1.0'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-rewrite-tag-filter' version '2.4.0'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-systemd' version '1.0.5'
2022-10-12 19:44:10 +0000 [info]: gem 'fluent-plugin-throttle' version '0.0.5'
2022-10-12 19:44:16 +0000 [info]: adding rewrite_tag_filter rule: kubernetes_annotations_log_drop [#, /^true$/, "", "drop.${tag}", nil]
2022-10-12 19:44:16 +0000 [info]: adding rewrite_tag_filter rule: kubernetes_annotations_multiline_log [#, /.+/, "", "multiline.${tag}", nil]
2022-10-12 19:44:16 +0000 [info]: adding rewrite_tag_filter rule: log [#, /.+/, "", "singleline.${tag}", nil]
2022-10-12 19:44:17 +0000 [info]: using configuration file:

2022-10-12 19:44:17 +0000 [info]: starting fluentd-1.15.2 pid=1 ruby="3.0.3"
2022-10-12 19:44:18 +0000 [info]: spawn command to main:  cmdline=["/usr/local/bin/truffleruby", "-Eascii-8bit:ascii-8bit", "/usr/local/bundle/bin/fluentd", "--under-supervisor"]
2022-10-12 19:44:24 +0000 [info]: adding match in @FLUENT_LOG pattern="fluent.*" type="null"
2022-10-12 19:44:24 +0000 [info]: adding filter in @LOGS pattern="**" type="prometheus"
2022-10-12 19:44:24 +0000 [info]: adding filter in @LOGS pattern="**" type="record_transformer"
2022-10-12 19:44:24 +0000 [info]: adding match in @LOGS pattern="**" type="copy"
2022-10-12 19:44:25 +0000 [info]: adding filter pattern="kubernetes.**" type="kubernetes_metadata"
2022-10-12 19:44:30 +0000 [info]: adding filter pattern="kubernetes.**" type="flatten_hash"
2022-10-12 19:44:30 +0000 [info]: adding filter pattern="kubernetes.**" type="prometheus"
2022-10-12 19:44:30 +0000 [info]: adding filter pattern="kubernetes.**" type="concat"
java.lang.RuntimeException: Ruby Thread id=86 from (unavailable) terminated with internal error:
        at org.truffleruby.core.thread.ThreadManager.printInternalError(ThreadManager.java:337)
        at org.truffleruby.core.thread.ThreadManager.threadMain(ThreadManager.java:325)
        at org.truffleruby.core.thread.ThreadManager.lambda$initialize$5(ThreadManager.java:293)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(PolyglotThread.java:99)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(PolyglotThread.java:130)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(PolyglotThread.java:121)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callIndirect(OptimizedCallTarget.java:473)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:454)
        at com.oracle.truffle.polyglot.PolyglotThread.run(PolyglotThread.java:95)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:705)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)
Caused by: java.lang.NullPointerException
        at org.truffleruby.core.hash.library.PackedHashStoreLibrary.getHashed(PackedHashStoreLibrary.java:75)
        at org.truffleruby.core.hash.library.PackedHashStoreLibrary$Set.set(PackedHashStoreLibrary.java:207)
        at org.truffleruby.core.hash.library.PackedHashStoreLibraryGen$HashStoreLibraryExports$Cached.set(PackedHashStoreLibraryGen.java:107)
        at org.truffleruby.core.hash.HashNodes$SetIndexNode.set(HashNodes.java:238)
        at org.truffleruby.core.hash.HashNodesFactory$SetIndexNodeFactory$SetIndexNodeGen.execute(HashNodesFactory.java:981)
        at org.truffleruby.language.RubyCoreMethodRootNode.execute(RubyCoreMethodRootNode.java:48)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:54)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.control.IfNode.execute(IfNode.java:39)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyProcRootNode.execute(RubyProcRootNode.java:64)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.yield.CallBlockNode.callBlockCached(CallBlockNode.java:75)
        at org.truffleruby.language.yield.CallBlockNodeGen.executeCallBlock(CallBlockNodeGen.java:44)
        at org.truffleruby.language.yield.CallBlockNode.yield(CallBlockNode.java:50)
        at org.truffleruby.builtins.YieldingCoreMethodNode.callBlock(YieldingCoreMethodNode.java:21)
        at org.truffleruby.core.array.ArrayNodes$EachNode.accept(ArrayNodes.java:847)
        at org.truffleruby.core.array.ArrayEachIteratorNode.iterateMany(ArrayEachIteratorNode.java:58)
        at org.truffleruby.core.array.ArrayEachIteratorNodeGen.executeAndSpecialize(ArrayEachIteratorNodeGen.java:114)
        at org.truffleruby.core.array.ArrayEachIteratorNodeGen.execute(ArrayEachIteratorNodeGen.java:57)
        at org.truffleruby.core.array.ArrayNodes$EachNode.each(ArrayNodes.java:842)
        at org.truffleruby.core.array.ArrayNodesFactory$EachNodeFactory$EachNodeGen.executeAndSpecialize(ArrayNodesFactory.java:3794)
        at org.truffleruby.core.array.ArrayNodesFactory$EachNodeFactory$EachNodeGen.execute(ArrayNodesFactory.java:3777)
        at org.truffleruby.builtins.EnumeratorSizeNode.execute(EnumeratorSizeNode.java:56)
        at org.truffleruby.language.RubyCoreMethodRootNode.execute(RubyCoreMethodRootNode.java:48)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.control.FrameOnStackNode.execute(FrameOnStackNode.java:34)
        at org.truffleruby.language.methods.CatchBreakNode.execute(CatchBreakNode.java:41)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.control.IfElseNode.execute(IfElseNode.java:43)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.DispatchNode.callMethodMissing(DispatchNode.java:329)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:309)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.locals.WriteLocalVariableNode.execute(WriteLocalVariableNode.java:28)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.exceptions.TryNode.execute(TryNode.java:66)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.locals.WriteLocalVariableNode.execute(WriteLocalVariableNode.java:28)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:280)
        at org.truffleruby.language.methods.SymbolProcNode.execute(SymbolProcNode.java:37)
        at org.truffleruby.language.RubyLambdaRootNode.execute(RubyLambdaRootNode.java:84)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callIndirect(OptimizedCallTarget.java:473)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:454)
        at org.truffleruby.core.proc.ProcOperations.rootCall(ProcOperations.java:54)
        at org.truffleruby.core.thread.ThreadNodes$ThreadInitializeNode.lambda$init$0(ThreadNodes.java:440)
        at org.truffleruby.core.thread.ThreadManager.threadMain(ThreadManager.java:308)
        ... 17 more
Caused by: Attached Guest Language Frames (11)
java.lang.RuntimeException: Ruby Thread id=85 from (unavailable) terminated with internal error:
        at org.truffleruby.core.thread.ThreadManager.printInternalError(ThreadManager.java:337)
        at org.truffleruby.core.thread.ThreadManager.threadMain(ThreadManager.java:325)
        at org.truffleruby.core.thread.ThreadManager.lambda$initialize$5(ThreadManager.java:293)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(PolyglotThread.java:99)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(PolyglotThread.java:130)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(PolyglotThread.java:121)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callIndirect(OptimizedCallTarget.java:473)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:454)
        at com.oracle.truffle.polyglot.PolyglotThread.run(PolyglotThread.java:95)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:705)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)
Caused by: java.lang.NullPointerException
        at org.truffleruby.core.hash.library.PackedHashStoreLibrary.getHashed(PackedHashStoreLibrary.java:75)
        at org.truffleruby.core.hash.library.PackedHashStoreLibrary$Set.set(PackedHashStoreLibrary.java:207)
        at org.truffleruby.core.hash.library.PackedHashStoreLibraryGen$HashStoreLibraryExports$Cached.set(PackedHashStoreLibraryGen.java:107)
        at org.truffleruby.core.hash.HashNodes$SetIndexNode.set(HashNodes.java:238)
        at org.truffleruby.core.hash.HashNodesFactory$SetIndexNodeFactory$SetIndexNodeGen.execute(HashNodesFactory.java:981)
        at org.truffleruby.language.RubyCoreMethodRootNode.execute(RubyCoreMethodRootNode.java:48)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:54)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.control.IfNode.execute(IfNode.java:39)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyProcRootNode.execute(RubyProcRootNode.java:64)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.yield.CallBlockNode.callBlockCached(CallBlockNode.java:75)
        at org.truffleruby.language.yield.CallBlockNodeGen.executeCallBlock(CallBlockNodeGen.java:44)
        at org.truffleruby.language.yield.CallBlockNode.yield(CallBlockNode.java:50)
        at org.truffleruby.builtins.YieldingCoreMethodNode.callBlock(YieldingCoreMethodNode.java:21)
        at org.truffleruby.core.array.ArrayNodes$EachNode.accept(ArrayNodes.java:847)
        at org.truffleruby.core.array.ArrayEachIteratorNode.iterateMany(ArrayEachIteratorNode.java:58)
        at org.truffleruby.core.array.ArrayEachIteratorNodeGen.executeAndSpecialize(ArrayEachIteratorNodeGen.java:114)
        at org.truffleruby.core.array.ArrayEachIteratorNodeGen.execute(ArrayEachIteratorNodeGen.java:57)
        at org.truffleruby.core.array.ArrayNodes$EachNode.each(ArrayNodes.java:842)
        at org.truffleruby.core.array.ArrayNodesFactory$EachNodeFactory$EachNodeGen.execute(ArrayNodesFactory.java:3773)
        at org.truffleruby.builtins.EnumeratorSizeNode.execute(EnumeratorSizeNode.java:56)
        at org.truffleruby.language.RubyCoreMethodRootNode.execute(RubyCoreMethodRootNode.java:48)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:54)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.control.FrameOnStackNode.execute(FrameOnStackNode.java:34)
        at org.truffleruby.language.methods.CatchBreakNode.execute(CatchBreakNode.java:41)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.control.IfElseNode.execute(IfElseNode.java:43)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.DispatchNode.callMethodMissing(DispatchNode.java:329)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:309)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.locals.WriteLocalVariableNode.execute(WriteLocalVariableNode.java:28)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.control.IfElseNode.execute(IfElseNode.java:45)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.exceptions.TryNode.execute(TryNode.java:66)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.locals.WriteLocalVariableNode.execute(WriteLocalVariableNode.java:28)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:280)
        at org.truffleruby.language.methods.SymbolProcNode.execute(SymbolProcNode.java:37)
        at org.truffleruby.language.RubyLambdaRootNode.execute(RubyLambdaRootNode.java:84)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callIndirect(OptimizedCallTarget.java:473)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:454)
        at org.truffleruby.core.proc.ProcOperations.rootCall(ProcOperations.java:54)
        at org.truffleruby.core.thread.ThreadNodes$ThreadInitializeNode.lambda$init$0(ThreadNodes.java:440)
        at org.truffleruby.core.thread.ThreadManager.threadMain(ThreadManager.java:308)
        ... 17 more
Caused by: Attached Guest Language Frames (11)

truffleruby: an internal exception escaped out of the interpreter,
please report it to https://github.com/oracle/truffleruby/issues.

Ruby Thread id=86 from (unavailable) terminated with internal error: (java.lang.RuntimeException)
        from org.truffleruby.core.thread.ThreadManager.printInternalError(ThreadManager.java:337)
        from org.truffleruby.core.thread.ThreadManager.threadMain(ThreadManager.java:325)
        from org.truffleruby.core.thread.ThreadManager.lambda$initialize$5(ThreadManager.java:293)
        from java.lang.Thread.run(Thread.java:833)
        from com.oracle.truffle.polyglot.PolyglotThread.access$001(PolyglotThread.java:53)
        from com.oracle.truffle.polyglot.PolyglotThread$1.execute(PolyglotThread.java:99)
        from com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(PolyglotThread.java:130)
        from com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(PolyglotThread.java:121)
/usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:596:in `[]='
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:596:in `block in load_entities'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:588:in `each'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:588:in `load_entities'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:134:in `discover'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:100:in `method_missing'
        from /usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb:128:in `get_namespaces_and_start_watcher'
        from /usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb:111:in `start_namespace_watch'
        from /usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb:32:in `set_up_namespace_thread'
        from (unavailable):1:in `set_up_namespace_thread'
Caused by:
<no message> (java.lang.NullPointerException)
        from org.truffleruby.core.hash.library.PackedHashStoreLibrary.getHashed(PackedHashStoreLibrary.java:75)
        from org.truffleruby.core.hash.library.PackedHashStoreLibrary$Set.set(PackedHashStoreLibrary.java:207)
        from org.truffleruby.core.hash.library.PackedHashStoreLibraryGen$HashStoreLibraryExports$Cached.set(PackedHashStoreLibraryGen.java:107)
        from org.truffleruby.core.hash.HashNodes$SetIndexNode.set(HashNodes.java:238)
        from org.truffleruby.core.hash.HashNodesFactory$SetIndexNodeFactory$SetIndexNodeGen.execute(HashNodesFactory.java:981)
        from org.truffleruby.language.RubyCoreMethodRootNode.execute(RubyCoreMethodRootNode.java:48)
/usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:596:in `[]='
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:596:in `block in load_entities'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:588:in `each'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:588:in `load_entities'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:134:in `discover'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:100:in `method_missing'
        from /usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb:128:in `get_namespaces_and_start_watcher'
        from /usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb:111:in `start_namespace_watch'
        from /usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb:32:in `set_up_namespace_thread'
        from (unavailable):1:in `set_up_namespace_thread'

@rbjorklin
Copy link
Author

The rest of the stacktrace:

Full stacktrace

truffleruby: an exception escaped out of the interpreter - this is an implementation bug
org.graalvm.polyglot.PolyglotException: java.lang.RuntimeException: Ruby Thread id=85 from (unavailable) terminated with internal error:
        at org.truffleruby.core.thread.ThreadManager.printInternalError(ThreadManager.java:337)
        at org.truffleruby.core.thread.ThreadManager.threadMain(ThreadManager.java:325)
        at org.truffleruby.core.thread.ThreadManager.lambda$initialize$5(ThreadManager.java:293)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(PolyglotThread.java:99)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(PolyglotThread.java:130)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(PolyglotThread.java:121)
        at  Hash#[]=(Unknown)
        at  block in Kubeclient::ClientMixin#load_entities(usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:596:22250-22309)
        at  Array#each((core):1:0)
        at  Kubeclient::ClientMixin#load_entities(usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:588:21717-21768)
        at  Kubeclient::ClientMixin#discover(usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:134:3750-3768)
        at  Kubeclient::ClientMixin#method_missing(usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:100:2882-2897)
        at  KubernetesMetadata::WatchPods#get_pods_and_start_watcher(usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_pods.rb:135:5903-5942)
        at  KubernetesMetadata::WatchPods#start_pod_watch(usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_pods.rb:112:5015-5046)
        at  KubernetesMetadata::WatchPods#set_up_pod_thread(usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_pods.rb:32:1126-1160)
        at  &:set_up_pod_thread((unavailable):1:0)
Original Internal Error:
java.lang.RuntimeException: Ruby Thread id=85 from (unavailable) terminated with internal error:
        at org.truffleruby.core.thread.ThreadManager.printInternalError(ThreadManager.java:337)
        at org.truffleruby.core.thread.ThreadManager.threadMain(ThreadManager.java:325)
        at org.truffleruby.core.thread.ThreadManager.lambda$initialize$5(ThreadManager.java:293)
        at java.lang.Thread.run(Thread.java:833)
        at com.oracle.truffle.polyglot.PolyglotThread.access$001(PolyglotThread.java:53)
        at com.oracle.truffle.polyglot.PolyglotThread$1.execute(PolyglotThread.java:99)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(PolyglotThread.java:130)
        at com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(PolyglotThread.java:121)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callIndirect(OptimizedCallTarget.java:473)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:454)
        at com.oracle.truffle.polyglot.PolyglotThread.run(PolyglotThread.java:95)
        at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:705)
        at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)
Caused by: java.lang.NullPointerException
        at org.truffleruby.core.hash.library.PackedHashStoreLibrary.getHashed(PackedHashStoreLibrary.java:75)
        at org.truffleruby.core.hash.library.PackedHashStoreLibrary$Set.set(PackedHashStoreLibrary.java:207)
        at org.truffleruby.core.hash.library.PackedHashStoreLibraryGen$HashStoreLibraryExports$Cached.set(PackedHashStoreLibraryGen.java:107)
        at org.truffleruby.core.hash.HashNodes$SetIndexNode.set(HashNodes.java:238)
        at org.truffleruby.core.hash.HashNodesFactory$SetIndexNodeFactory$SetIndexNodeGen.execute(HashNodesFactory.java:981)
        at org.truffleruby.language.RubyCoreMethodRootNode.execute(RubyCoreMethodRootNode.java:48)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:54)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.control.IfNode.execute(IfNode.java:39)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyProcRootNode.execute(RubyProcRootNode.java:64)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.yield.CallBlockNode.callBlockCached(CallBlockNode.java:75)
        at org.truffleruby.language.yield.CallBlockNodeGen.executeCallBlock(CallBlockNodeGen.java:44)
        at org.truffleruby.language.yield.CallBlockNode.yield(CallBlockNode.java:50)
        at org.truffleruby.builtins.YieldingCoreMethodNode.callBlock(YieldingCoreMethodNode.java:21)
        at org.truffleruby.core.array.ArrayNodes$EachNode.accept(ArrayNodes.java:847)
        at org.truffleruby.core.array.ArrayEachIteratorNode.iterateMany(ArrayEachIteratorNode.java:58)
        at org.truffleruby.core.array.ArrayEachIteratorNodeGen.executeAndSpecialize(ArrayEachIteratorNodeGen.java:114)
        at org.truffleruby.core.array.ArrayEachIteratorNodeGen.execute(ArrayEachIteratorNodeGen.java:57)
        at org.truffleruby.core.array.ArrayNodes$EachNode.each(ArrayNodes.java:842)
        at org.truffleruby.core.array.ArrayNodesFactory$EachNodeFactory$EachNodeGen.execute(ArrayNodesFactory.java:3773)
        at org.truffleruby.builtins.EnumeratorSizeNode.execute(EnumeratorSizeNode.java:56)
        at org.truffleruby.language.RubyCoreMethodRootNode.execute(RubyCoreMethodRootNode.java:48)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:54)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.control.FrameOnStackNode.execute(FrameOnStackNode.java:34)
        at org.truffleruby.language.methods.CatchBreakNode.execute(CatchBreakNode.java:41)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.control.IfElseNode.execute(IfElseNode.java:43)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.DispatchNode.callMethodMissing(DispatchNode.java:329)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:309)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.locals.WriteLocalVariableNode.execute(WriteLocalVariableNode.java:28)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.control.IfElseNode.execute(IfElseNode.java:45)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.exceptions.TryNode.execute(TryNode.java:66)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:37)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.RubyCallNode.doCall(RubyCallNode.java:152)
        at org.truffleruby.language.dispatch.RubyCallNode.execute(RubyCallNode.java:109)
        at org.truffleruby.language.locals.WriteLocalVariableNode.execute(WriteLocalVariableNode.java:28)
        at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:63)
        at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:34)
        at org.truffleruby.language.RubyMethodRootNode.execute(RubyMethodRootNode.java:65)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)
        at org.truffleruby.language.methods.CallInternalMethodNode.callCached(CallInternalMethodNode.java:70)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.executeAndSpecialize(CallInternalMethodNodeGen.java:142)
        at org.truffleruby.language.methods.CallInternalMethodNodeGen.execute(CallInternalMethodNodeGen.java:87)
        at org.truffleruby.language.dispatch.DispatchNode.dispatchInternal(DispatchNode.java:318)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:285)
        at org.truffleruby.language.dispatch.DispatchNode.dispatch(DispatchNode.java:280)
        at org.truffleruby.language.methods.SymbolProcNode.execute(SymbolProcNode.java:37)
        at org.truffleruby.language.RubyLambdaRootNode.execute(RubyLambdaRootNode.java:84)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callIndirect(OptimizedCallTarget.java:473)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:454)
        at org.truffleruby.core.proc.ProcOperations.rootCall(ProcOperations.java:54)
        at org.truffleruby.core.thread.ThreadNodes$ThreadInitializeNode.lambda$init$0(ThreadNodes.java:440)
        at org.truffleruby.core.thread.ThreadManager.threadMain(ThreadManager.java:308)
        ... 17 more
Caused by: Attached Guest Language Frames (11)
2022-10-12 19:44:30 +0000 [error]: Worker 0 finished unexpectedly with status 1

@eregon
Copy link
Member

eregon commented Oct 13, 2022

Thank you for the report.

The relevant part of the Java stacktrace:

Caused by: java.lang.NullPointerException
        at org.truffleruby.core.hash.library.PackedHashStoreLibrary.getHashed(PackedHashStoreLibrary.java:75)
        at org.truffleruby.core.hash.library.PackedHashStoreLibrary$Set.set(PackedHashStoreLibrary.java:207)
        at org.truffleruby.core.hash.library.PackedHashStoreLibraryGen$HashStoreLibraryExports$Cached.set(PackedHashStoreLibraryGen.java:107)
        at org.truffleruby.core.hash.HashNodes$SetIndexNode.set(HashNodes.java:238)
        at org.truffleruby.core.hash.HashNodesFactory$SetIndexNodeFactory$SetIndexNodeGen.execute(HashNodesFactory.java:981)
        at org.truffleruby.language.RubyCoreMethodRootNode.execute(RubyCoreMethodRootNode.java:48)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:656)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:628)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:561)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:115)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:194)
        at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:97)
        at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:491)
        at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:68)

The most likely cause of that is 2+ threads are accessing the same Hash concurrently and at least one of them is mutating (probably both mutating here).

The Ruby backtrace is:

/usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:596:in `[]='
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:596:in `block in load_entities'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:588:in `each'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:588:in `load_entities'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:134:in `discover'
        from /usr/local/bundle/gems/kubeclient-4.10.1/lib/kubeclient/common.rb:100:in `method_missing'
        from /usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb:128:in `get_namespaces_and_start_watcher'
        from /usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb:111:in `start_namespace_watch'
        from /usr/local/bundle/gems/fluent-plugin-kubernetes_metadata_filter-3.1.2/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb:32:in `set_up_namespace_thread'
        from (unavailable):1:in `set_up_namespace_thread'

which points to this line: https://github.com/ManageIQ/kubeclient/blob/v4.10.1/lib/kubeclient/common.rb#L596

Do you know what is making the call to set_up_namespace_thread? from (unavailable):1 doesn't tell much.
It's most likely from https://github.com/fabric8io/fluent-plugin-kubernetes_metadata_filter/blob/840e0b914c1a84b5146ac64fe0acef69360bb0a0/lib/fluent/plugin/filter_kubernetes_metadata.rb#L283

Is it possible that Fluent::Plugin::KubernetesMetadataFilter#configure is called multiple times and not just once?
Could you check that by e.g. adding a puts "In configure" in there?

Similarly in https://github.com/ManageIQ/kubeclient/blob/v4.10.1/lib/kubeclient/common.rb#L587 could you add puts "load_entities: #{object_id} on #{Thread.current}"?

Are you able to provide a way to reproduce this? That would make it simpler.

@eregon eregon changed the title An internal exception escaped out of the interpreter Concurrent Hash access in fluent-plugin-kubernetes_metadata_filter and kubeclient Oct 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants