diff --git a/lib/log.c b/lib/log.c
index e4ec7c2..55a3b05 100644
--- a/lib/log.c
+++ b/lib/log.c
@@ -443,8 +443,8 @@
 #define LOC s,buf+sizeof(buf)-s
 
 #ifdef HAVE_GLIBC_BACKTRACE
-  if (((size = backtrace(array,array_size(array)) <= 0) ||
-      ((size_t)size > array_size(array))))
+  size = backtrace(array, array_size(array));
+  if (size <= 0 || (size_t)size > array_size(array))
     return;
 
 #define DUMP(FD) { \
@@ -526,8 +526,8 @@
   int size, i;
   char **strings;
 
-  if (((size = backtrace(array,array_size(array))) <= 0) ||
-      ((size_t)size > array_size(array)))
+  size = backtrace(array, array_size(array));
+  if (size <= 0 || (size_t)size > array_size(array))
     {
       zlog_err("Cannot get backtrace, returned invalid # of frames %d "
 	       "(valid range is between 1 and %lu)",
diff --git a/tests/.gitignore b/tests/.gitignore
index 31fb70a..8d00a3d 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -29,6 +29,7 @@
 testchecksum
 testmemory
 testprivs
+testsegv
 testsig
 teststream
 testnexthopiter
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 9260a90..5e631d6 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -24,13 +24,14 @@
 TESTS_BGPD =
 endif
 
-check_PROGRAMS = testsig testbuffer testmemory heavy heavywq heavythread \
+check_PROGRAMS = testsig testsegv testbuffer testmemory heavy heavywq heavythread \
 		testprivs teststream testchecksum tabletest testnexthopiter \
 		$(TESTS_BGPD)
 
 noinst_HEADERS = prng.h
 
 testsig_SOURCES = test-sig.c
+testsegv_SOURCES = test-segv.c
 testbuffer_SOURCES = test-buffer.c
 testmemory_SOURCES = test-memory.c
 testprivs_SOURCES = test-privs.c
@@ -48,6 +49,7 @@
 testnexthopiter_SOURCES = test-nexthop-iter.c prng.c
 
 testsig_LDADD = ../lib/libzebra.la @LIBCAP@
+testsegv_LDADD = ../lib/libzebra.la @LIBCAP@
 testbuffer_LDADD = ../lib/libzebra.la @LIBCAP@
 testmemory_LDADD = ../lib/libzebra.la @LIBCAP@
 testprivs_LDADD = ../lib/libzebra.la @LIBCAP@
diff --git a/tests/test-segv.c b/tests/test-segv.c
new file mode 100644
index 0000000..55bd25a
--- /dev/null
+++ b/tests/test-segv.c
@@ -0,0 +1,61 @@
+/*
+ * SEGV / backtrace handling test.
+ *
+ * copied from test-sig.c
+ *
+ * Copyright (C) 2013 by David Lamparter, Open Source Routing.
+ * Copyright (C) 2013 by Internet Systems Consortium, Inc. ("ISC")
+ *
+ * This file is part of Quagga
+ *
+ * Quagga is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ *
+ * Quagga is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Quagga; see the file COPYING.  If not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#include <zebra.h>
+#include <sigevent.h>
+#include "lib/log.h"
+#include "lib/memory.h"
+
+struct quagga_signal_t sigs[] = 
+{
+};
+
+struct thread_master *master;
+
+int
+threadfunc (struct thread *thread)
+{
+  int *null = NULL;
+  *null += 1;
+  return 0;
+}
+
+int
+main (void)
+{
+  master = thread_master_create ();
+  signal_init (master, array_size(sigs), sigs);
+
+  zlog_default = openzlog("testsegv", ZLOG_NONE,
+                          LOG_CONS|LOG_NDELAY|LOG_PID, LOG_DAEMON);
+  zlog_set_level (NULL, ZLOG_DEST_SYSLOG, ZLOG_DISABLED);
+  zlog_set_level (NULL, ZLOG_DEST_STDOUT, LOG_DEBUG);
+  zlog_set_level (NULL, ZLOG_DEST_MONITOR, ZLOG_DISABLED);
+
+  thread_execute (master, threadfunc, 0, 0);
+
+  exit (0);
+}
