From: Jonathan Nieder Date: Wed, 20 Feb 2013 22:01:14 GMT Subject: Re: [PATCH v3 08/19] write_or_die: raise SIGPIPE when we get EPIPE 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: >>> + 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