Re: [PATCH v3 08/19] write_or_die: raise SIGPIPE when we get EPIPE
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Feb 20, 2013, 22:01 UTC
- Message-ID
- <20130220220114.GB24236@google.com>
- In-Reply-To
- <20130220215845.GB817@sigill.intra.peff.net>
Jeff King wrote:
> On Wed, Feb 20, 2013 at 01:51:11PM -0800, Jonathan Nieder wrote:
Show 17 quoted lines
>>> + if (err == EPIPE) {
>>> + signal(SIGPIPE, SIG_DFL);
>>> + raise(SIGPIPE);
>>> + /* Should never happen, but just in case... */
>>> + exit(141);
>>
>> How about
>>
>> die("BUG: another thread changed SIGPIPE handling behind my back!");
>>
>> to make it easier to find and fix such problems?
>
> You mean for the "should never happen" bit, not the first part, right? I
> actually wonder if we should simply exit(141) in the first place. That
> is shell exit-code for SIGPIPE death already (so it's what our
> run_command would show us, and what anybody running us through shell
> would see).Yes, for the "should never happen" part. Raising a signal is nice because it means the wait()-ing process can see what happened by checking WIFSIGNALED(status).
Jonathan