From: Logan Bowers Date: 2012-03-06T16:18:38+09:00 Subject: [ruby-core:43088] [ruby-trunk - Bug #6117][Open] Transfers allowed into Fibers that have resumed into other fibers Issue #6117 has been reported by Logan Bowers. ---------------------------------------- Bug #6117: Transfers allowed into Fibers that have resumed into other fibers https://bugs.ruby-lang.org/issues/6117 Author: Logan Bowers Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.0.0dev (2012-03-06) [x86_64-darwin11.3.0] Consider the following code: require 'fiber' def foo order = [] main_fiber = Fiber.current a = Fiber.new do order << 2 x = Fiber.new do order << 4 main_fiber.transfer order << 6 end order << 3 x.resume order << 7 end order << 1 a.transfer order << 5 a.transfer order << 8 end It produces output: [1, 2, 3, 4, 5, 7, 8] Note: the missing 6. I'd expect either the array to be 1-8 OR for an exception to be raised after 5 when the main fiber attempts to transfer into a again. Either it shouldn't be possible to transfer into a Fiber that is blocked resuming another Fiber, OR it should automatically resume the sub-Fiber. -- http://bugs.ruby-lang.org/