
#10241: BlockedIndefinitelyOnMVar thrown to the thread which is not blocked indefinitely -------------------------------------+------------------------------------- Reporter: asukamirai | Owner: simonmar Type: bug | Status: patch Priority: normal | Milestone: Component: Runtime System | Version: 7.8.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: x86_64 Type of failure: Incorrect result | (amd64) at runtime | Test Case: Blocked By: | Blocking: Related Tickets: #10793 | Differential Rev(s): Phab:D4644 Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonmar): This comes up from time to time. We can't pick an order to resurrect threads in because we don't know which one to resurrect first (as I commented on Phab:D4644). e.g. if we happened to resurrect the main thread first in this example, the result would be exactly the same. We could do multiple traversals of the heap to figure out the relationship, but that's not practical. The only deterministic thing to do is to treat all unreachable threads as deadlocked and send them all an exception at the same time. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10241#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler