[master] e3e340d Trigger the panic dump handler also on sigabrt

Martin Blix Grydeland martin at varnish-software.com
Tue Aug 4 11:43:14 CEST 2015


commit e3e340d58faaa8bfb2eeed02861cb4b8be328715
Author: Martin Blix Grydeland <martin at varnish-software.com>
Date:   Tue Aug 4 10:54:54 2015 +0200

    Trigger the panic dump handler also on sigabrt
    
    This allows for a panic dump and backtrace to be produced on
    sigabrt. This is useful e.g. when using jemalloc's debug flags, which
    can through a special environment variable enable memory allocation
    consistency checks and trigger sigabrt on errors.

diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c
index 5a8a59a..e20f668 100644
--- a/bin/varnishd/cache/cache_panic.c
+++ b/bin/varnishd/cache/cache_panic.c
@@ -465,6 +465,9 @@ pan_ic(const char *func, const char *file, int line, const char *cond,
 	memset(&sa, 0, sizeof sa);
 	sa.sa_handler = SIG_DFL;
 	(void)sigaction(SIGSEGV, &sa, NULL);
+	/* Set SIGABRT back to default so the final abort() has the
+	   desired effect */
+	(void)sigaction(SIGABRT, &sa, NULL);
 
 	switch(kind) {
 	case VAS_WRONG:
diff --git a/bin/varnishd/mgt/mgt_child.c b/bin/varnishd/mgt/mgt_child.c
index 3a6890a..69c90d8 100644
--- a/bin/varnishd/mgt/mgt_child.c
+++ b/bin/varnishd/mgt/mgt_child.c
@@ -384,6 +384,7 @@ mgt_launch_child(struct cli *cli)
 			sa.sa_flags = SA_SIGINFO;
 			(void)sigaction(SIGSEGV, &sa, NULL);
 			(void)sigaction(SIGBUS, &sa, NULL);
+			(void)sigaction(SIGABRT, &sa, NULL);
 		}
 		(void)signal(SIGINT, SIG_DFL);
 		(void)signal(SIGTERM, SIG_DFL);



More information about the varnish-commit mailing list