Fix Fiber with Thread issue on Windows [Bug #14642]
cont.c (rb_threadptr_root_fiber_setup): divide into two functions:
rb_threadptr_root_fiber_setup_by_parent(): called by the parent thread.
rb_threadptr_root_fiber_setup_by_child(): called by the created thread.
rb_threadptr_root_fiber_setup() is called by the parent thread and
set fib->fib_handle by ConvertThreadToFiber() on the parent thread on
Windows enveironment.
This means that root_fib->fib_handle of child thread is initialized
with parent thread's Fiber handle. Furthermore, second call of ConvertThreadToFiber() for the same thread fails.
This patch solves this weird situateion. However, maybe we can make more
clean code.
thread.c (thread_start_func_2): call rb_threadptr_root_fiber_setup_by_child() at thread initialize routine.
Fix Fiber with Thread issue on Windows [Bug #14642]
cont.c (rb_threadptr_root_fiber_setup): divide into two functions:
rb_threadptr_root_fiber_setup()
is called by the parent thread andset fib->fib_handle by ConvertThreadToFiber() on the parent thread on
Windows enveironment.
This means that root_fib->fib_handle of child thread is initialized
with parent thread's Fiber handle. Furthermore, second call of
ConvertThreadToFiber()
for the same thread fails.This patch solves this weird situateion. However, maybe we can make more
clean code.
thread.c (thread_start_func_2): call
rb_threadptr_root_fiber_setup_by_child()
at thread initialize routine.vm.c (th_init): call
rb_threadptr_root_fiber_setup_by_parent()
.git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63073 b2dd03c8-39d4-4d8f-98ff-823fe69b080e