From: Simon Marlow Date: Wed, 7 Jan 2009 12:07:34 +0000 (+0000) Subject: maybePerformBlockedException() should handle ThreadComplete/ThreadKilled X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=fef4deb4d99cf3351f4e1a199267ed0860352f75 maybePerformBlockedException() should handle ThreadComplete/ThreadKilled Part of the fix for #2910 --- 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);