thread_pthread: do not corrupt stack
This fixes stuck test/ruby/test_io.rb with FIBER_USE_NATIVE=0 on GNU/Linux because linked-list pointers used by glibc get corrupted when fiber stacks are copied. Thanks to wanabe for finding the bug and original patch. * thread_pthread (native_thread_init_stack): fix stack corruption [ruby-core:82737] [Bug #13387] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
30d23ec903
commit
73c397acb5
@ -836,8 +836,9 @@ native_thread_init_stack(rb_thread_t *th)
|
||||
size_t size;
|
||||
|
||||
if (get_stack(&start, &size) == 0) {
|
||||
th->ec.machine.stack_start = start;
|
||||
th->ec.machine.stack_maxsize = size;
|
||||
uintptr_t diff = (uintptr_t)start - (uintptr_t)&curr;
|
||||
th->ec.machine.stack_start = (VALUE *)&curr;
|
||||
th->ec.machine.stack_maxsize = size - diff;
|
||||
}
|
||||
#elif defined get_stack_of
|
||||
if (!th->ec.machine.stack_maxsize) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user