Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r948:04836bf75796
Date: 2014-03-04 18:41 +0100
http://bitbucket.org/pypy/stmgc/changeset/04836bf75796/

Log:    Bug fix

diff --git a/c7/stm/nursery.c b/c7/stm/nursery.c
--- a/c7/stm/nursery.c
+++ b/c7/stm/nursery.c
@@ -393,10 +393,18 @@
 
         assert(pseg->transaction_state != TS_NONE);
         assert(pseg->safe_point != SP_RUNNING);
+        assert(pseg->safe_point != SP_NO_TRANSACTION);
 
         set_gs_register(get_segment_base(i));
-        _do_minor_collection(/*commit=*/ false);
-        assert(MINOR_NOTHING_TO_DO(pseg));
+
+        /* Other segments that will abort immediately after resuming: we
+           have to ignore them, not try to collect them anyway!
+           Collecting might fail due to invalid state.
+        */
+        if (!must_abort()) {
+            _do_minor_collection(/*commit=*/ false);
+            assert(MINOR_NOTHING_TO_DO(pseg));
+        }
     }
 
     set_gs_register(get_segment_base(original_num));
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to