diff --git a/src/Main/bootstrap.cxx b/src/Main/bootstrap.cxx index 5d35c9825..550d028e2 100644 --- a/src/Main/bootstrap.cxx +++ b/src/Main/bootstrap.cxx @@ -139,23 +139,49 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, #if defined(__GNUC__) #include -void segfault_handler(int sig) { +#include +void segfault_handler(int signo) { void *array[128]; - size_t size, i; - char** strs; + size_t size; + + fprintf(stderr, "Error: caught signal %d:\n", signo); - // get void*'s for all entries on the stack size = backtrace(array, 128); + if (size) { + char** list = backtrace_symbols(array, size); + size_t fnlen = 256; + char* fname = (char*)malloc(fnlen); - // print out all the frames to stderr - fprintf(stderr, "Error: signal %d:\n", sig); - backtrace_symbols_fd(array, size, STDERR_FILENO); + for (size_t i=1; i