On Fri, Mar 28, 2014 at 10:07:22AM +0000, Marat Radchenko wrote: > > What > > happens if git is still writing data to the pager and the pager exits? > > Does it receive a signal of some sort? > > I'm not sure what you mean, sorry. check_pipe properly detects pager exit. > The problem is with the way it tries to die.
Right, but check_pipe shouldn't trigger in most cases on Unix because the process will be killed by SIGPIPE automatically. It's only there to catch the case where we have disabled SIGPIPE. On Windows, what happens to "yes" if you run: yes | (exit 0) On Unix, "yes" receives SIGPIPE and dies. Does it run forever on Windows? If it dies, what does the death look like (does it have a signal death, or exit with a specific code?). > > The point of the code in check_pipe is to simulate that death. So > > whatever happens to git in that case is what we would want to happen > > when we call raise(SIGPIPE). > > That's what I'm talking about. On Windows, you can't raise(SIGPIPE). > You can only raise(Windows_supported_signal) where signal is one of: > SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, SIGTERM as MSDN tells us. Right, I understand that you don't have SIGPIPE. But we want to emulate whatever happens in the case I described above. > > A possibly simpler option would be to just have the MSVC build skip the > > raise() call, and do the exit(141) that comes just after. That is > > probably close enough simulation of SIGPIPE death. > > Isn't raise(SIGTERM/SIGINT) good enough? Perhaps. It is a slight lie. We _didn't_ get a SIGTERM, and anybody looking at our exit code to find out why we died would be misled. But the most important thing is that we die and that the exit status is non-zero. -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html