diff options
| author | Mark Wielaard <[email protected]> | 2014-01-04 23:28:33 +0100 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2014-01-04 23:28:33 +0100 |
| commit | 70c3a53baa06b6cdee6e92bd673c1cf977066bc1 (patch) | |
| tree | ad91972832cd09e80015250ba72671f256ca8f1d /tests/backtrace-dwarf.c | |
| parent | 0c4a868fa4c3e2a45663a78cc6d1e31089c3b0dc (diff) | |
tests: Don't use ptrace detach stopped trick. Raise can return.
On older kernels the ptrace detach stop trick doesn't work reliably.
Just keep the child processes attached and stopped during the tests,
dwfl_linux_proc_attach will handle that fine now. Also on older kernels
raise would sometimes return anyway and cause a spurious assert. Just
ignore it.
Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'tests/backtrace-dwarf.c')
| -rw-r--r-- | tests/backtrace-dwarf.c | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/tests/backtrace-dwarf.c b/tests/backtrace-dwarf.c index 3a3e7632..f75e1202 100644 --- a/tests/backtrace-dwarf.c +++ b/tests/backtrace-dwarf.c @@ -42,7 +42,7 @@ report_pid (Dwfl *dwfl, pid_t pid) if (dwfl_report_end (dwfl, NULL, NULL) != 0) error (2, 0, "dwfl_report_end: %s", dwfl_errmsg (-1)); - result = dwfl_linux_proc_attach (dwfl, pid, false); + result = dwfl_linux_proc_attach (dwfl, pid, true); if (result < 0) error (2, 0, "dwfl_linux_proc_attach: %s", dwfl_errmsg (-1)); else if (result > 0) @@ -106,15 +106,6 @@ thread_callback (Dwfl_Thread *thread, void *thread_arg) error (1, 0, "dwfl_thread_getframes: %s", dwfl_errmsg (-1)); } -static void -ptrace_detach_stopped (pid_t pid) -{ - errno = 0; - long l = ptrace (PTRACE_DETACH, pid, NULL, (void *) (intptr_t) SIGSTOP); - assert_perror (errno); - assert (l == 0); -} - int main (int argc __attribute__ ((unused)), char **argv) { @@ -151,8 +142,6 @@ main (int argc __attribute__ ((unused)), char **argv) assert (WIFSTOPPED (status)); assert (WSTOPSIG (status) == SIGABRT); - ptrace_detach_stopped (pid); - Dwfl *dwfl = pid_to_dwfl (pid); dwfl_getthreads (dwfl, thread_callback, NULL); |
