Author: Remi Meier <remi.me...@inf.ethz.ch>
Branch: 
Changeset: r1567:787672796c2f
Date: 2015-01-21 17:25 +0100
http://bitbucket.org/pypy/stmgc/changeset/787672796c2f/

Log:    fix a case where objs in new_objects may not have WB_EXECUTED
        (gcpage.c asserts that)

diff --git a/c8/stm/core.c b/c8/stm/core.c
--- a/c8/stm/core.c
+++ b/c8/stm/core.c
@@ -788,6 +788,16 @@
         }));
     synchronize_objects_flush();
     release_privatization_lock(STM_SEGMENT->segment_num);
+
+    /* we can as well clear the list here, since the
+       objects are only useful if the commit succeeds. And
+       we never do a major collection in-between.
+       They should also survive any page privatization happening
+       before the actual commit, since we always do a pagecopy
+       in handle_segfault_in_page() that also copies
+       unknown-to-the-segment/uncommitted things.
+    */
+    list_clear(STM_PSEGMENT->new_objects);
 }
 
 
@@ -801,7 +811,7 @@
     minor_collection(1);
 
     push_new_objects_to_other_segments();
-
+    /* push before validate. otherwise they are reachable too early */
     _validate_and_add_to_commit_log();
 
     invoke_and_clear_user_callbacks(0);   /* for commit */
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to