On Tue, Jun 14, 2016 at 11:13:54AM -0700, Junio C Hamano wrote: > Michael J Gruber <git@xxxxxxxxxxxxxxxxxxxx> writes: > > > bottom = signature->len; > > - len = strbuf_read(signature, gpg.out, 1024); > > + strbuf_read(signature, gpg.out, 1024); > > + strbuf_read(&err, gpg.err, 0); > > Hmmmm, isn't this asking for a deadlock? When GPG spews more than > what would fit in a pipe buffer to its standard error (hence gets > blocked), its standard output may not complete, and the we would get > stuck by attempting to read from gpg.out, failing to reach the other > strbuf_read() that would unblock GPG by reading from gpg.err? Yeah, it definitely is a deadlock. I think we'd need a select loop to read into multiple strbufs at once (we can't use "struct async" because that might happen in another process). -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html