
On Sat, Aug 11, 2012 at 12:13:45PM +0100, Benjamin Edwards wrote:
Hello café,
I have a program that is crashing, and I have no idea why:
module Main where
import System.Process (readProcessWithExitCode)
main :: IO () main = do _ <- readProcessWithExitCode "ghc-pkg" ["describe", "hoopl"] "" putStrLn "Should never get here"
this is using the process package from hackage. The program crashes with
minimal-test: fd:5: hGetContents: invalid argument (invalid byte sequence) minimal-test: thread blocked indefinitely in an MVar operation
inspecting the source of readProcessWithExitCode yields an obvious explanation to the MVar problem, but I don't understand why hGetContents is so offended.
The 'invalid argument' error from hGetContents indicates that a wrong encoding is being assumed. I don't know enough about how putStr/hGetContents decide on an encoding, but in any case it works for me (that is, it prints "Should never get here"). The likely sticking point is that one of the authors of hoopl, João Dias, has a name which contains U+00E3: LATIN SMALL LETTER A WITH TILDE. Try doing ghc-pkg describe hoopl > hoopl.txt file hoopl.txt to get an indication of what encoding is being used, or manually take a look at the bytes being generated using ghc-pkg describe hoopl | hexdump -C I don't know what the solution is but at least this should give some additional information. -Brent