diff options
Diffstat (limited to 'rts/STM.c')
-rw-r--r-- | rts/STM.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -385,11 +385,12 @@ static void unpark_tso(Capability *cap, StgTSO *tso) { // This way we can avoid sending further wakeup messages in the // future. lockTSO(tso); - if (tso->why_blocked == BlockedOnSTM && tso->block_info.closure == STM_AWOKEN) { + if (tso->why_blocked == BlockedOnSTM && + tso->block_info.closure == &stg_STM_AWOKEN_closure) { TRACE("unpark_tso already woken up tso=%p", tso); } else if (tso -> why_blocked == BlockedOnSTM) { TRACE("unpark_tso on tso=%p", tso); - tso->block_info.closure = STM_AWOKEN; + tso->block_info.closure = &stg_STM_AWOKEN_closure; tryWakeupThread(cap,tso); } else { TRACE("spurious unpark_tso on tso=%p", tso); |