strace/tests/detach-stopped.test
Dmitry V. Levin 123d401508 tests: rename all tests so that their names end in .test suffix
Due to automake limitations, some features work only for tests
that end in one of the suffixes listed in TEST_EXTENSIONS.

* tests/detach-running: Rename to detach-running.test.
* tests/detach-sleeping: Rename to detach-sleeping.test.
* tests/detach-stopped: Rename to detach-stopped.test.
* tests/net: Rename to net.test.
* tests/ptrace_setoptions: Rename to ptrace_setoptions.test.
* tests/qual_syscall: Rename to qual_syscall.test.
* tests/sigaction.sh: Rename to sigaction.test.
* tests/stat: Rename to stat.test.
* tests/strace-f: Rename to strace-f.test.
* tests/Makefile.am (TESTS): Update.
(LOG_COMPILER): Rename to TEST_LOG_COMPILER.
2014-02-02 16:49:41 +00:00

67 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
# Ensure that strace can detach from stopped processes.
. "${srcdir=.}/init.sh"
check_prog sleep
check_prog grep
set -e
rm -f $LOG
./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > $LOG &
while ! [ -s $LOG ]; do
kill -0 $! 2> /dev/null ||
fail_ 'set_ptracer_any sleep failed'
$SLEEP_A_BIT
done
tracee_pid=$!
kill -STOP $tracee_pid
cleanup()
{
set +e
kill $tracee_pid
kill -CONT $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
while ! grep -F -e '--- stopped by ' $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'; }
if [ -f /proc/self/status ]; then
$SLEEP_A_BIT
test -d /proc/$tracee_pid ||
{ cat $LOG; cleanup; fail_ 'tracee died after detach'; }
grep '^State:.*T (stopped)' < /proc/$tracee_pid/status > /dev/null || {
cat $LOG
grep '^State:' < /proc/$tracee_pid/status
cleanup
fail_ 'tracee is not group-stopped after detach'
}
fi
cleanup
exit 0