diff options
author | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2009-03-09 16:16:44 -0700 |
---|---|---|
committer | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2009-03-09 16:16:44 -0700 |
commit | 1c170a597e2a7abb15aaf636a046eb9b5fb8fe5a (patch) | |
tree | f7ca1dd2a5bf38675861a94ec8b1e5b1d468d0b3 | |
parent | 920a53bfa99ea29725da9e1dbaa6bed2254416ab (diff) | |
parent | 16ecb4b5011746b7f597e1e3b783f74c5eb4da40 (diff) | |
download | quagga-1c170a597e2a7abb15aaf636a046eb9b5fb8fe5a.tar.bz2 quagga-1c170a597e2a7abb15aaf636a046eb9b5fb8fe5a.tar.xz |
Merge branch 'jenner' of 192.168.100.1:git/vyatta-quagga into jenner
-rwxr-xr-x | debian/vyatta-quagga.init.d | 2 | ||||
-rw-r--r-- | lib/log.c | 21 |
2 files changed, 16 insertions, 7 deletions
diff --git a/debian/vyatta-quagga.init.d b/debian/vyatta-quagga.init.d index c4698d10..68769709 100755 --- a/debian/vyatta-quagga.init.d +++ b/debian/vyatta-quagga.init.d @@ -64,7 +64,7 @@ vyatta_quagga_stop () log_action_begin_msg "Stopping routing services" for daemon in ${daemons[@]} ; do - log_action_cont_msg "$daemon" + [ -f $pid_dir/${daemon}.pid ] && log_action_cont_msg "$daemon" /opt/vyatta/sbin/quagga-manager stop $daemon done @@ -435,10 +435,10 @@ zlog_backtrace_sigsafe(int priority, void *program_counter) { #ifdef HAVE_STACK_TRACE static const char pclabel[] = "Program counter: "; - void *array[20]; + void *array[64]; int size; char buf[100]; - char *s; + char *s, **bt = NULL; #define LOC s,buf+sizeof(buf)-s #ifdef HAVE_GLIBC_BACKTRACE @@ -485,20 +485,29 @@ zlog_backtrace_sigsafe(int priority, void *program_counter) syslog_sigsafe(priority|zlog_default->facility,buf,s-buf); { int i; +#ifdef HAVE_GLIBC_BACKTRACE + bt = backtrace_symbols(array, size); +#endif /* Just print the function addresses. */ for (i = 0; i < size; i++) { s = buf; - s = str_append(LOC,"[bt "); - s = num_append(LOC,i); - s = str_append(LOC,"] 0x"); - s = hex_append(LOC,(u_long)(array[i])); + if (bt) + s = str_append(LOC, bt[i]); + else { + s = str_append(LOC,"[bt "); + s = num_append(LOC,i); + s = str_append(LOC,"] 0x"); + s = hex_append(LOC,(u_long)(array[i])); + } *s = '\0'; if (priority <= zlog_default->maxlvl[ZLOG_DEST_MONITOR]) vty_log_fixed(buf,s-buf); if (priority <= zlog_default->maxlvl[ZLOG_DEST_SYSLOG]) syslog_sigsafe(priority|zlog_default->facility,buf,s-buf); } + if (bt) + free(bt); } } #undef DUMP |