Commit 0a4162ac authored by Simon Marlow's avatar Simon Marlow
Browse files

Don't raise a throwTo when the target is masking and BlockedOnBlackHole

parent 63dde2e3
...@@ -357,14 +357,20 @@ check_target: ...@@ -357,14 +357,20 @@ check_target:
case BlockedOnBlackHole: case BlockedOnBlackHole:
{ {
// Revoke the message by replacing it with IND. We're not if (target->flags & TSO_BLOCKEX) {
// locking anything here, so we might still get a TRY_WAKEUP // BlockedOnBlackHole is not interruptible.
// message from the owner of the blackhole some time in the blockedThrowTo(cap,target,msg);
// future, but that doesn't matter. return THROWTO_BLOCKED;
ASSERT(target->block_info.bh->header.info == &stg_MSG_BLACKHOLE_info); } else {
OVERWRITE_INFO(target->block_info.bh, &stg_IND_info); // Revoke the message by replacing it with IND. We're not
raiseAsync(cap, target, msg->exception, rtsFalse, NULL); // locking anything here, so we might still get a TRY_WAKEUP
return THROWTO_SUCCESS; // message from the owner of the blackhole some time in the
// future, but that doesn't matter.
ASSERT(target->block_info.bh->header.info == &stg_MSG_BLACKHOLE_info);
OVERWRITE_INFO(target->block_info.bh, &stg_IND_info);
raiseAsync(cap, target, msg->exception, rtsFalse, NULL);
return THROWTO_SUCCESS;
}
} }
case BlockedOnSTM: case BlockedOnSTM:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment