diff --git a/rts/Messages.c b/rts/Messages.c index 50df0ab41fefb012d62f3b155e294bf03492832a..730d81df9ce916a0b992beb93b0fde3a435ee9ce 100644 --- a/rts/Messages.c +++ b/rts/Messages.c @@ -205,7 +205,7 @@ uint32_t messageBlackHole(Capability *cap, MessageBlackHole *msg) StgTSO *owner = (StgTSO*)p; #if defined(THREADED_RTS) - if (owner->cap != cap) { + if (RELAXED_LOAD(&owner->cap) != cap) { sendMessage(cap, owner->cap, (Message*)msg); debugTraceCap(DEBUG_sched, cap, "forwarding message to cap %d", owner->cap->no); @@ -275,7 +275,7 @@ uint32_t messageBlackHole(Capability *cap, MessageBlackHole *msg) ASSERT(owner != END_TSO_QUEUE); #if defined(THREADED_RTS) - if (owner->cap != cap) { + if (RELAXED_LOAD(&owner->cap) != cap) { sendMessage(cap, owner->cap, (Message*)msg); debugTraceCap(DEBUG_sched, cap, "forwarding message to cap %d", owner->cap->no);