[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]