RFC: termination detection for STM
Brandon Michael Moore
brandon at heave.ugcs.caltech.edu
Wed Feb 14 05:43:24 EST 2007
On Wed, Feb 14, 2007 at 10:04:32AM +0000, Simon Marlow wrote:
> Perhaps I'm missing something, but doesn't GHC already detect the kind of
> deadlock you're talking about here? When a thread is blocked and cannot be
> woken up, it is sent the BlockedOnDeadMVar exception. It's more precise
> than the extension you propose, because the GC is used to check which
> threads are unreachable and therefore cannot be woken up, so it can detect
> mutual-deadlock between two threads in a system that contains other running
Perhaps the idea is specifically to detect from the outside when a group of
threads is deadlocked, maybe like something that can be done with computation
spaces in Oz, definitely like the way tree spaces work in Aardappel
( http://wouter.fov120.com/aardappel/ ).
Based on your description, it sounds like it wouldn't work very well to have
a parent thread waiting on a channel, with one of the child threads set up
to catch BlockedOnDeadMVar and send a message, lest the parent thread be
considered deadlocked and sent BlockedOnDeadMVar itself.
What are the semantics of the exception? It seems like it might be tricky
to provide any guarantees, if a thread can catch the exception and make the
MVar live again.
More information about the Glasgow-haskell-users