From: Jeff King Date: Tue, 30 Mar 2010 22:56:29 GMT Subject: Re: [PATCH] diff: fix textconv error zombies Message-ID: <20100330225628.GB608@coredump.intra.peff.net> In-Reply-To: <201003310017.24979.j6t@kdbg.org> On Wed, Mar 31, 2010 at 12:17:24AM +0200, Johannes Sixt wrote: > This could deadlock in the theoretical case that the read() in the parent > returns an error even though the child is still writing data; the child would > hang while waiting for the pipe being drained by the parent; but the parent > would wait for the child to exit, which never happens. Doing the close() > before finish_command() avoids this situation because the child dies of > SIGPIPE. Yeah, I actually thought about that while writing the error case for strbuf_read (I do close(child.out) before finish_command). But I didn't consider it in the success case. I don't think it matters here because we will already have gotten EOF from child.out, which should mean the child is no longer writing and will not block. So I am not sure there is any deadlock, but I am fine with your version of the patch. -Peff