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