On Sun, Mar 08, 2009 at 04:48:26PM -0500, Bob Friesenhahn wrote:
> Defunct processes are due to the parent process not doing a wait(3C) or 
> waitpid(3C) call for the process ID of the child.  Unless the parent 
> process has the signal handling for SIGCHLD set to SIG_IGN, then each child 
> process remains in the process table until the parent process has invoked 
> waitpid(3C) to obtain its exit status.
>
> A large number of defunct processes either indicates that the parent 
> process went away (e.g. crashed) or the parent process is not properly 
> designed/implemented to execute waitpid(3C) for each of the child processes 
> that it starts.  If the parent process goes away, then the child process 
> becomes owned by 'init' (PID 1).
>
I should have added that the parent doesn't die, it sticks around and it
usually gets around to cleaning up pretty fast.
Killing the parent, it took about 2 minutes to get rid of the defuncts
and starting up again it took a couple of minutes to build back about 50
running procs and 700 defuncts.
Broken code? possibly, but unfortunately not my own.

vh

Mads Toftum
-- 
http://soulfood.dk
_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

Reply via email to