[comp.unix.questions] Zombie processes

epidem@fennel.cc.uwa.oz.au (06/19/91)

Can anyone tell us  how to kill a ZOMBIE <EXITING> process under
SunOS 4.0.3.

Charley Chow
Public Health
UDM
University of Western Australia
NEDLANDS WA 6009

jmason2@gpu.utcs.utoronto.ca (Jamie Mason) (06/19/91)

In article <1991Jun19.103710.3404@fennel.cc.uwa.oz.au> epidem@fennel.cc.uwa.oz.au writes:
>Can anyone tell us  how to kill a ZOMBIE <EXITING> process under
>SunOS 4.0.3.

	Can anyone tell us how to kill a VAMPIRE <UNDEAD> creature under
Transylvania 4.0.3? :-)

	You *can't* kill a zombie process -- it's already dead.  When a
process dies, (either by normally or abonormally), it is not removed from
the process table until its parent has done a wait() for it.  So your
zombie <exiting> (You use TOP, I see) process *is* dead, but it's parent
has not done a wait() for it.  This *may* indicate a bug in the parent,
or perhaps the parent is just stopped.

	So how do you "kill" the zombie (i.e. remove it from the process
table)?  Afterall, this is what you need to do if the parent is off in
never-never land...

	You kill the parent.  Send the parent a TERM or a KILL, whatever
it takes to kill it (gracefully if possible).  When the parent dies,
*it's* parent will wait for it.  Furthermore, any children it had when it
died (orphans) are inherited by the INIT process (pid 1).  INIT will
promptly do a wait() for the zombie process, thus laying it to a peaceful
rest.

	Of course, if INIT has died, then there is not much you can do
about the zombie.  But if INIT has died, the zombie is the *least* of
your problems.  (un)Fortunately, the demise of INIT under SunOS causes a
Kernel panic, rebooting the system.

Jamie  ...  Lurker in the Process Table
Written On  Tuesday, June 18, 1991  at  11:55:31pm EDT

pickles@ottsun1.uucp (Clive Pickles) (06/19/91)

In article <1991Jun19.103710.3404@fennel.cc.uwa.oz.au> epidem@fennel.cc.uwa.oz.au writes:
>Can anyone tell us  how to kill a ZOMBIE <EXITING> process under
>SunOS 4.0.3.
>
>Charley Chow

Whenever we get an <EXITING> process (usually involving hung modem lines), I
just put a trace on that process' pid.  The trace connects to the process,
and then the process instantly finishes exiting.  The process is now
gone.  This has always worked for me, but other people have told me that
it often doesn't work for them.  All you can do is try.  I am running 
under SunOS 4.0.3 also.

Hope this helps.

-- 
===================================================================
= Clive Pickles - Systems Administrator MPR Teltech Ltd. (Ottawa) =
= Phone: (613) 787-4159 ------------------ E-mail: pickles@mpr.ca =
===================================================================

gwyn@smoke.brl.mil (Doug Gwyn) (06/19/91)

In article <1991Jun19.103710.3404@fennel.cc.uwa.oz.au> epidem@fennel.cc.uwa.oz.au writes:
>Can anyone tell us  how to kill a ZOMBIE <EXITING> process under
>SunOS 4.0.3.

You can't kill a zombie; it's already dead.
Its parent should wait() for it; that will lay it to rest.
If its parent dies, then the "init" process will adopt the zombie and
immediately bury it.