[Haskell-cafe] strange hangs with -threaded runtime (now with test case)
Joey Hess
joey at kitenet.net
Sat Jul 14 20:24:47 CEST 2012
I've found a minimal test case that seems to demonstrate a bug in either
MissingH or ghc's threaded runtime. Or I'm doing something stupid in
fewer lines of code than usual. ;)
When built with the threaded runtime, after a short while it hangs in
hGetContents.
import System.Cmd
import System.IO
import System.Cmd.Utils
import System.Posix.Process
import Control.Monad
main :: IO ()
main = forever $ pipeRead ["hello", "world"]
pipeRead :: [String] -> IO ()
pipeRead params = do
-- removing this next line avoids the hang somehow
print $ "pipeRead in " ++ show params
(p, h) <- hPipeFrom "echo" params
print "pipeRead getcontents"
c <- hGetContents h
print $ "got: " ++ c
_ <- getProcessStatus True False $ processID p
-- removing this last line avoids the hang somehow
print "pipeRead out"
joey at wren:~>ghc --make -threaded test
[1 of 1] Compiling Main ( test.hs, test.o )
Linking test ...
joey at wren:~>./test
"pipeRead in [\"hello\",\"world\"]"
"pipeRead getcontents"
"got: hello world\n"
"pipeRead out"
"pipeRead in [\"hello\",\"world\"]"
"pipeRead getcontents"
"got: hello world\n"
"pipeRead out"
<snip 20 repeats>
"pipeRead in [\"hello\",\"world\"]"
"pipeRead getcontents"
<hang>
Ghc 7.4.2, Debian Linux
--
see shy jo
More information about the Haskell-Cafe
mailing list