git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 0/5] fix deadlock in git-push

From
Jeff King <peff@peff.net>
Date
Apr 19, 2016, 22:39 UTC
Message-ID
<20160419223945.GA18055@sigill.intra.peff.net>

I ran across a deadlock today while pushing from a corrupted repository where pack-objects fails. Obviously I don't expect this to succeed, but it should not hang indefinitely.

The first patch below fixes the deadlock. Unfortunately, it turns it into a likely SIGPIPE death. Which is an improvement, but not ideal.

Patches 2 and 3 address that by fixing the way we handle SIGPIPE in async threads.

Patches 4 and 5 are cleanups to earlier topics that are enabled by the new SIGPIPE handling.

  [1/5]: send-pack: close demux pipe before finishing async process
  [2/5]: run-command: teach async threads to ignore SIGPIPE
  [3/5]: send-pack: isolate sigpipe in demuxer thread
  [4/5]: fetch-pack: isolate sigpipe in demuxer thread
  [5/5]: t5504: drop sigpipe=ok from push tests

I confirmed that after this series we still pass the stress test I outlined in

  http://article.gmane.org/gmane.comp.version-control.git/287176

So hopefully I haven't made anything worse (and that the tightening in 5/5 isn't just bringing back some test flakiness).

-Peff
Next: Jeff King
Message 1 of 10 in “fix deadlock in git-push”
  1. 0/5 fix deadlock in git-pushJeff King, Apr 19, 2016
  2. 1/5 send-pack: close demux pipe before finishing async processJeff King, Apr 19, 2016
  3. 2/5 run-command: teach async threads to ignore SIGPIPEJeff King, Apr 19, 2016
  4. Johannes SixtApr 21, 2016
  5. Jeff KingApr 21, 2016
  6. 3/5 send-pack: isolate sigpipe in demuxer threadJeff King, Apr 19, 2016
  7. 4/5 fetch-pack: isolate sigpipe in demuxer threadJeff King, Apr 19, 2016
  8. 5/5 t5504: drop sigpipe=ok from push testsJeff King, Apr 19, 2016
  9. Junio C HamanoApr 20, 2016
  10. Jeff KingApr 20, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.