Posix.executeFile having problems with unevaluated argumnets
Simon Marlow
simonmar at microsoft.com
Tue Sep 17 06:13:56 EDT 2002
> 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.
I suspect this is due to a bug in executeFile in the posix library.
Currently, executeFile uses CString.vectorize to make a C array of the
arguments. CString.vectorize is totally bogus, and will result in
garbage if a GC happens in the middle of marshalling - hence it only
happens for you when the arguments are unevaluated.
Try the enclosed version of executeFile instead, it should solve the
problem.
Cheers,
Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: execfile.hs
Type: application/octet-stream
Size: 1405 bytes
Desc: execfile.hs
Url : http://www.haskell.org/pipermail/glasgow-haskell-bugs/attachments/20020917/ac48100c/execfile.obj
More information about the Glasgow-haskell-bugs
mailing list