From cca9a68b9558e791b47ceb844a5bd57c8a2293a4 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sat, 16 Aug 2003 20:54:15 +0000 Subject: [PATCH] Cleanup, fix checkpoint output. --- stepmania/src/archutils/Unix/CrashHandler.cpp | 5 +++-- stepmania/src/archutils/Unix/CrashHandlerChild.cpp | 12 ++++++++++++ stepmania/src/archutils/Unix/CrashHandlerInternal.h | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/stepmania/src/archutils/Unix/CrashHandler.cpp b/stepmania/src/archutils/Unix/CrashHandler.cpp index 812b169b19..69b0c49227 100644 --- a/stepmania/src/archutils/Unix/CrashHandler.cpp +++ b/stepmania/src/archutils/Unix/CrashHandler.cpp @@ -102,7 +102,7 @@ static void parent_process( int to_child, void **BacktracePointers, int SignalRe } /* 6. Write CHECKPOINTs. */ - p = GetCheckpointLogs("$$"); + p = GetCheckpointLogs("\n"); size = strlen(p)+1; parent_write(to_child, &size, sizeof(size)); parent_write(to_child, p, size); @@ -387,7 +387,8 @@ static void do_backtrace(void **buf, size_t size) #warning Undefined BACKTRACE_METHOD_* static void do_backtrace(void **buf, size_t size) { - buf[0] = NULL; + buf[0] = BACKTRACE_METHOD_NOT_AVAILABLE; + buf[1] = NULL; } #endif diff --git a/stepmania/src/archutils/Unix/CrashHandlerChild.cpp b/stepmania/src/archutils/Unix/CrashHandlerChild.cpp index e9c236ed02..a8cb5e44eb 100644 --- a/stepmania/src/archutils/Unix/CrashHandlerChild.cpp +++ b/stepmania/src/archutils/Unix/CrashHandlerChild.cpp @@ -274,6 +274,18 @@ void BacktraceNames::FromAddr( void *p ) static void output_stack_trace( FILE *out, void **BacktracePointers ) { + if( BacktracePointers[0] == BACKTRACE_METHOD_NOT_AVAILABLE ) + { + fprintf( out, "No backtrace method available.\n"); + return; + } + + if( !BacktracePointers[0] ) + { + fprintf( out, "Backtrace was empty.\n"); + return; + } + for( int i = 0; BacktracePointers[i]; ++i) { BacktraceNames bn; diff --git a/stepmania/src/archutils/Unix/CrashHandlerInternal.h b/stepmania/src/archutils/Unix/CrashHandlerInternal.h index 303d246d74..509a1eaaeb 100644 --- a/stepmania/src/archutils/Unix/CrashHandlerInternal.h +++ b/stepmania/src/archutils/Unix/CrashHandlerInternal.h @@ -4,5 +4,7 @@ #define BACKTRACE_MAX_SIZE 1024 #define CHILD_MAGIC_PARAMETER "--private-do-crash-handler" +#define BACKTRACE_METHOD_NOT_AVAILABLE ((void*) -1) + #endif