From fef4deb4d99cf3351f4e1a199267ed0860352f75 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Wed, 7 Jan 2009 12:07:34 +0000 Subject: [PATCH] maybePerformBlockedException() should handle ThreadComplete/ThreadKilled Part of the fix for #2910 --- rts/RaiseAsync.c | 9 +++++++++ 1 file changed, 9 insertions(+) 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); -- 1.7.10.4