We loose stdin and stdout fds here, i.e. the new process doesn't get hold on the original standard input and output streams.  Hence, it also doesn't get hold of the TTY, which breaks real-time output and curses interfaces, which rely on terminal properties.  I'd guess, that `carton exec emacs` doesn't work anymore now, does it?

I am afraid that fixing this will be rather complicated, because from the manual I guess that there is no means to pass the original fds to the subprocess :(