ruby-changes:16122
From: mame <ko1@a...>
Date: Sun, 30 May 2010 00:12:42 +0900 (JST)
Subject: [ruby-changes:16122] Ruby:r28077 (ruby_1_9_2): merges r28073 from trunk into ruby_1_9_2.
mame 2010-05-30 00:12:29 +0900 (Sun, 30 May 2010) New Revision: 28077 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28077 Log: merges r28073 from trunk into ruby_1_9_2. -- * gc.c (force_chain_object, rb_objspace_call_finalizer): delete finalizer entry after corresponding finalizer is executed. This caused SEGV when test/cgi is executed with GC.stress = true. Modified files: branches/ruby_1_9_2/ChangeLog branches/ruby_1_9_2/gc.c Index: ruby_1_9_2/ChangeLog =================================================================== --- ruby_1_9_2/ChangeLog (revision 28076) +++ ruby_1_9_2/ChangeLog (revision 28077) @@ -1,3 +1,9 @@ +Sun May 30 00:02:39 2010 Yusuke Endoh <mame@t...> + + * gc.c (force_chain_object, rb_objspace_call_finalizer): delete + finalizer entry after corresponding finalizer is executed. + This caused SEGV when test/cgi is executed with GC.stress = true. + Sat May 29 23:30:33 2010 Yusuke Endoh <mame@t...> * string.c (str_replace_shared): change embedded state atomically. Index: ruby_1_9_2/gc.c =================================================================== --- ruby_1_9_2/gc.c (revision 28076) +++ ruby_1_9_2/gc.c (revision 28077) @@ -2661,7 +2661,7 @@ curr->table = val; curr->next = *prev; *prev = curr; - return ST_DELETE; + return ST_CONTINUE; } void @@ -2694,6 +2694,7 @@ while (list) { struct force_finalize_list *curr = list; run_finalizer(objspace, curr->obj, rb_obj_id(curr->obj), curr->table); + st_delete(finalizer_table, (st_data_t*)&curr->obj, 0); list = curr->next; xfree(curr); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/