From 8f4db787d5be201aba14cd72cfcf51fb4a98fcb7 Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Wed, 30 Sep 2015 10:59:39 +0000 Subject: [PATCH] Fix TestAttachDenied on linux This test was timing out because the test inferior was forking a child, which was not terminated correctly. The test contained provisions to terminate this child, but these were no longer working. The idea was to wake up upon receiving SIGTERM and then kill the child. However, this was failing because the test first tried to use SIGHUP, which ended up killing the inferior. Fix: make sure we catch SIGHUP also. llvm-svn: 248889 --- .../process_attach/attach_denied/TestAttachDenied.py | 1 - .../functionalities/process_attach/attach_denied/main.cpp | 8 +++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lldb/test/functionalities/process_attach/attach_denied/TestAttachDenied.py b/lldb/test/functionalities/process_attach/attach_denied/TestAttachDenied.py index 65d0c235cd6b..33eb35ff3136 100644 --- a/lldb/test/functionalities/process_attach/attach_denied/TestAttachDenied.py +++ b/lldb/test/functionalities/process_attach/attach_denied/TestAttachDenied.py @@ -21,7 +21,6 @@ class AttachDeniedTestCase(TestBase): return (err, shell_command.GetStatus(), shell_command.GetOutput()) @skipIfWindows - @skipIfLinux # hanging after reviews D13124 change went in def test_attach_to_process_by_id_denied(self): """Test attach by process id denied""" self.build() diff --git a/lldb/test/functionalities/process_attach/attach_denied/main.cpp b/lldb/test/functionalities/process_attach/attach_denied/main.cpp index b4a08d12b7ef..ff1fccae4b1c 100644 --- a/lldb/test/functionalities/process_attach/attach_denied/main.cpp +++ b/lldb/test/functionalities/process_attach/attach_denied/main.cpp @@ -54,7 +54,7 @@ bool writePid (const char* file_name, const pid_t pid) return res; } -void sigterm_handler (int) +void signal_handler (int) { } @@ -75,8 +75,10 @@ int main (int argc, char const *argv[]) if (pid > 0) { - // Make pause call to return when SIGTERM is received. - signal (SIGTERM, sigterm_handler); + // Make pause call to return when a signal is received. Normally this happens when the + // test runner tries to terminate us. + signal (SIGHUP, signal_handler); + signal (SIGTERM, signal_handler); if (ptrace (ATTACH_REQUEST, pid, NULL, 0) == -1) { fprintf (stderr, "ptrace(ATTACH) failed: %s\n", strerror (errno));