Generate crash reports on die in fast-import
commit8acb3297f34fd04bb8f3a35ace3667b59236286e
authorShawn O. Pearce <spearce@spearce.org>
Fri, 3 Aug 2007 06:00:37 +0000 (3 02:00 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Sun, 19 Aug 2007 07:42:41 +0000 (19 03:42 -0400)
treefbe09a1eaa3140ce4756081d02f63c73f9885967
parentac053c02029d88c7ed4d7e92949a1586eb3f7704
Generate crash reports on die in fast-import

As fast-import is quite strict about its input and die()'s anytime
something goes wrong it can be difficult for a frontend developer
to troubleshoot why fast-import rejected their input, or to even
determine what input command it rejected.

This change introduces a custom handler for Git's die() routine.
When we receive a die() for any reason (fast-import or a lower level
core Git routine we called) the error is first dumped onto stderr
and then a more extensive crash report file is prepared in GIT_DIR.
Finally we exit the process with status 128, just like the stock
builtin die handler.

An internal flag is set to prevent any further die()'s that may be
invoked during the crash report generator from causing us to enter
into an infinite loop.  We shouldn't die() from our crash report
handler, but just in case someone makes a future code change we are
prepared to gaurd against small mistakes turning into huge problems
for the end-user.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
fast-import.c