Skip to content

Commit 3d23dc0

Browse files
committed
Add the missing FiberManager#cleanup when using VirtualThread
* Termination would hang otherwise.
1 parent 748510c commit 3d23dc0

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,12 @@ public Thread createFiberJavaThread(RubyFiber fiber, SourceSection sourceSection
185185
body.run();
186186
} finally {
187187
truffleContext.leave(node, prev);
188+
189+
// For PolyglotThread, the order is leave(), disposeThread(), afterLeave(), as desired.
190+
// But for an "embedder thread" like this one, disposeThread() is only done just before disposeContext(),
191+
// so we do the disposeThread() logic here to release the CountDownLatch and let doKillOtherFibers() proceed.
192+
context.fiberManager.cleanup(fiber, Thread.currentThread());
193+
188194
afterLeave.run();
189195
}
190196
});

0 commit comments

Comments
 (0)