id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
2155	More deadlock issues with concurrent I/O	dfranke	simonmar	"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."	bug	closed	normal	6.8.3	libraries/process	6.8.2	duplicate			Linux	x86_64 (amd64)		Unknown				
