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

mailman (python2.2) segfault



Hi,

I've got a server on which mailman's OutgoingRunner qrunner keeps dying.
Each time it tries to send a message, it gets sig 11 and is restarted.
Worse still, the message it was trying to process is vaporized.  (It has
already hit the mailman archives at this point, but is never delivered
to the mailing list's subscribers.)

This affects all lists on the site.  I've tried doing some debugging
using pdb and gdb, but haven't gotten very much info.  The best I was
able to find was the last few steps it took before it died (attached).
I wasn't able to get into an interactive backtrace to inspect anything.

At this point, I'm just putting out feelers to see if anyone else has
seen this problem and has any recommendations or canned solutions.
Also, any ideas of better fora in which to take up this hunt will be
well appreciated.

good times,
Vineet
-- 
http://www.doorstop.net/
-- 
"If we do not believe in freedom of speech for those we despise we do not
believe in it at all."  --Noam Chomsky
> /usr/lib/mailman/Mailman/Handlers/SMTPDirect.py(57)__connect()
-> self.__conn.connect(mm_cfg.SMTPHOST, mm_cfg.SMTPPORT)
(Pdb)
> /usr/lib/python2.2/smtplib.py(247)connect()
-> def connect(self, host='localhost', port = 0):
(Pdb)
> /usr/lib/python2.2/smtplib.py(257)connect()
-> """
(Pdb)
> /usr/lib/python2.2/smtplib.py(258)connect()
-> if not port and (host.find(':') == host.rfind(':')):
(Pdb)
> /usr/lib/python2.2/smtplib.py(259)connect()
-> i = host.rfind(':')
(Pdb)
> /usr/lib/python2.2/smtplib.py(260)connect()
-> if i >= 0:
(Pdb)
> /usr/lib/python2.2/smtplib.py(265)connect()
-> if not port: port = SMTP_PORT
(Pdb)
> /usr/lib/python2.2/smtplib.py(265)connect()
-> if not port: port = SMTP_PORT
(Pdb)
> /usr/lib/python2.2/smtplib.py(266)connect()
-> if self.debuglevel > 0: print 'connect:', (host, port)
(Pdb)
> /usr/lib/python2.2/smtplib.py(267)connect()
-> msg = "getaddrinfo returns an empty list"
(Pdb)
> /usr/lib/python2.2/smtplib.py(268)connect()
-> self.sock = None
(Pdb)
> /usr/lib/python2.2/smtplib.py(269)connect()
-> for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
(Pdb)
> /usr/lib/python2.2/smtplib.py(269)connect()
-> for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
(Pdb)
> /usr/lib/python2.2/smtplib.py(270)connect()
-> af, socktype, proto, canonname, sa = res
(Pdb)
> /usr/lib/python2.2/smtplib.py(271)connect()
-> try:
(Pdb)
> /usr/lib/python2.2/smtplib.py(272)connect()
-> self.sock = socket.socket(af, socktype, proto)
(Pdb)
> /usr/lib/python2.2/smtplib.py(273)connect()
-> if self.debuglevel > 0: print 'connect:', (host, port)
(Pdb)
> /usr/lib/python2.2/smtplib.py(274)connect()
-> self.sock.connect(sa)
(Pdb)
> /usr/lib/python2.2/smtplib.py(281)connect()
-> break
(Pdb)
> /usr/lib/python2.2/smtplib.py(282)connect()
-> if not self.sock:
(Pdb)
> /usr/lib/python2.2/smtplib.py(284)connect()
-> (code, msg) = self.getreply()
(Pdb)
> /usr/lib/python2.2/smtplib.py(308)getreply()
-> def getreply(self):
(Pdb)
> /usr/lib/python2.2/smtplib.py(320)getreply()
-> """
(Pdb)
> /usr/lib/python2.2/smtplib.py(321)getreply()
-> resp=[]
(Pdb)
> /usr/lib/python2.2/smtplib.py(322)getreply()
-> if self.file is None:
(Pdb)
> /usr/lib/python2.2/smtplib.py(323)getreply()
-> self.file = self.sock.makefile('rb')
(Pdb)
> /usr/lib/python2.2/smtplib.py(324)getreply()
-> while 1:
(Pdb)
> /usr/lib/python2.2/smtplib.py(324)getreply()
-> while 1:
(Pdb)
> /usr/lib/python2.2/smtplib.py(325)getreply()
-> line = self.file.readline()
(Pdb)
> /usr/lib/python2.2/smtplib.py(326)getreply()
-> if line == '':
(Pdb)
> /usr/lib/python2.2/smtplib.py(329)getreply()
-> if self.debuglevel > 0: print 'reply:', `line`
(Pdb)
> /usr/lib/python2.2/smtplib.py(330)getreply()
-> resp.append(line[4:].strip())
(Pdb)
> /usr/lib/python2.2/smtplib.py(331)getreply()
-> code=line[:3]
(Pdb)
> /usr/lib/python2.2/smtplib.py(334)getreply()
-> try:
(Pdb)
> /usr/lib/python2.2/smtplib.py(335)getreply()
-> errcode = int(code)
(Pdb)
> /usr/lib/python2.2/smtplib.py(340)getreply()
-> if line[3:4]!="-":
(Pdb)
> /usr/lib/python2.2/smtplib.py(341)getreply()
-> break
(Pdb)
> /usr/lib/python2.2/smtplib.py(343)getreply()
-> errmsg = "\n".join(resp)
(Pdb)
> /usr/lib/python2.2/smtplib.py(344)getreply()
-> if self.debuglevel > 0:
(Pdb)
> /usr/lib/python2.2/smtplib.py(346)getreply()
-> return errcode, errmsg
(Pdb)
--Return--
> /usr/lib/python2.2/smtplib.py(346)getreply()->(220, 'cotterpin.do...9:02:37 -0800')
-> return errcode, errmsg
(Pdb)
> /usr/lib/python2.2/smtplib.py(285)connect()
-> if self.debuglevel > 0: print "connect:", msg
(Pdb)
> /usr/lib/python2.2/smtplib.py(286)connect()
-> return (code, msg)
(Pdb)
--Return--
> /usr/lib/python2.2/smtplib.py(286)connect()->(220, 'cotterpin.do...9:02:37 -0800')
-> return (code, msg)
(Pdb)
> /usr/lib/mailman/Mailman/Handlers/SMTPDirect.py(58)__connect()
-> self.__numsessions = mm_cfg.SMTP_MAX_SESSIONS_PER_CONNECTION
(Pdb)
--Return--
> /usr/lib/mailman/Mailman/Handlers/SMTPDirect.py(58)__connect()->None
-> self.__numsessions = mm_cfg.SMTP_MAX_SESSIONS_PER_CONNECTION
(Pdb)
> /usr/lib/mailman/Mailman/Handlers/SMTPDirect.py(63)sendmail()
-> try:
(Pdb)
> /usr/lib/mailman/Mailman/Handlers/SMTPDirect.py(64)sendmail()
-> results = self.__conn.sendmail(envsender, recips, msgtext)
(Pdb)
> /usr/lib/python2.2/smtplib.py(563)sendmail()
-> def sendmail(self, from_addr, to_addrs, msg, mail_options=[],
(Pdb)
> /usr/lib/python2.2/smtplib.py(619)sendmail()
-> """
(Pdb)
> /usr/lib/python2.2/smtplib.py(620)sendmail()
-> if self.helo_resp is None and self.ehlo_resp is None:
(Pdb)
> /usr/lib/python2.2/smtplib.py(621)sendmail()
-> if not (200 <= self.ehlo()[0] <= 299):
(Pdb)
> /usr/lib/python2.2/smtplib.py(367)ehlo()
-> def ehlo(self, name=''):
(Pdb)
> /usr/lib/python2.2/smtplib.py(371)ehlo()
-> """
(Pdb)
> /usr/lib/python2.2/smtplib.py(372)ehlo()
-> self.esmtp_features = {}
(Pdb)
> /usr/lib/python2.2/smtplib.py(373)ehlo()
-> if name:
(Pdb)
> /usr/lib/python2.2/smtplib.py(376)ehlo()
-> self.putcmd("ehlo", socket.getfqdn())
(Pdb)
> /usr/lib/python2.2/socket.py(91)getfqdn()
-> def getfqdn(name=''):
(Pdb)
> /usr/lib/python2.2/socket.py(99)getfqdn()
-> """
(Pdb)
> /usr/lib/python2.2/socket.py(100)getfqdn()
-> name = name.strip()
(Pdb)
> /usr/lib/python2.2/socket.py(101)getfqdn()
-> if not name or name == '0.0.0.0':
(Pdb)
> /usr/lib/python2.2/socket.py(102)getfqdn()
-> name = gethostname()
(Pdb)
> /usr/lib/python2.2/socket.py(103)getfqdn()
-> try:
(Pdb)
> /usr/lib/python2.2/socket.py(104)getfqdn()
-> hostname, aliases, ipaddrs = gethostbyaddr(name)
(Pdb)
Segmentation fault

Attachment: signature.asc
Description: Digital signature


Reply to: