fix #3910
[ghc-hetmet.git] / rts / STM.c
index be61538..3de42e2 100644 (file)
--- a/rts/STM.c
+++ b/rts/STM.c
@@ -377,7 +377,7 @@ static void unpark_tso(Capability *cap, StgTSO *tso) {
     lockTSO(tso);
     if (tso -> why_blocked == BlockedOnSTM) {
        TRACE("unpark_tso on tso=%p", tso);
-       unblockOne(cap,tso);
+        tryWakeupThread(cap,tso);
     } else {
        TRACE("spurious unpark_tso on tso=%p", tso);
     }
@@ -1179,6 +1179,7 @@ void stmAddInvariantToCheck(Capability *cap,
   SET_HDR (invariant, &stg_ATOMIC_INVARIANT_info, CCS_SYSTEM);
   invariant -> code = code;
   invariant -> last_execution = NO_TREC;
+  invariant -> lock = 0;
 
   // 2. Allocate an StgInvariantCheckQueue entry, link it to the current trec