Skip to content

Commit 54728bb

Browse files
committed
Handle a null backtrace in ThreadManager#setException
* This hapenned in CI for ruby-test-mri-asserts: java.lang.RuntimeException: Ruby Thread id=259 from test/mri/tests/ruby/test_io.rb:2916 terminated with internal error: at org.graalvm.ruby/org.truffleruby.core.thread.ThreadManager.printInternalError(ThreadManager.java:361) at org.graalvm.ruby/org.truffleruby.core.thread.ThreadManager.lambda$uncaughtExceptionHandler$3(ThreadManager.java:240) at java.base/java.lang.Thread.dispatchUncaughtException(Thread.java:2901) Caused by: java.lang.NullPointerException: Cannot invoke "org.truffleruby.language.backtrace.Backtrace.getRaiseException()" because "exception.backtrace" is null at org.graalvm.ruby/org.truffleruby.core.thread.ThreadManager.setException(ThreadManager.java:389) at org.graalvm.ruby/org.truffleruby.core.thread.ThreadManager.threadMain(ThreadManager.java:344) at org.graalvm.ruby/org.truffleruby.core.thread.ThreadManager.lambda$initialize$4(ThreadManager.java:321) at java.base/java.lang.Thread.run(Thread.java:1583) at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotThread.access$001(PolyglotThread.java:53) at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotThread$1.execute(PolyglotThread.java:106) at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.executeImpl(PolyglotThread.java:140) at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotThread$ThreadSpawnRootNode.execute(PolyglotThread.java:131) at org.graalvm.truffle/com.oracle.truffle.api.impl.DefaultCallTarget.callDirectOrIndirect(DefaultCallTarget.java:85) at org.graalvm.truffle/com.oracle.truffle.api.impl.DefaultCallTarget.call(DefaultCallTarget.java:102) at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotThread.run(PolyglotThread.java:102) Suppressed: Attached Guest Language Frames (1)
1 parent 8b4a7b3 commit 54728bb

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/main/java/org/truffleruby/core/thread/ThreadManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ private void setThreadValue(RubyThread thread, Object value) {
386386
private void setException(RubyThread thread, RubyException exception, Node currentNode) {
387387
// We materialize the backtrace eagerly here, as the exception escapes the thread and needs
388388
// to capture the backtrace from this thread.
389-
final RaiseException truffleException = exception.backtrace.getRaiseException();
389+
RaiseException truffleException = exception.backtrace == null ? null : exception.backtrace.getRaiseException();
390390
if (truffleException != null) {
391391
TruffleStackTrace.fillIn(truffleException);
392392
}

0 commit comments

Comments
 (0)