test_init: convert SIGALRM into SIGABRT so we leave a core dump on timeout
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Fri, 20 Feb 2015 16:01:09 +0000 (16:01 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Tue, 24 Feb 2015 14:38:50 +0000 (14:38 +0000)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=89222
Reviewed-by: Philip Withnall <philip.withnall@collabora.co.uk>
test/test-utils-glib.c

index 6cffcb2..609f24e 100644 (file)
@@ -393,6 +393,14 @@ time_out (gpointer data)
   return FALSE;
 }
 
+#ifdef G_OS_UNIX
+static void
+wrap_abort (int signal)
+{
+  abort ();
+}
+#endif
+
 void
 test_init (int *argcp, char ***argvp)
 {
@@ -409,5 +417,14 @@ test_init (int *argcp, char ***argvp)
   /* The GLib main loop might not be running (we don't use it in every
    * test). Die with SIGALRM shortly after if necessary. */
   alarm (TIMEOUT + 10);
+
+  /* Get a core dump from the SIGALRM. */
+    {
+      struct sigaction act = { };
+
+      act.sa_handler = wrap_abort;
+
+      sigaction (SIGALRM, &act, NULL);
+    }
 #endif
 }