On Thu, Jun 06, 2013 at 10:21:47AM -0700, Junio C Hamano wrote: > > The particular deficiency is that when a signal is raise()d whose SIG_DFL > > action will cause process death (SIGTERM in this case), the > > implementation of raise() just calls exit(3). > > After a bit of web searching, it seems to me that this behaviour of > raise() is in msvcrt, and compat/mingw.c::mingw_raise() just calls > that. In other words, "the implementation of raise()" is at an even > lower level than mingw/msys, and I would agree that it is a platform > issue. Yeah, if it were mingw_raise responsible for this, I would suggest using the POSIX shell "128+sig" instead. We could potentially check for SIG_DFL[1] mingw_raise and intercept and exit there. I don't know if that would create headaches or confusion for other msys programs, though. I'd leave that up to the msysgit people to decide whether it is worth the trouble. [1] I'd use sigaction to do that on POSIX, but I would not be surprised to find that there is no support for it in msys. :) > I tried to summarize the issue for end-user documentation and came > up with this: > > The Git implementation on MinGW exits with status code 3 upon > receiving an uncaught process-terminating signal, just like any > program that link with msvcrt (Microsoft C Runtime library) > whose raise() implementation just calls exit(3). This is > different from Git on POSIX, which reports a death by receiving > a signal with the exit status code (128 + signal number). > > But when stated this way, it feels that it belongs to Msysgit > documentation, not ours, at least to me. Yeah, I think I agree. -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html