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