runner: ensure MessageLoop::shutdown is invoked before Runner is destroyed
runner: avoid invoking malloc before the forking of the wrapper process, as it may deadlock
runner: enforce sane return values for waitpid
sink_test: ensure the MessageLoop is shutdown before its source destroyed
runner: restore the signal masks for SIGCHLD and SIGPIPE after fork()