vm.c (ruby_vm_destruct): reset main thread's local_storage before
free main thread. rb_thread_t::local_storage is replaced by fiber's
local storage when forked from fiber, and it should be already freed
when the fiber was destroyed.
test/ruby/test_fiber.rb (test_fork_from_fiber): add test for fork
from fiber.
cont.c (rb_fiber_reset_root_local_storage): add a new function to
restore rb_thread_t::local_storage.
cont.c (rb_obj_is_fiber): add a new function to tell finalizer to
prevent fibers from destroy.
gc.c (rb_objspace_call_finalizer): don't sweep fibers at finalizing
objspace.
internal.h (rb_fiber_reset_root_local_storage, rb_obj_is_fiber):
add prototypes.
vm.c (ruby_vm_destruct): reset main thread's local_storage before
free main thread. rb_thread_t::local_storage is replaced by fiber's
local storage when forked from fiber, and it should be already freed
when the fiber was destroyed.
test/ruby/test_fiber.rb (test_fork_from_fiber): add test for fork
from fiber.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e