
#9965: getChanContents BlockedIndefinitelyOnMVar on 7.10 RC1 -------------------------------------+------------------------------------- Reporter: jberryman | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: libraries/base | Version: 7.10.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Incorrect result | Unknown/Multiple at runtime | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by jberryman): Adding another `unsafeInterleaveIO` seems to solve this, but I don't really understand why: {{{#!haskell getChanContents :: Chan a -> IO [a] getChanContents ch = unsafeInterleaveIO (do x <- unsafeInterleaveIO $ readChan ch -- <------ unsafeInterleaveIO xs <- getChanContents ch return (x:xs) ) }}} I'll attach the output of `ghc --make -O2 -fforce-recomp -ddump-to-file -ddump-simpl -dsuppress-module-prefixes -dsuppress-uniques Main.hs` for both 7.8 and 7.10, using both the old version of `getChanContents` and the new version above. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9965#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler