extern void _dbg_print_jcr(FILE *fp);
/* defined in plugin.c */
extern void _dbg_print_plugin(FILE *fp);
+/* defined in lockmgr.c */
+extern void dbg_print_lock(FILE *fp);
/*
* !!! WARNING !!!
{
char buf[512];
- snprintf(buf, sizeof(buf), "%s/bacula.%d.bactrace",
- working_directory, getpid());
+ snprintf(buf, sizeof(buf), "%s/%s.%d.bactrace",
+ working_directory, my_name, getpid());
FILE *fp = fopen(buf, "ab") ;
if (!fp) {
fp = stderr;
}
+
+ fprintf(stderr, "Dumping: %s\n", buf);
/* Print also B_DB and RWLOCK structure
* Can add more info about JCR with dbg_jcr_add_hook()
_dbg_print_jcr(fp);
_dbg_print_plugin(fp);
+ dbg_print_lock(fp);
if (fp != stderr) {
fclose(fp);
if (sig == SIGTERM) {
// Emsg1(M_TERM, -1, "Shutting down Bacula service: %s ...\n", my_name);
} else {
- Emsg2(M_FATAL, -1, _("Bacula interrupted by signal %d: %s\n"), sig, get_signal_name(sig));
+/* ***FIXME*** Display a message without taking any lock in the system
+ * Emsg2(M_FATAL, -1, _("Bacula interrupted by signal %d: %s\n"), sig, get_signal_name(sig));
+ */
+ fprintf(stderr, _("Bacula interrupted by signal %d: %s\n"), sig, get_signal_name(sig));
}
#ifdef TRACEBACK
bmicrosleep(30, 0);
}
fprintf(stderr, _("It looks like the traceback worked ...\n"));
+ dbg_print_bacula();
}
#endif
-
exit_handler(sig);
}
void init_stack_dump(void)
{
main_pid = getpid(); /* save main thread's pid */
+ lmgr_init_thread(); /* initialize the lockmanager stack */
}
/*