
Rafal Kolanski wrote:
Bryan O'Sullivan wrote:
What is the "it" that segfaults? The Haskell program shouldn't, at least.
The Haskell program. It does so rarely, however, and I'm unable to reproduce it with any consistency, only enough to notice something is wrong with what I've written. Upon closer examination my code also returns an error exit code for subprocesses that should've succeeded (pdflatex, but once in a blue moon also pstoedit) similarly rarely.
That said, your code for reading from child processes is wrong. You should read all of a child's output strictly (i.e. hGetContents alone will not do the trick) before you wait for its exit status. Your current scheme reverses this order, and there is hence no guarantee that it will read anything from the defunct child process. There's some possibility that this might be the cause of your segfault, which to me would suggest the presence of a bug in the runtime system.
Well, if there's a bug in the runtime system, I'll try to make sure I can reproduce it before filing a report.
Even if the bug only happens once every few runs, please report it anyway. (I've been chasing a lot of bugs like that recently :-). Cheers, Simon