From f31b2a4a57473ca78fe1b9a1b7cd11f22aeff87d Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Tue, 6 Jan 2009 15:32:54 +0000 Subject: [PATCH] wake up the blocked exception queue on ThreadFinished; fixes #2910 --- rts/Schedule.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rts/Schedule.c b/rts/Schedule.c index 38e3a3c..7c453d7 100644 --- a/rts/Schedule.c +++ b/rts/Schedule.c @@ -1402,6 +1402,13 @@ scheduleHandleThreadFinished (Capability *cap STG_UNUSED, Task *task, StgTSO *t) debugTrace(DEBUG_sched, "--++ thread %lu (%s) finished", (unsigned long)t->id, whatNext_strs[t->what_next]); + // blocked exceptions can now complete, even if the thread was in + // blocked mode (see #2910). The thread is already marked + // ThreadComplete, so any further throwTos will complete + // immediately and we don't need to worry about synchronising with + // those. + awakenBlockedExceptionQueue (cap, t); + // // Check whether the thread that just completed was a bound // thread, and if so return with the result. -- 1.7.10.4