I'd be concerned about that implementation of callProcess: the forkProcess function itself is notoriously flakey, and by making the call to fork() from Haskell code instead of FFI code, there's the potential for another thread to grab control in the interim and cause trouble. You'd be better off either doing all of that work in the FFI, or (if you're willing to lose performance) make this code a wrapper around the process package.
@snoyberg says:
(source)
I'll have to look into this soon.
Anyone interested may make a Pull Request; I'll be utterly grateful.