X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FRaiseAsync.c;h=10c9b7c3c17e28f940436a90600b39227069c28c;hp=501da2f55f3dc9ef836fdb681ca1f183d9d3de5e;hb=fef4deb4d99cf3351f4e1a199267ed0860352f75;hpb=b55e7b53eb4af373764969ab9cfd5a4ef4bc9b8d diff --git a/rts/RaiseAsync.c b/rts/RaiseAsync.c index 501da2f..10c9b7c 100644 --- a/rts/RaiseAsync.c +++ b/rts/RaiseAsync.c @@ -512,6 +512,15 @@ maybePerformBlockedException (Capability *cap, StgTSO *tso) { StgTSO *source; + if (tso->what_next == ThreadComplete || tso->what_next == ThreadFinished) { + if (tso->blocked_exceptions != END_TSO_QUEUE) { + awakenBlockedExceptionQueue(cap,tso); + return 1; + } else { + return 0; + } + } + if (tso->blocked_exceptions != END_TSO_QUEUE && (tso->flags & TSO_BLOCKEX) != 0) { debugTrace(DEBUG_sched, "throwTo: thread %lu has blocked exceptions but is inside block", (unsigned long)tso->id);