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
signature.asc
Description: Digital signature