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,,,,
