[Mailman-Users] Uncaught runner exception

Mark Sapiro msapiro at value.net
Mon Jun 6 22:20:53 CEST 2005

Salada, Duncan S.wrote:

>I have a problem with one of my lists.  I have 4 lists, and 3 seem to be working fine.  The fourth one worked fine for the first couple of weeks, but then started having problems.  No changes were made to the configuration during that time.  The problem is this: mail will not go out to any of the users.
>This list was configured to have only one recipient and allow anyone to post to it (sort of a spam catcher).  I've checked everything in the most applicable FAQ (http://www.python.org/cgi-bin/faqw-mm.py?req=show&file=faq03.014.htp).  In the error log, I keep getting "Uncaught runner exception: len() of unsized object" (the full log entry with Traceback is at the bottom of the email).
>I am running Mailman 2.1.4 installed from source on Solaris 6 with sendmail.
>Any help, information, suggestions would be greatly appreciated.
>==== ERROR LOG =====
>Jun 06 15:10:09 2005 (27089) Uncaught runner exception: len() of unsized object
>Jun 06 15:10:09 2005 (27089) Traceback (most recent call last):
>  File "/usr/local/mailman-2.1.4/Mailman/Queue/Runner.py", line 110, in _oneloop
>    self._onefile(msg, msgdata)
>  File "/usr/local/mailman-2.1.4/Mailman/Queue/Runner.py", line 160, in _onefile
>    keepqueued = self._dispose(mlist, msg, msgdata)
>  File "/usr/local/mailman-2.1.4/Mailman/Queue/IncomingRunner.py", line 130, in _dispose
>    more = self._dopipeline(mlist, msg, msgdata, pipeline)
>  File "/usr/local/mailman-2.1.4/Mailman/Queue/IncomingRunner.py", line 153, in _dopipeline
>    sys.modules[modname].process(mlist, msg, msgdata)
>  File "/usr/local/mailman-2.1.4/Mailman/Handlers/ToDigest.py", line 91, in process
>    send_digests(mlist, mboxfp)
>  File "/usr/local/mailman-2.1.4/Mailman/Handlers/ToDigest.py", line 132, in send_digests
>    send_i18n_digests(mlist, mboxfp)
>  File "/usr/local/mailman-2.1.4/Mailman/Handlers/ToDigest.py", line 306, in send_i18n_digests
>    msg = scrubber(mlist, msg)
>  File "/usr/local/mailman-2.1.4/Mailman/Handlers/Scrubber.py", line 262, in process
>    size = len(payload)
>TypeError: len() of unsized object
>Jun 06 15:10:09 2005 (27089) SHUNTING: 1118084879.080544+37fc5a2467c00ef900e9933a77c481ec4aa67de3
>==== END ERROR LOG =====

The error is because of a badly formed mime multipart message. The
Mailman 2.1.6 version of Scrubber.py contains the following insert
before the '    size = len(payload)'.

      # XXX Under email 2.5, it is possible that payload will be None.
      # This can happen when you have a Content-Type: multipart/* with
      # only one part and that part has two blank lines between the
      # first boundary and the end boundary.  In email 3.0 you end up
      # with a string in the payload.  I think in this case it's safe to
      # ignore the part.
      if payload is None:
      size = len(payload)

The reference to email 2.5 is the Python library email module.

These errors put the message in the shunt queue (qfiles/shunt/).
Presumably the message or some residue of it is still elsewhere,
probably in lists/<listname>/digest.mbox, causing this error to occur
for each new message.

You could install the above code in Scrubber.py. If so, be careful -
the above isn't indented the right amount and indentation counts.

Otherwise, you could try to identify the bad message in the shunt queue
and delete it and also edit digests.mbox to remove it from there too.
Then you can probably run bin/unshunt and be OK, or if you just want
to get things started again without worrying about lost messages, you
can just remove the digests.mbox and delete the messages from the
shunt queue.

Mark Sapiro <msapiro at value.net>       The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan

More information about the Mailman-Users mailing list