On Sun, Jul 24, 2011 at 10:07 PM, Edward Z. Yang <ezy...@mit.edu> wrote: > Excerpts from Felipe Almeida Lessa's message of Sun Jul 24 22:02:36 -0400 > 2011: >> Does anything change if you somehow force a GC sometime after "good2"? >> Perhaps with some calculation generating garbage, perhaps with >> performGC. IIRC, the runtime detects BlockedIndefinitelyOnMVar on GC. >> But I'm probably wrong =). > > That's correct. > > resurrectThreads is called after garbage collection on the list of > threads found to be garbage. Each of these threads will be woken > up and sent a signal: BlockedOnDeadMVar if the thread was blocked > on an MVar, or NonTermination if the thread was blocked on a Black > Hole. > > Cheers, > Edward >
Thanks, Edward. I'm going to take a look at the GHC source and see if I can grok any of it. Any comment on whether it is correct behavior to have the exception raised in all the threads attempting a readMVar at once (if that's actually what's happening), even though an exception handler will fill the MVar for subsequent threads? I think I'm not totally clear on what qualifies as "indefinitely" Thanks again, Brandon _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users