More deadlock issues with concurrent I/O
The following hangs on the current ghc-STABLE snapshot, and shouldn't.
module Main where
import Control.Concurrent
import qualified Data.ByteString.Lazy.Char8 as B
import System.IO
import System.Process
launch :: B.ByteString -> IO B.ByteString
launch i = do (hin,hout,herr,ph) <- runInteractiveProcess "cat" [] Nothing Nothing
-- forkIO $ collect ph -- This doesn't seem to be relevant to the problem.
forkIO $ do B.hPut hin i
hClose hin
B.hGetContents hout
collect :: ProcessHandle -> IO ()
collect ph = do waitForProcess ph
return ()
main :: IO ()
main = let i = B.pack "foo" in
do o <- foldl (>>=) (return i) (take 5 (repeat launch))
B.putStrLn o
See also #1936 (closed).
Trac metadata
Trac field | Value |
---|---|
Version | 6.8.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |