summaryrefslogtreecommitdiffstats
path: root/lib/memory.c
diff options
context:
space:
mode:
authorajs <ajs>2004-11-26 18:11:14 +0000
committerajs <ajs>2004-11-26 18:11:14 +0000
commit937c85d41b340152e548ba72c8f32fb8c62e3872 (patch)
tree0e7b7f85d45c378c517533e079438fa1d95436d8 /lib/memory.c
parent5d45c81605ef1a51bf35a4cbfbbd7f1749534374 (diff)
downloadquagga-937c85d41b340152e548ba72c8f32fb8c62e3872.tar.bz2
quagga-937c85d41b340152e548ba72c8f32fb8c62e3872.tar.xz
2004-11-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* log.c: (zlog_backtrace) New function to log a backtrace. (zlog_backtrace_safe) Log a backtrace in an async-signal-safe way. Unfortunately, this function does not support syslog logging yet. (zlog_signal) Move backtrace code into separate function zlog_backtrace_safe. (_zlog_assert_failed) Call zlog_backtrace before aborting. * log.h: Declare new functions zlog_backtrace and zlog_backtrace_safe. * memory.c: (zerror) Call zlog_backtrace before aborting.
Diffstat (limited to 'lib/memory.c')
-rw-r--r--lib/memory.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/memory.c b/lib/memory.c
index 6eb135f0..0d23e542 100644
--- a/lib/memory.c
+++ b/lib/memory.c
@@ -46,6 +46,11 @@ zerror (const char *fname, int type, size_t size)
zlog_err ("%s : can't allocate memory for `%s' size %d: %s\n",
fname, lookup (mstr, type), (int) size, safe_strerror(errno));
log_memstats(LOG_WARNING);
+ /* N.B. It might be preferable to call zlog_backtrace_safe here, since
+ that function should definitely be safe in an OOM condition. But
+ unfortunately zlog_backtrace_safe does not support syslog logging at
+ this time... */
+ zlog_backtrace(LOG_WARNING);
abort();
}