[Haskell-cafe] readProcess exception

Leskó Dániel lesko.daniel at gmail.com
Thu Oct 21 17:50:54 EDT 2010


Hi everyone!

I run into a problem with readProcessWithExitCode (from System.Process 
module). Basically what i want is to start an exe file, giving it some 
input on stdin and receiving the results on stdout. But id the stdin and 
out is bigger that 5000-7000 char (nondeterministically), i get 
commitAndReleaseBuffer exception and sometimes hFlush exception. I'm 
getting these errors with GHCi 6.12.3, if it matters.

Have you guys any idea what causes the problem, to how to avoid it?

Thanks
Daniel


Here is a dummy example, which produces the exception:
Haskell code:

import System.Process

test = do
     result <- sequence $ Prelude.map (\x -> runOnce x) [1..10000]
     return ()
     where
         runOnce :: Int -> IO [Int]
         runOnce i = do
             putStrLn (show i)
             a <- caller i
             b <- caller i
             return (a++b)

caller a = do
     (exit_code,stdout) <- readProcessWithExitCode "a.exe" [show a] 
(unlines (map show [1..850]))
     return (read stdout)

C code (for executable)
#include <stdio.h>
#include <complex.h>
#include <stdlib.h>


int main(int argc, char *argv[])
{

printf("[%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d]",100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, 

100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, 

100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, 

100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, 

100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, 

100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, 

100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100);

}


More information about the Haskell-Cafe mailing list