Open
Description
Howdy!
I'm not sure if this should be filed elsewhere (is this TruffleRuby specific, or is it more general to Truffle/GraalVM stuff?), let me know if I should send this elsewhere. The test below was running truffleruby 21.1.0, like ruby 2.7.2, GraalVM CE Native [x86_64-darwin]
.
I was playing around with the debugger and started my Ruby process with ruby --inspect
. I then realized I had started it with the wrong args, so I tried to ctrl+c out of it. The first ctrl+c was silently ignored, but after that first one I just get an exception:
$ ruby --inspect -e "puts RUBY_DESCRIPTION"
Debugger listening on ws://127.0.0.1:9229/IUhszGA88vCWxLe0Scu0zbQ4q9zAqW8jddVKJolKwQc
For help, see: https://www.graalvm.org/docs/tools/chrome-debugger
E.g. in Chrome open: devtools://devtools/bundled/js_app.html?ws=127.0.0.1:9229/IUhszGA88vCWxLe0Scu0zbQ4q9zAqW8jddVKJolKwQc
^C^Cjava.lang.Exception: Event onEnter failed for instrument class com.oracle.truffle.api.debug.impl.DebuggerInstrument and listener/factory com.oracle.truffle.api.debug.DebuggerSession$3@428d97e9.
at com.oracle.truffle.api.instrumentation.ProbeNode.exceptionEventForClientInstrument(ProbeNode.java:665)
at com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.handleError(ProbeNode.java:915)
at com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.onEnter(ProbeNode.java:940)
at com.oracle.truffle.api.instrumentation.ProbeNode.onEnter(ProbeNode.java:216)
at org.truffleruby.language.RubyNodeWrapper.execute(RubyNodeWrapper.java:44)
at org.truffleruby.core.cast.BooleanCastNodeGen.executeBoolean(BooleanCastNodeGen.java:119)
at org.truffleruby.language.control.IfNode.execute(IfNode.java:38)
at org.truffleruby.language.RubyNode.doExecuteVoid(RubyNode.java:74)
at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:33)
at org.truffleruby.language.methods.ExceptionTranslatingNode.execute(ExceptionTranslatingNode.java:33)
at org.truffleruby.language.control.SequenceNode.execute(SequenceNode.java:36)
at org.truffleruby.language.methods.CatchForLambdaNode.execute(CatchForLambdaNode.java:53)
at org.truffleruby.language.RubyNodeWrapper.execute(RubyNodeWrapper.java:45)
at org.truffleruby.language.RubyRootNode.execute(RubyRootNode.java:61)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:613)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:584)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:534)
at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:121)
at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:164)
at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:104)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callIndirect(OptimizedCallTarget.java:463)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:444)
at org.truffleruby.core.proc.ProcOperations.rootCall(ProcOperations.java:49)
at org.truffleruby.core.VMPrimitiveNodes$VMWatchSignalNode.lambda$watchSignalProc$0(VMPrimitiveNodes.java:267)
at org.truffleruby.language.SafepointManager.assumptionInvalidated(SafepointManager.java:137)
at org.truffleruby.language.SafepointManager.poll(SafepointManager.java:115)
at org.truffleruby.language.SafepointManager.poll(SafepointManager.java:99)
at org.truffleruby.language.RubyRootNode.execute(RubyRootNode.java:60)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:613)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:584)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:534)
at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:121)
at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:164)
at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:104)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:481)
at org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:71)
at org.truffleruby.language.RubyParsingRequestNode.execute(RubyParsingRequestNode.java:79)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:613)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:584)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:534)
at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:121)
at com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:164)
at com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:104)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callIndirect(OptimizedCallTarget.java:463)
at org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:444)
at com.oracle.truffle.polyglot.PolyglotContextImpl.eval(PolyglotContextImpl.java:1050)
at org.graalvm.polyglot.Context.eval(Context.java:353)
at org.truffleruby.launcher.RubyLauncher.runRubyMain(RubyLauncher.java:227)
at org.truffleruby.launcher.RubyLauncher.launch(RubyLauncher.java:123)
at org.graalvm.launcher.AbstractLanguageLauncher.launch(AbstractLanguageLauncher.java:124)
at org.graalvm.launcher.AbstractLanguageLauncher.launch(AbstractLanguageLauncher.java:71)
at org.truffleruby.launcher.RubyLauncher.main(RubyLauncher.java:38)
Caused by: com.oracle.truffle.api.debug.DebugException: Interrupt (Interrupt)
at <ruby>.Kernel#raise(resource:/truffleruby/core/kernel.rb:703)
at <ruby>.block (2 levels) in <top (required)>(resource:/truffleruby/core/main.rb:82)
at <ruby>.Truffle::Interop.get_members_implementation(Unknown)
at <ruby>.block (2 levels) in <top (required)>(Unknown)
at <ruby>.<top (required)>(Unknown)
at <ruby>.parsing-request(Unknown)
if I then go to the dev tools and press play, my app then crashes with:
truffleruby: an exception escaped out of the interpreter - this is an implementation bug
Interrupt (Interrupt)
at <ruby> Kernel#raise(resource:/truffleruby/core/kernel.rb:703:19631-19733)
at <ruby> block (2 levels) in <top (required)>(resource:/truffleruby/core/main.rb:82:2937-2957)
at <ruby> parsing-request(Unknown)
at org.graalvm.polyglot.Context.eval(Context.java:353)
at org.truffleruby.launcher.RubyLauncher.runRubyMain(RubyLauncher.java:227)
at org.truffleruby.launcher.RubyLauncher.launch(RubyLauncher.java:123)
at org.graalvm.launcher.AbstractLanguageLauncher.launch(AbstractLanguageLauncher.java:124)
at org.graalvm.launcher.AbstractLanguageLauncher.launch(AbstractLanguageLauncher.java:71)
at org.truffleruby.launcher.RubyLauncher.main(RubyLauncher.java:38)