Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site ulysses.UUCP
Path: utzoo!linus!gatech!ulysses!smb
From: smb@ulysses.UUCP (Steven Bellovin)
Newsgroups: net.unix-wizards
Subject: Re: killing zombies
Message-ID: <1044@ulysses.UUCP>
Date: Tue, 13-Aug-85 16:09:59 EDT
Article-I.D.: ulysses.1044
Posted: Tue Aug 13 16:09:59 1985
Date-Received: Wed, 14-Aug-85 02:56:31 EDT
References: <368@imsvax.UUCP> <564@bu-cs.UUCP> <37@cbnap.UUCP>
Organization: AT&T Bell Laboratories, Murray Hill
Lines: 11

> If the zombie is an orphan (i.e., its parent process id is 1), you
> can always clean it up by signaling init (via kill) with SIGCLD (which
> wakes up init which then cleans up all orphaned zombies).  This has worked
> for me on SRV2 (I think, it was a while ago).

If the parent process is 1, /etc/init should find it by itself; certainly,
that happens on 4.2bsd where you don't get signal races.  But the most
common cause of processes refusing to die is when they're hung in a device
close routine -- called by exit() in the kernel.  Even if you could send
it a signal -- which you can't, since all signals are ignored by that point --
it couldn't do anything except re-enter the driver close routine.