Project

General

Profile

« Previous | Next » 

Revision b456eab2

Added by normal almost 6 years ago

variable.c: fix thread + fork errors in autoload

This is fairly non-intrusive bugfix to prevent children
from trying to reach into thread stacks of the parent.
I will probably reuse this idea and redo r62934, too
(same bug).

  • vm_core.h (typedef struct rb_vm_struct): add fork_gen counter
  • thread.c (rb_thread_atfork_internal): increment fork_gen
  • variable.c (struct autoload_data_i): store fork_gen
  • variable.c (check_autoload_data): remove (replaced with get_...)
  • variable.c (get_autoload_data): check fork_gen when retrieving
  • variable.c (check_autoload_required): use get_autoload_data
  • variable.c (rb_autoloading_value): ditto
  • variable.c (rb_autoload_p): ditto
  • variable.c (current_autoload_data): ditto
  • variable.c (autoload_reset): reset fork_gen, adjust indent
  • variable.c (rb_autoload_load): set fork_gen when setting state
  • test/ruby/test_autoload.rb (test_autoload_fork): new test
    [ruby-core:86410] [Bug #14634]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e