Project

General

Profile

« Previous | Next » 

Revision 513fefdd

Added by ko1 (Koichi Sasada) about 9 years ago

  • gc.c (rb_objspace_call_finalizer): control GC execution during
    force firnalizations at the end of interpreter process.
    [Bug #10768]
    1. Prohibit incremental GC while running Ruby-level finalizers
      to avoid any danger.
    2. Prohibit GC while invoking T_DATA/T_FILE data structure
      because these operations break object relations consistency.
      This patch can introduce another memory consuming issue because
      Ruby-level finalizers can run after (2), GC is disabled.
      However, basically object consistency was broken at (2) as I
      described above. So that running Ruby-level finalizers contains
      danger originally. Because of this point, I need to suggest to
      remove these 3 lines (invoking remaining finalizers). And add a
      rule to add that finalizers should not add new finalizers, or
      say there is no guarantee to invoke finalizers that added by
      another finalizer.

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