X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FSTM.c;h=3de42e20906f664534709450796712f16dc129f4;hb=c50bc4658e3801442b4581bd1d9a19f67567cdda;hp=be615384345787e3cffec0290119dedd170c564a;hpb=7408b39235bccdcde48df2a73337ff976fbc09b7;p=ghc-hetmet.git diff --git a/rts/STM.c b/rts/STM.c index be61538..3de42e2 100644 --- 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