Author: Remi Meier <remi.me...@inf.ethz.ch>
Branch: c8-private-pages
Changeset: r1562:63fb7d3bb1db
Date: 2015-01-21 14:01 +0100
http://bitbucket.org/pypy/stmgc/changeset/63fb7d3bb1db/

Log:    fix for validation failing in the thread doing the major collection
        (it didn't abort)

diff --git a/c8/stm/gcpage.c b/c8/stm/gcpage.c
--- a/c8/stm/gcpage.c
+++ b/c8/stm/gcpage.c
@@ -574,4 +574,11 @@
     DEBUG_EXPECT_SEGFAULT(true);
 
     release_all_privatization_locks();
+
+    /* if major_do_validation_and_minor_collections() decided that we
+       must abort, do it now. The others are in safe-points that will
+       abort if they need to. */
+    dprintf(("must abort?:%d\n", (int)must_abort()));
+    if (must_abort())
+        abort_with_mutex();
 }
diff --git a/c8/stm/rewind_setjmp.h b/c8/stm/rewind_setjmp.h
--- a/c8/stm/rewind_setjmp.h
+++ b/c8/stm/rewind_setjmp.h
@@ -87,6 +87,7 @@
 } while (0)
 
 /* go up one frame. if there was a setjmp call in this frame,
+   copy the frame above the current one and add it to the list
  */
 #define rewind_jmp_leaveframe(rjthread, rjbuf, ss)   do {    \
     assert((rjbuf)->shadowstack_base == (char *)(ss));       \
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to