diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2013-06-19 10:22:18 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2013-06-19 10:22:18 +0000 |
commit | 78460f8bb2cbf5f2b9071961232abe574247ac96 (patch) | |
tree | ee35b34348f6a9431d58df9e701f6486b5e1a31b /tests | |
parent | 223e9a6f856d776ca15b099094c1218e6aaa65b1 (diff) | |
download | strace-78460f8bb2cbf5f2b9071961232abe574247ac96.tar.gz strace-78460f8bb2cbf5f2b9071961232abe574247ac96.tar.bz2 strace-78460f8bb2cbf5f2b9071961232abe574247ac96.tar.xz |
tests: ensure that strace can detach from running processes
* tests/detach-running: New test.
* tests/Makefile.am (TESTS): Add it.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 2 | ||||
-rwxr-xr-x | tests/detach-running | 45 |
2 files changed, 46 insertions, 1 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 98fda59..f8f8054 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -5,7 +5,7 @@ AM_CFLAGS = $(WARN_CFLAGS) check_PROGRAMS = net-accept-connect set_ptracer_any TESTS = ptrace_setoptions strace-f qual_syscall stat net \ - detach-sleeping detach-stopped + detach-sleeping detach-stopped detach-running LOG_COMPILER = $(srcdir)/run.sh diff --git a/tests/detach-running b/tests/detach-running new file mode 100755 index 0000000..1132e0f --- /dev/null +++ b/tests/detach-running @@ -0,0 +1,45 @@ +#!/bin/sh + +# Ensure that strace can detach from running processes. + +. "${srcdir=.}/init.sh" + +check_prog sleep +check_prog grep + +set -e + +./set_ptracer_any sh -c "echo > $LOG; while :; do :; done" > /dev/null & + +while ! [ -s $LOG ]; do + kill -0 $! 2> /dev/null || + fail_ 'set_ptracer_any sh failed' + $SLEEP_A_BIT +done + +tracee_pid=$! + +cleanup() +{ + set +e + kill $tracee_pid + wait $tracee_pid 2> /dev/null +} + +rm -f $LOG +$STRACE -p $tracee_pid 2> $LOG & + +while ! grep -F "Process $tracee_pid attached" $LOG > /dev/null; do + kill -0 $! 2> /dev/null || + { cat $LOG; cleanup; fail_ 'strace -p does not work'; } + $SLEEP_A_BIT +done + +kill -INT $! +wait $! + +grep -F "Process $tracee_pid detached" $LOG > /dev/null || + { cat $LOG; cleanup; fail_ 'strace -p failed to detach'; } + +cleanup +exit 0 |