Bug #6117

Transfers allowed into Fibers that have resumed into other fibers

Added by Logan Bowers about 2 years ago. Updated over 1 year ago.

[ruby-core:43088]
Status:Assigned
Priority:Normal
Assignee:Koichi Sasada
Category:-
Target version:next minor
ruby -v:ruby 2.0.0dev (2012-03-06) [x86_64-darwin11.3.0] Backport:

Description

=begin
Consider the following code:

require 'fiber'

def foo
order = []
mainfiber = 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

History

#1 Updated by Kenta Murata about 2 years ago

  • Assignee set to Koichi Sasada

#2 Updated by Shyouhei Urabe about 2 years ago

  • Status changed from Open to Assigned

#3 Updated by Koichi Sasada over 1 year ago

  • Target version set to 2.0.0

Please give me a time.

#4 Updated by Koichi Sasada over 1 year ago

Exception seems good.
transfer' andresume' should not be mix.

Any volunteer?
or it will be tagged `next minor'.

#5 Updated by Koichi Sasada over 1 year ago

Any volunteers?

#6 Updated by Koichi Sasada over 1 year ago

  • Target version changed from 2.0.0 to next minor

no volunteer.

Also available in: Atom PDF