zombie processes

James Gray james at grayonline.id.au
Sun Jun 20 03:33:50 IST 2004


On Thu, 17 Jun 2004 08:09 pm, Julian Field wrote:
> At 08:05 17/06/2004, you wrote:
> >Julian Field wrote:
> >>At 18:42 15/06/2004, Marcel Karras wrote:
> >>>2. Whenever I send a mail, there'll be a new zombie process and ps
> >>> shows "[MailScanner <defunct>]". The mail will be scanned and
> >>> delivered just perfect but you can certainly imagine what would
> >>> happen if this server would work in a productive area rather than a
> >>> testing one.
> >>
> >>And you should find it will destroy the zombie process itself pretty
> >>quickly too.
> >
> >I've noticed this zombie process too on my Linux+exim gateways.  FreeBSD
> >seems unaffected but all the BSD gateways run sendmail.
> >
> >I know what zombies are and why they occur, but "mailscanner <defunct>"
> >is never being cleaned up.  So I did some digging that might help solve
> >why.  The following applies to all my Debian (woody) systems running
> >exim3, MailScanner 4.31.6 and McAfee.
> >
> >When MailScanner is started, it creates the parent and child instances
> >as per the config.  When a message batch is scanned for the FIRST TIME
> >by a child (each child) it spawns a zombie.  The first and subsequent
> >batches are all scanned properly, but there are no more zombies[1], and
> >the first zombie is never cleaned up.  After a while, I end up with one
> >zombie from each child, until the child is killed due to old age.  When
> >the child is killed, the zombie goes with it...until the new child reads
> >its 1st batch then the zombie returns.
>
> Are you 100% sure that the PID of the zombie process you see stays the
> same? I would expect 1 zombie per batch, but you should find the pid
> changes as it processes more batches.

Good point - I've haven't paid that much attention to the actual PID, just 
noticed the perpetual zombie.  So I kept an eye on it to see what happens 
and the sequence is always the same:

1. Start mailscanner (running with 1 child for simplicity of debugging).
2. Incoming mail picked up and processing begins
3. Mail finished scanning zombie process, $PID, left.
4. Another batch is picked up for processing
5. Zombie ($PID) from #3 is killed
6. Mail finished scanning & another zombie, this time $PID+10 is left.
7. Loop #4-#6 until MailScanner is stopped.
8. Stop MailScanner - zombie is cleaned up.

Seems the zombies ARE being cleaned up, but only when another batch is 
scanned.  After the subsequent batch is finished, a new zombie is left 
which is always 10 PID's higher than the previous (I have a ligtly loaded 
box so there's very little running in the background).

This looks like a loop problem specific to Linux and/or exim.

Let me know if there's any other info you want me to dig up :)

Cheers,

James
-- 
Bank error in your favor.  Collect $200.



More information about the MailScanner mailing list