drcachesim ASSERT when pipe broken
Running under drcachesim on x86, when breaking out, tracer.cpp asserts in atomic_pipe_write:
if (ipc_pipe.write((void *)pipe_start, towrite) < (ssize_t)towrite)
DR_ASSERT(false)
As a variety of situations might cause a write syscall to fail, this ought to be handled in a more robust way, with a diagnostic, cleanup and termination. In particular, make sure the subprocess is terminated and the named pipe is removed.