mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
fiber: fix machine stack marking when FIBER_USE_NATIVE is 0
* cont.c (cont_mark): mark Fiber machine stack correctly when FIBER_USE_NATIVE is 0 * test/ruby/test_fiber.rb (test_mark_fiber): new test [Bug #13875] [ruby-core:82681] This bug appears to be introduced with r59557. ("refactoring Fiber status") git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59785 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
5804d24f51
commit
01fdd48fed
2 changed files with 12 additions and 1 deletions
2
cont.c
2
cont.c
|
@ -248,7 +248,7 @@ cont_mark(void *ptr)
|
|||
const rb_thread_t *th = rb_thread_ptr(cont->saved_thread.self);
|
||||
const rb_fiber_t *fib = (rb_fiber_t*)cont;
|
||||
|
||||
if ((th->ec.fiber != fib) && FIBER_SUSPENDED_P(fib)) {
|
||||
if ((th->ec.fiber != fib) && !FIBER_TERMINATED_P(fib)) {
|
||||
rb_gc_mark_locations(cont->machine.stack,
|
||||
cont->machine.stack + cont->machine.stack_size);
|
||||
}
|
||||
|
|
|
@ -217,6 +217,17 @@ class TestFiber < Test::Unit::TestCase
|
|||
}, bug4612
|
||||
end
|
||||
|
||||
def test_mark_fiber
|
||||
bug13875 = '[ruby-core:82681]'
|
||||
|
||||
assert_normal_exit %q{
|
||||
GC.stress = true
|
||||
up = 1.upto(10)
|
||||
down = 10.downto(1)
|
||||
up.zip(down) {|a, b| a + b == 11 or fail 'oops'}
|
||||
}, bug13875
|
||||
end
|
||||
|
||||
def test_no_valid_cfp
|
||||
bug5083 = '[ruby-dev:44208]'
|
||||
assert_equal([], Fiber.new(&Module.method(:nesting)).resume, bug5083)
|
||||
|
|
Loading…
Add table
Reference in a new issue