[Mailman-Users] Re: "could not acquire qrunner lock", etc
Mike Crowe
mac at babel.fysh.org
Sat Apr 28 13:25:53 CEST 2001
On Wed, Apr 25, 2001 at 11:24:29AM +0100, I wrote:
> In any case, if the MTA was the problem I wouldn't have expected the
> qrunner process to be using lots of CPU - surely it would just be blocked
> consuming nothing?
I've done some further investigation myself by inserting syslog statements
deep into the code until I could find the bit that is "hanging".
When qrunner starts it processed a few toadmin and tolist jobs fine. It is
getting stuck on torequest jobs.
It turns out that someone had sent a huge MIME encoded attachment to the
-request address. It got stuck inside MailCommandHandler::ParseMailCommands
between the arrows appending the complete junk to the response email. I've
commented out the loop since it probably isn't all that beneficial
anyway. Maybe it would be a good idea to set an arbitrary limit on the
number of lines that will be appended to avoid this problem happening?
Alternatively, maybe messages longer than a certain number of lines should
not even be processed? In its current form it acts as quite a good DoS on a
mailman list.
if not self.__dispatch.has_key(cmd):
self.AddError(line, prefix='Command? ')
if self.__errors >= MAXERRORS:
self.AddError('\nToo many errors encountered; '
'the rest of the message is ignored:')
--->
for line in lines[linecount+1:]:
self.AddToResponse(line, trunc=0, prefix='> ')
<---
break
I hope my understanding of this problem is correct and the above
information is useful. I don't think I've got to the bottom of the CPU
usage problem, but this was certainly part of it.
--
Mike Crowe <mac at fysh.org>
More information about the Mailman-Users
mailing list