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