init never reaping zombie processes

Hi,

My system is FC9. Currently whenever a process finishes execution it remains as a zombie process indefinitely and never dies, now under control of the init process. It appears init is never executing wait.

This is a major problem as my system is a webserver where hundreds of internal and public emails are sent daily. As a result when I last checked, there were upward of 4000 defunct sendmail processes.

Eventually the httpd was reporting memory usage errors, I suspect because the process table had no room for more PIDs. I was forced to reboot/kill init thread in order kill them all.

On boot my server has about 24mb of memory free of ~384 which can be reduced if I optimise the httpd and mysqld. Could lack of memory cause this?!

I am fairly inexperienced with Linux so any help is greatly appreciated.

Thanks

2 Replies

init cleans up zombies if their parent process dies without terminating its child processes cleanly. Your zombies sound like their parent is still running, just not 'wait'-ing its children.

Yes, it is init (PID=1) that is not wait()-ing its newly adopted zombie procs.

For example, sendmail is running and starts a new child to send a new email. The parent sendmail process does not die, however the child process gets adopted by init and remains a zombie.

I just cannot understand why this is happening

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct