#!/bin/sh

# Ensure that strace can detach from stopped processes.

. "${srcdir=.}/init.sh"

run_prog_skip_if_failed \
	kill -0 $$

check_prog sleep

$STRACE -d -enone / > /dev/null 2> "$LOG"
if grep -F -x "PTRACE_SEIZE doesn't work" "$LOG" > /dev/null; then
	skip_ "PTRACE_SEIZE doesn't work"
fi

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
	return 0
}

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 || {
		cleanup
		dump_log_and_fail_with "$STRACE -p failed to attach"
	}
	$SLEEP_A_BIT
done

while ! grep -F -e '--- stopped by ' "$LOG" > /dev/null; do
	kill -0 $! 2> /dev/null || {
		cleanup
		dump_log_and_fail_with "$STRACE -p missed stop notifications"
	}
	$SLEEP_A_BIT
done

kill -INT $!
wait $!

grep -F "Process $tracee_pid detached" "$LOG" > /dev/null || {
	cleanup
	dump_log_and_fail_with "$STRACE -p failed to detach"
}

if [ -f /proc/self/status ]; then
	$SLEEP_A_BIT
	test -d /proc/$tracee_pid || {
		cleanup
		dump_log_and_fail_with 'tracee died after detach'
	}
	grep '^State:.*T (stopped)' < /proc/$tracee_pid/status > /dev/null || {
		grep '^State:' < /proc/$tracee_pid/status
		cleanup
		dump_log_and_fail_with 'tracee is not group-stopped after detach'
	}
fi

cleanup
exit 0
