X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FSchedule.c;h=b350ade5fae58f1a17615653d70f2e00dabdd3ff;hb=302e2e29f2e1074bfba561e077a484dc4e1d15f6;hp=f7b26a4876f1cb0ec75bd6d1d84f1ffb377a7b87;hpb=f4692220c7cbdadaa633f50eb2b30b59edb30183;p=ghc-hetmet.git diff --git a/rts/Schedule.c b/rts/Schedule.c index f7b26a4..b350ade 100644 --- a/rts/Schedule.c +++ b/rts/Schedule.c @@ -1997,12 +1997,7 @@ initScheduler(void) } void -exitScheduler( - rtsBool wait_foreign -#if !defined(THREADED_RTS) - __attribute__((unused)) -#endif -) +exitScheduler (rtsBool wait_foreign USED_IF_THREADS) /* see Capability.c, shutdownCapability() */ { Task *task = NULL; @@ -2551,6 +2546,12 @@ resurrectThreads (StgTSO *threads) * can wake up threads, remember...). */ continue; + case BlockedOnMsgThrowTo: + // This can happen if the target is masking, blocks on a + // black hole, and then is found to be unreachable. In + // this case, we want to let the target wake up and carry + // on, and do nothing to this thread. + continue; default: barf("resurrectThreads: thread blocked in a strange way: %d", tso->why_blocked);