cockpit/backtrace-webservice.patch
2015-09-02 13:40:27 +02:00

73 lines
2.1 KiB
Diff

From 1d480347c730596c23a8dcb769e6e46895862c68 Mon Sep 17 00:00:00 2001
From: Stef Walter <stefw@redhat.com>
Date: Thu, 27 Aug 2015 09:38:55 +0200
Subject: [PATCH 2/2] ws: Add backtrace handler to test-webservice to debug
issues
Closes #2633
Reviewed-by: Peter <petervo@redhat.com>
---
src/common/cockpittest.c | 24 +++++++++++++++---------
src/ws/test-webservice.c | 3 +++
2 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/src/common/cockpittest.c b/src/common/cockpittest.c
index bf20b11..2aeb0ad 100644
--- a/src/common/cockpittest.c
+++ b/src/common/cockpittest.c
@@ -512,13 +512,15 @@ stack_trace (char **args)
int old_err = dup (2);
fcntl (old_err, F_SETFD, fcntl (old_err, F_GETFD) | FD_CLOEXEC);
- close (0); dup (in_fd[0]); /* set the stdin to the in pipe */
- close (1); dup (out_fd[1]); /* set the stdout to the out pipe */
-
- execvp (args[0], args); /* exec gdb */
-
- /* Print failure to original stderr */
- perror ("exec gdb failed");
+ if (dup2 (in_fd[0], 0) < 0 || dup2 (out_fd[1], 1) < 0)
+ {
+ perror ("dup fds failed");
+ }
+ else
+ {
+ execvp (args[0], args);
+ perror ("exec gdb failed");
+ }
_exit (0);
}
else if (pid == (pid_t) -1)
@@ -530,8 +532,12 @@ stack_trace (char **args)
FD_ZERO (&fdset);
FD_SET (out_fd[0], &fdset);
- write (in_fd[1], "backtrace\n", 10);
- write (in_fd[1], "quit\n", 5);
+ if (write (in_fd[1], "backtrace\n", 10) != 10 ||
+ write (in_fd[1], "quit\n", 5) != 5)
+ {
+ perror ("unable to send commands to gdb");
+ _exit (0);
+ }
idx = 0;
state = 0;
diff --git a/src/ws/test-webservice.c b/src/ws/test-webservice.c
index 0cb96b2..3a2dca8 100644
--- a/src/ws/test-webservice.c
+++ b/src/ws/test-webservice.c
@@ -2028,6 +2028,9 @@ main (int argc,
*/
g_timeout_add_seconds (1, on_hack_raise_sigchld, NULL);
+ /* Try to debug crashing during tests */
+ signal (SIGSEGV, cockpit_test_signal_backtrace);
+
/* We don't want to test the ping functionality in these tests */
cockpit_ws_ping_interval = G_MAXUINT;
--
2.4.3