Jerry James writes:
Look at the very first code in assert_failed (emacs.c). If
fatal_error_in_progress is nonzero, then it returns. In practice,
what this means is that if we have encountered a fatal error condition
and while in the process of saving buffers and shutting down encounter
an assertion failure, we return from assert_failed and keep executing
code. That is what this patch is designed to change.
If you look at what can be executed (assuming that a wild pointer
hasn't overwritten the return address, in which case of course
anything can happen), it's the code that outputs the stack trace.
So AFAICS, what this means is that if you encounter an assertion
failure while autosaving in a fatal error (and that's really the only
place you can trigger this AFAICS), you don't get any chance of
getting a stack trace at all. Not for the original fatal error and
not for the assertion.
What is the practical problem with keeping the code as it is?
XEmacs-Beta mailing list