bin/70803: truss wedges if child exits at the wrong moment
Robert Watson
robert at fledge.watson.org
Sat Aug 21 14:10:26 PDT 2004
>Number: 70803
>Category: bin
>Synopsis: truss wedges if child exits at the wrong moment
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Aug 21 21:10:25 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator: Robert Watson
>Release: FreeBSD 6.0-CURRENT i386
>Organization:
FreeBSD Project
>Environment:
System: FreeBSD paprika 6.0-CURRENT FreeBSD 6.0-CURRENT #0: Fri Aug 20 10:04:06 EDT 2004 rwatson at paprika:/usr/obj/usr/src/sys/PAPRIKA i386
>Description:
When truss is run on a non-present binary, the child process appears to exit
at an untimely moment sometimes leaving the parent truss process wedged.
>How-To-Repeat:
Mount procfs.
Run truss with a target program name that is not found.
paprika# truss notfound
truss: execvp notfound: No such file or directory
load: 0.48 cmd: truss 61304 [pioctl] 0.00u 0.00s 0% 772k
>Fix:
No fix attached. However, it appears to wedge in the first call to
ioctl() in the parent process following the fork() in
setup.c:setup_and_wait(). ps(1) reveals the child process is a zombie
and is marked "<defunct>". It looks like the ioctl() is not returning
S_EXIT for some reason. If I insert a sleep(5) before the call to err()
in the child, it still gets into this state, so perhaps the pioctl()
code is not being notified of a child exit, or is treating a zombie as
"still alive".
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list