Sorry, I haven't got time to narrow this down to a test case, but here are
what I hope are the key factors:

(1) We start up applications in a child process (forked with Posix.forkProcess)
by calling Posix.executeFile, wrapped in an Exception.catch handler (to detect
errors).
(2) Both the third (arguments) and fourth argument (environment) of Posix.executeFile
are non-empty.  The environment at least requires some computation, being obtained
by prepending another setting to the result of Posix.getEnvironment.
(3) The second argument of Posix.executeFile is True.
(4) The executable of the whole compiled Haskell program is pretty big (13.6MB).
    This may be relevant because the problem I am about to describe developed quite
    suddenly yesterday afternoon, after I'd made some small changes to completely 
unrelated
    areas of the program, and the only explanation I can think of is that in some way
    the slightly increased size of the executable triggered the problem.

What happens is that the arguments and environment are somehow garbled.  This is 
surprising,
but I have good evidence for it, obtained by putting a small proxy binary between
Haskell and the environment.  For example it does

echo indefectible $* | mail ger
[the real application] $*

and although the argument should actually be -pipe, what I get mailed is my current 
PATH, or
something of the sort.  Yes I know it's hard to believe.

Fortunately I have discovered a fix.  If I insert the commands
            deepSeq (args parms) done
            deepSeq (env parms) done
just before doing executeFile (actually they are also outside the exception handler)
everything works swimmingly.  deepSeq is just that helpful utility which forces full
evaluation of its argument, and so this forces full evaluation of the arguments and
parameters.

As I have a fix, and not much spare time, I'm afraid I can't do much to fix this.
But could someone eyeball the code for Posix.executeFile and see if there's something
obviously wrong?
_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to