blob: 92138b53b50e795cf9e5cc08108b05c37bac2841 [file] [log] [blame]
Dmitry V. Levin97c85082013-06-18 16:50:18 +00001#!/bin/sh
2
3# Ensure that strace can detach from sleeping processes.
4
5. "${srcdir=.}/init.sh"
6
7check_prog sleep
8check_prog grep
9
10set -e
11
Dmitry V. Levin3cb7a0c2013-06-18 22:31:58 +000012rm -f $LOG
13./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > $LOG &
Dmitry V. Levin97c85082013-06-18 16:50:18 +000014
Dmitry V. Levin3cb7a0c2013-06-18 22:31:58 +000015while ! [ -s $LOG ]; do
Dmitry V. Levin97c85082013-06-18 16:50:18 +000016 kill -0 $! 2> /dev/null ||
17 fail_ 'set_ptracer_any sleep failed'
Dmitry V. Levin1e0a2802013-06-18 20:51:49 +000018 $SLEEP_A_BIT
Dmitry V. Levin97c85082013-06-18 16:50:18 +000019done
Dmitry V. Levin97c85082013-06-18 16:50:18 +000020
21tracee_pid=$!
22
23cleanup()
24{
25 set +e
26 kill $tracee_pid
Dmitry V. Levin97c85082013-06-18 16:50:18 +000027 wait $tracee_pid 2> /dev/null
28}
29
Dmitry V. Levin3cb7a0c2013-06-18 22:31:58 +000030rm -f $LOG
Dmitry V. Levin97c85082013-06-18 16:50:18 +000031$STRACE -p $tracee_pid 2> $LOG &
32
33while ! grep -F "Process $tracee_pid attached" $LOG > /dev/null; do
34 kill -0 $! 2> /dev/null ||
35 { cat $LOG; cleanup; fail_ 'strace -p does not work'; }
Dmitry V. Levin1e0a2802013-06-18 20:51:49 +000036 $SLEEP_A_BIT
Dmitry V. Levin97c85082013-06-18 16:50:18 +000037done
38
39kill -INT $!
40wait $!
41
42grep -F "Process $tracee_pid detached" $LOG > /dev/null ||
43 { cat $LOG; cleanup; fail_ 'strace -p failed to detach'; }
44
Dmitry V. Levin0d7c3652013-06-19 14:57:05 +000045if [ -f /proc/self/status ]; then
46 $SLEEP_A_BIT
47 test -d /proc/$tracee_pid ||
48 { cat $LOG; cleanup; fail_ 'tracee died after detach'; }
49 grep '^State:.*S (sleeping)' < /proc/$tracee_pid/status > /dev/null || {
50 cat $LOG
51 grep '^State:' < /proc/$tracee_pid/status
52 cleanup
53 fail_ 'tracee is not sleeping after detach'
Denys Vlasenkoa8151852013-06-19 16:37:24 +020054 }
Dmitry V. Levin0d7c3652013-06-19 14:57:05 +000055fi
Denys Vlasenkoa8151852013-06-19 16:37:24 +020056
Dmitry V. Levin97c85082013-06-18 16:50:18 +000057cleanup
58exit 0