X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Fsysdep.c;h=3caa2dcfc004dfa3573ba19c30f2844ce70dfeb4;hp=fd7441c451d460513729279c4148b470e991a65a;hb=6e9fd5f635b9eccd27c91f22b4d8690279e6c20d;hpb=9862647b1a86bf542b4d2f5a139d944f2e2ad02d diff --git a/citadel/sysdep.c b/citadel/sysdep.c index fd7441c45..3caa2dcfc 100644 --- a/citadel/sysdep.c +++ b/citadel/sysdep.c @@ -55,14 +55,26 @@ static RETSIGTYPE signal_cleanup(int signum) { int bt_size; char **bt_syms; int i; + FILE *backtrace_fp = NULL; + + if (backtrace_filename != NULL) { + backtrace_fp = fopen(backtrace_filename, "w"); + } bt_size = backtrace(bt, 1024); bt_syms = backtrace_symbols(bt, bt_size); for (i = 1; i < bt_size; i++) { syslog(LOG_DEBUG, "%s", bt_syms[i]); + if (backtrace_fp) { + fprintf(backtrace_fp, "%s\n", bt_syms[i]); + } } free(bt_syms); + if (backtrace_fp) { + fclose(backtrace_fp); + } + exit_signal = signum; server_shutting_down = 1; }