mtv leaves a zombie after exit

Anthony Naggs tony at ubik.demon.co.uk
Mon May 12 22:46:48 PDT 2003


In article <200305121726.h4CHQOM7048113 at gw.catspoiler.org>, Don Lewis
<truckman at FreeBSD.org> writes
>On 12 May, Terry Lambert wrote:
>> Doug Barton wrote:
>>> For some time now on -current whenever I run mtv, it leaves a zombie after
>>> it exits:
>>> 
>>> USER     PID  PPID %CPU %MEM   VSZ  RSS STAT STARTED      TIME COMMAND
>>> doug       0     1  0.0  0.0     0    0 ZW   -         0:00.00  (mtvp)
>>> 
>>> It runs fine, displays the video fine, but it always leaves a zombie.
>> 
>> Zombies exist when the parent process fails to reap child
>> exit status.  This may be a bug in your shell.  If it's not
>> a bug in your shell, then it's a bug in kernel (probably in
>> fork_exit).
>
>In this case PPID == 1, so even if the parent process failed to reap the
>child, init should have reaped the mtvp process when the parent process
>exited.  

The parent must have exit have the child process terminated, the shell
(iirc) inherits the process.  On (at least) some Unix flavours the child
is not reaped in this case - the process is already terminated so the
shell doesn't get a SIGCHILD.  (This is mentioned, for instance, in Unix
Internals by Uresh Vahalla.)

I'm not familiar enough with FreeBSD to know whether this is the
expected behaviour.

Probably the simplest fix would be for mtv to wait() for the child mtvp
to terminate before it exits itself.

>The "ZW" state looks suspicious.  I'd expect to see just "Z".
>Maybe that's why the process isn't getting reaped.

It shouldn't have any effect.  The zombie is implicitly idle, the W just
means the system has noticed & swapped it out.


Tony


More information about the freebsd-current mailing list