Re: [GHC] #9401: MVar deadlock exceptions cause exceptions in later MVar ops

#9401: MVar deadlock exceptions cause exceptions in later MVar ops -------------------------------------+------------------------------------- Reporter: snoyberg | Owner: simonmar Type: bug | Status: closed Priority: normal | Milestone: Component: Runtime | Version: 7.8.2 System | Keywords: Resolution: invalid | Architecture: x86_64 (amd64) Operating System: Linux | Difficulty: Unknown Type of failure: Incorrect | Blocked By: result at runtime | Related Tickets: Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by simonmar): * status: new => closed * resolution: => invalid Comment: This isn't a bug. There are two threads: the main thread, blocked in readMVar, and the child thread, blocked in takeMVar. BOTH threads are deadlocked, so the RTS sends them both an exception. It has no way to tell that unblocking the child thread would later allow the main thread to make progress, or indeed whether the reverse might be true. So the rule is simple: when there are a group of deadlocked threads, they are all sent an exception simultaneously. There's a similar example in my book, [http://chimera.labs.oreilly.com/books/1230000000929/ch15.html#sec_deadlock], see `deadlock1.hs`. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9401#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC