diff -Nurp jack-1.9.8.orig/dbus/sigsegv.c jack-1.9.8/dbus/sigsegv.c --- jack-1.9.8.orig/dbus/sigsegv.c 2011-12-19 12:54:24.000000000 +0100 +++ jack-1.9.8/dbus/sigsegv.c 2012-06-03 15:56:31.306697873 +0200 @@ -60,6 +60,7 @@ static void signal_segv(int signum, sigi static const char *si_codes[3] = {"", "SEGV_MAPERR", "SEGV_ACCERR"}; size_t i; + const char *si_code_str; ucontext_t *ucontext = (ucontext_t*)ptr; #if defined(SIGSEGV_STACK_X86) || defined(SIGSEGV_STACK_IA64) @@ -94,10 +95,14 @@ static void signal_segv(int signum, sigi jack_error("Unknown bad signal catched!"); } - jack_error("info.si_signo = %d", signum); + if (info->si_code >= 0 && info->si_code < 3) + si_code_str = si_codes[info->si_code]; + else + si_code_str = "unknown"; jack_error("info.si_signo = %d", signum); + jack_error("info.si_errno = %d", info->si_errno); jack_error("info.si_code = %d (%s)", info->si_code, si_codes[info->si_code]); - jack_error("info.si_addr = %p", info->si_addr); + jack_error("info.si_code = %d (%s)", info->si_code, si_code_str); #if !defined(__alpha__) && !defined(__ia64__) && !defined(__FreeBSD_kernel__) && !defined(__arm__) && !defined(__hppa__) && !defined(__sh__) for(i = 0; i < NGREG; i++) jack_error("reg[%02d] = 0x" REGFORMAT, i,