[pypy-commit] stmgc default: More attempt to fix demo_random2
arigo
noreply at buildbot.pypy.org
Thu Aug 14 15:40:12 CEST 2014
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r1315:29376f500349
Date: 2014-08-14 15:38 +0200
http://bitbucket.org/pypy/stmgc/changeset/29376f500349/
Log: More attempt to fix demo_random2
diff --git a/c7/stm/core.c b/c7/stm/core.c
--- a/c7/stm/core.c
+++ b/c7/stm/core.c
@@ -1000,7 +1000,8 @@
/* we need to do this here and not directly in rewind_longjmp() because
that is called when we already released everything (safe point)
and a concurrent major GC could mess things up. */
- stm_rewind_jmp_restore_shadowstack(tl);
+ if (tl->shadowstack != NULL)
+ stm_rewind_jmp_restore_shadowstack(tl);
assert(tl->shadowstack == pseg->shadowstack_at_start_of_transaction);
#endif
tl->thread_local_obj = pseg->threadlocal_at_start_of_transaction;
diff --git a/c7/stm/forksupport.c b/c7/stm/forksupport.c
--- a/c7/stm/forksupport.c
+++ b/c7/stm/forksupport.c
@@ -187,9 +187,10 @@
#ifndef NDEBUG
pr->running_pthread = pthread_self();
#endif
- pr->pub.running_thread->shadowstack = (
- pr->shadowstack_at_start_of_transaction);
strcpy(pr->marker_self, "fork");
+ tl->shadowstack = NULL;
+ pr->shadowstack_at_start_of_transaction = NULL;
+ stm_rewind_jmp_forget(tl);
abort_with_mutex_no_longjmp();
s_mutex_unlock();
}
diff --git a/c7/stm/rewind_setjmp.c b/c7/stm/rewind_setjmp.c
--- a/c7/stm/rewind_setjmp.c
+++ b/c7/stm/rewind_setjmp.c
@@ -195,9 +195,6 @@
void _rewind_jmp_free_stack_slices(rewind_jmp_thread *rjthread)
{
/* frees all saved stack copies */
-#ifdef _STM_CORE_H_
- assert(_seems_to_be_running_transaction()); /* see previous function */
-#endif
struct _rewind_jmp_moved_s *p = rjthread->moved_off;
while (p) {
struct _rewind_jmp_moved_s *pnext = p->next;
More information about the pypy-commit
mailing list