tests: ensure that strace can detach from running processes
* tests/detach-running: New test. * tests/Makefile.am (TESTS): Add it.
This commit is contained in:
parent
223e9a6f85
commit
78460f8bb2
@ -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
|
||||
|
||||
|
45
tests/detach-running
Executable file
45
tests/detach-running
Executable file
@ -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
|
Loading…
x
Reference in New Issue
Block a user