Skip to content

Commit ea27df1

Browse files
committed
Cleanup Fiber in disposeThread()
* So this runs even if there was an exception during the poll() that PolyglotThread does when entering the context.
1 parent 2d0fb63 commit ea27df1

File tree

2 files changed

+2
-4
lines changed

2 files changed

+2
-4
lines changed

src/main/java/org/truffleruby/RubyLanguage.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,8 @@ public void disposeThread(RubyContext context, Thread thread) {
668668
}
669669
context.getThreadManager().cleanupThreadState(rubyThread, thread);
670670
} else { // (non-root) Fiber
671-
// Fibers are always cleaned up by their thread's cleanup with FiberManager#killOtherFibers()
671+
var fiber = this.rubyFiber.get(thread);
672+
context.fiberManager.cleanup(fiber, thread);
672673
}
673674
return;
674675
}

src/main/java/org/truffleruby/core/fiber/FiberManager.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,6 @@ private void fiberMain(RubyContext context, RubyFiber fiber, RubyProc block, Nod
182182
}
183183

184184
private void afterLeave(RubyFiber fiber) {
185-
final Thread thread = Thread.currentThread();
186-
cleanup(fiber, thread);
187-
188185
if (fiber.lastMessage != null) {
189186
addToMessageQueue(fiber.returnFiber, fiber.lastMessage);
190187
fiber.returnFiber = null;

0 commit comments

Comments
 (0)