Re: t5570-git-daemon fails with SIGPIPE on OSX
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Mar 1, 2019, 15:02 UTC
- Message-ID
- <nycvar.QRO.7.76.6.1903011557430.41@tvgsbejvaqbjf.bet>
- In-Reply-To
- <20190208195459.GA32556@sigill.intra.peff.net>
Hi Peff,
On Fri, 8 Feb 2019, Jeff King wrote:
Show 34 quoted lines
> On Fri, Feb 08, 2019 at 10:28:12AM +0100, Johannes Schindelin wrote: > > > On Fri, 8 Feb 2019, Johannes Schindelin wrote: > > > > > I just had a look at the patch you provided below (for some reason, my > > > previous search on public-inbox only turned up Gábor's mail to which you > > > responded). > > > > > > Admittedly, I do not really understand all aspects of it, but it applies, > > > still, and I kicked off a stress test here: > > > > > > https://dev.azure.com/git/git/_build/results?buildId=338 > > > > > > It seems that your patch fixes that t5570 flakiness on macOS, and more > > > importantly, addresses an important issue on macOS. > > > > > > Will play a bit more with it and keep you posted. > > > > Alas, I was fooled. *Fooled*, I say. Apparently the --stress option makes > > the script *succeed* when it fails? > > [...] > > So I am afraid that your patch does not fix the issue nor does it work > > around it. > > I think that patch does the write_or_die conversion to handle EPIPE, but > it would still need to turn off SIGPIPE for the whole process. > > So you'd also need to stick a: > > sigchain_push(SIGPIPE, SIG_IGN); > > somewhere near the start of cmd_fetch(). (There may be a less > coarse-grained place to put it, but at this point I think we're just > trying to find out whether this approach even solves the problem).
This fixes it, it seems. I let the job run with `--stress=50` and even after half an hour, it did not fail:
attempts ://git.visualstudio.com/git/_build/results?buildId=354
(I had to cancel it, I thought that `--stress=50` would stop trying after 50 runs, but I was obviously incorrect in that assumption...)
Reverting the patch made it fail within a hundred runs:
https://git.visualstudio.com/git/_build/results?buildId=356
So. Good, we have a diff that works. But you mentioned that you'd like to put it somewhere else? I am a bit unfamiliar with the code paths of `cmd_fetch()`, so I would be hard pressed to find a better spot. Any hint?
Ciao, Dscho