kern/175269: truss -ff doesn't detach from processes properly

Garrett Cooper yanegomi at gmail.com
Sun Jan 13 20:00:01 UTC 2013


>Number:         175269
>Category:       kern
>Synopsis:       truss -ff doesn't detach from processes properly
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jan 13 20:00:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Garrett Cooper
>Release:        10-CURRENT
>Organization:
EMC Isilon
>Environment:
FreeBSD fallout.local 10.0-CURRENT FreeBSD 10.0-CURRENT #2 r+96bb463: Tue Jan  8 00:39:55 PST 2013     root at fallout.local:/usr/obj/usr/src/sys/FALLOUT  amd64
>Description:
Things have gotten steadily better over time, but if I do something like exec a program with truss like:

truss -ff startx

It still gets stuck when detaching from processes when I hit ^C for instance. This has been present for several releases, so it's not a new thing, but it would be nice if this worked because it makes debugging easier in some respects compared to working with ktrace, which requires root privileges in order to function (and introduces other issues in the diagnosing process because it's running as root).
>How-To-Repeat:
$ cat rsleeper.sh 
#!/bin/sh

trap "kill -9 -$$" EXIT INT
rsleeper()
{
	if [ -z "$RECURSIVE" ]
	then
		echo going recursive
		export RECURSIVE=1
		rsleeper &
	else
		echo going non-recursive
		while :
		do
			sleep 1
		done
	fi
}
rsleeper
wait
$ ./rsleeper.sh 
going recursive
going non-recursive
^CKilled
$ ps auxww | grep sleeper
gcooper    41020   0.0  0.1  18468 10040  0  R+   11:50AM     0:00.01 grep sleeper
$ truss -ff -o log ./rsleeper.sh
going recursive
going non-recursive
^Ckill: -41022: No such process
kill: -41022: No such process
^C^C^C^C^C^Z
[1]+  Stopped                 truss -ff -o log ./rsleeper.sh
$ kill %1
$ kill %1
bash: kill: (41021) - No such process
[1]+  Done                    truss -ff -o log ./rsleeper.sh
$ ps auxww | grep sleeper
gcooper    41038   0.0  0.1  18468 10040  0  RL+  11:51AM     0:00.02 grep sleeper
>Fix:
I need to do more investigation, but my guess is that the problem lies in either the ptrace code or truss itself.

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list