File operations in base and fork+exec

Edward Kmett ekmett at
Fri Jun 23 12:41:17 UTC 2017

I'd like to jump on the "this has bitten me before" bandwagon. +1


On Fri, Jun 23, 2017 at 1:49 PM, Bardur Arantsson <spam at>

> On 2017-06-23 10:46, Merijn Verstraaten wrote:
> > Hi!
> >
> > So I realise proposing backwards incompatible changes to base is tilting
> at windmills, but I just noticed that most (all?) file operations in base
> don't open files with O_CLOEXEC, which basically means that every open
> Handle/file descriptor gets leaked to every single subprocess you fork+exec
> from Haskell. This seems highly undesirable. For POSIX there appears to be
> an operation in base that disables this, but it doesn't seem to easily
> exported.
> >
> > I would like to propose that all operations in base open files with
> O_CLOEXEC by default and exposing an easy method to mark specific file
> descriptors to be preserved across exec (This can be achieved by using
> fcntl to remove the CLOEXEC bit from a specific fd).
> >
> > I'm not sure to what extent Windows behaviour is similar to POSIX, but
> in principle it should behave the same, I think.
> >
> +1. Current behavior is suboptimal for *almost* every use case and also
> highly surprising.
> Regards,
> _______________________________________________
> Libraries mailing list
> Libraries at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Libraries mailing list