Re: Procmail funnyness...



On 2001.07.31 14:47 John Anderson wrote:
> Hi there, I've been trying to setup procmail to put the Balsa Mailing
> List
> emails into their own mail box...  I still haven't gotten that to work,
> but
> I think I've found a smallish (?) problem with the way mail is filtered
> through procmail...  It seems that balsa waits for procmail to be done
> before it can do anything else...  I'll explain better...
> 
> When I try to download mail with a bad ~/.procmailrc Balsa will log onto
> my
> pop3 server, get mail, and it seems to lock itself into the transaction
> state of the pop3 session, because I think it is trying to filter each
> message through procmail the second it gets it...  I think that this is
> bad
> behaviour, because what is happening with me is that it is logging into
> my
> pop3 server, getting a message, passing it to procmail, and somewhere in
> there either balsa becomes dead, or balsa is not threaded in a way to
> handle procmail not returning (at least that's what it seems like).  So
> then balsa is locked up it seems, and it won't refresh it's display or
> anything, and I have to kill it and start over.  Of course the problem is
> that it never closed the transaction with my pop3 server, so I have to
> wait
> for at least 10 minutes (the timeout period on pop3 stuff), before I can
> try to get mail again, hoping that I fixed my procmail recipes...  Did
> all
> that make sense?  I hope that my diagnosis of what is happening isn't
> totally off...
> 
> John Anderson
> 

Pretty close . . .

There's a bug in the code that calls procmail.  It uses popen() to pipe to
procmail, but it mistakenly uses fclose() at the end.  This results in the
pipe closing and the procmail turning into a zombie.  Depending on the
complexity of your filtering, and how often you have Balsa check the mail,
you can build up a substantial number of zombie procmail (I've had upwards
of 250+ zombies over a two hour period--checking the mail every 10
minutes).  I posted a diff for the fix not to long ago, or you can grep the
sources for procmail and replace the fclose() call with the correct
pclose() call.

jmc




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]