Re: Request route goes into zombie process

Kristian Soerensen (elof@image.dk)
Sat, 8 Nov 1997 06:51:22 +0100 (MET)


On Fri, 7 Nov 1997, Michael Weller wrote:
> On Thu, 6 Nov 1997, Kristian Soerensen wrote:
> > On Thu, 6 Nov 1997, Chris Bond wrote:
> > > On one of my redhat 4.2 linux boxes request-route keeps going into a
> > > zombie state. It gets that bad after 48 hours i have to reboot the box.
> > > Has anybody ever got this before, or is they a way i can get the kernel to
> > > stop request-routes as we don't use the facality. I'ved tried killall -9
> > > request-route but the zombie processes are still there
> >
> > You can't kill a zombie-proces, but it goes away when the process that
> > created it get's killed. In your case that's kerneld.
> > So kill and restart kerneld to get rid of any request-route zombies.
>
> Well, actually init (pid 1) will then inherit the zombie's of kerneld and
> get rid of them. Hence the questions arises why kerneld does not do that
> itself. Either it is a zombie itself or there is a bug or conceptional
> flaw with it. Maybe someone one the kernel list has an idea?

Kerneld has fork(2)'d request-route and not bothered to wait(2) for it to
terminate. Kerneld is still there, and the request-route which is marked
as zombie will go away as soon as kerneld do a wait(2) for it.
An easy way to force kerneld to do that is to just kill(2) it.

I'm sure this behaviour is due to a bug in some versions of either kerneld
or a shared library. I've had this problem myself sometime ago, but
can't seem to make it happen on the machine I'm using right now, with
libc.so.5.4.34, kerneld 2.0.0 and kernel 2.0.30 on a PC.

Ther's only one thing left in the requiest-route process, and that's it's
exit status. The kernel is keeping this information in the zombie, so the
parent-process can get it if it does a wait(2) call for the child-process
in question.

Only when the parent-process is dead, the then orphaned child-processes
zombies or not are adopted by init. The analogy seems to be that you can
adopt an orphan but not a child that has a living parent. The processes
that init thus adopts will run happily until their own exit(2).

Unix makes sense !

I have been reading "Unix Network Programming" by W. Richard Stevens page
61-62 to refresh my memory on this.

--- Webserver Marketshare http://www.image.dk/~elof ---
Kristian Elof Soerensen elof@image.dk 45 93 92 02