Issue #6117 has been updated by Kenta Murata.

Assignee set to Koichi Sasada


----------------------------------------
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: Koichi Sasada
Category: 
Target version: 
ruby -v: ruby 2.0.0dev (2012-03-06) [x86_64-darwin11.3.0]


=begin
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.
=end



-- 
http://bugs.ruby-lang.org/