Hi,

tonight I took the time to look at the tracebacks at SAPO pyMSNt installation. I looked at three log files from three different instances. They are running for about a month.

I recorded 4334 tracebacks in total, on 27 different code locations. The distribution looks something like this:

1       0316ae573861d9470bc3af6c804a01a211be7510
1       08114afa91d9164f7779519be597c8ea0bd76fa5
1       2ad1e3f424234d0b4497c6cf5430a771324c8c74
1       9a69950d859490c91bb3b25aaacd79916a5ba6af
1       dab8fe318e484949da25f1612f59ab6db3e90bd4
1       e6a5956083d65103c50e515637be3c2f9699d990
2       fc01d467e407cbf438442d1c9fd7d9583e079174
4       21ff9cee0b39bb57cf873d9483b5ea1ed471a41e
5       aec4baa994423a94000f03904ee262f7efe5531f
6       28f6f8ceca4105c61b871a12956eb2ea82b5d11c
6       2a494a344262ad37ec7d3a204d4d85f8e9685c26
6       5ab6e230fe57c36695a2fd181d81665231c452a0
6       cf8310a008b86d17a8f0500276a60895b1ccc8e8
7       f04fedbd6cf09dc566a4fba5dbb1a4bbefedb981
8       4aed2e247e6d069382dd489bcb07698e6f61fc2c
8       698c8594e624e728382ab5d0f6a4a6696a7cc0be
10      8a85ca8336b28b1b962118e93d56f625dcb8bddd
17      6aefef6f915d0ac78e63c4490b15ffb77d03194c
22      8f3c05a4a64facb050c5d8a4f3b3e09e4812f0fe
22      96b437afd09613d5107e12500704ccf16d86df4c
73      057b263866549ada7cb6d972f075f8fa4abc2c82
84      33e0c784ca38672cb7d21cc133c7dc646ce35cb1
102     4512a2226871163fd661d65046ee0e4d34fcf32a
124     fc50c48ee1f2d92bcc41cac263aee45e793980fc
419     aca7dd13d5da178277927461e4544664b6e59440
763     e45c0498988401c3b84c5c3c35e089b740aad5d4
2634    d65b790c31b56ef8d73ed8fddee79473036380b8

The hash is a sha1 of filename, line number and function name.

I've created each file with the attached perl script. It assumes a timestamp at the beginning of each line like the samples below. I did the histogram with:

grep -c  'Traceback' * | perl -pe 's/(.+):(\d+)/$2\t$1/' | sort -n

#!/usr/bin/perl -w
#
# Extract Tracebacks from pyMSNt logs
#

use strict;
use Digest::SHA1 qw( sha1_hex );

my @tb;

while (my $line = <>) {
  if (! @tb && $line =~ m/ Traceback \(most recent call last\):/) {
    push @tb, $line;
  }
  elsif (@tb) {
    push @tb, $line;
    if ($line =~ m/\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d+\s+$/) {
      check_tb(@tb);
      @tb = ();
    }
  }
}

sub check_tb {
  my @tb = @_;
  
  foreach my $line (reverse @tb) {
    if ($line =~ m/File "(.+?)", line (\d+), in (\S+)/) {
      my ($file, $line, $func) = ($1, $2, $3);
      $file =~ s/pymsnt\///i;
      my $tb_id = sha1_hex( join(' ', $file, $line, $func));
      if (open(my $dest, '>>', $tb_id)) {
        print $dest ">>> $file $line $func\n", @tb, "\n\n";
        close($dest);
      }
      
      last;
    }
  }
}


The top five tracebacks are:

d65b790c31b56ef8d73ed8fddee79473036380b8

2007-02-18 12:42:32.273434500 [2007-02-18 12:42:32] Traceback (most recent call last): 2007-02-18 12:42:32.273438500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msn.py", line 1382, in handle_UUX
2007-02-18 12:42:32.273440500       self._fireCallback(id)
2007-02-18 12:42:32.273441500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msn.py", line 752, in _fireCallback
2007-02-18 12:42:32.273443500       self.ids[id][0].callback(args)
2007-02-18 12:42:32.273445500 File "/usr/lib/python2.4/site- packages/twisted/internet/defer.py", line 229, in callback
2007-02-18 12:42:32.273473500       self._startRunCallbacks(result)
2007-02-18 12:42:32.273474500 File "/usr/lib/python2.4/site- packages/twisted/internet/defer.py", line 294, in _startRunCallbacks
2007-02-18 12:42:32.273477500       self._runCallbacks()
2007-02-18 12:42:32.273478500   --- <exception caught here> ---
2007-02-18 12:42:32.273480500 File "/usr/lib/python2.4/site- packages/twisted/internet/defer.py", line 307, in _runCallbacks 2007-02-18 12:42:32.273527500 self.result = callback (self.result, *args, **kw) 2007-02-18 12:42:32.273529500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msn.py", line 1631, in _cb
2007-02-18 12:42:32.273531500       self.factory.status = r[0]
2007-02-18 12:42:32.273532500 exceptions.IndexError: tuple index out of range
2007-02-18 12:42:32.273534500

I don't know enough of python for this one. It seems to me that the r array is empty, so we should probably just test for that?


e45c0498988401c3b84c5c3c35e089b740aad5d4

2007-02-08 13:50:48.981360500 [2007-02-08 13:50:48] Traceback (most recent call last): 2007-02-08 13:50:48.981364500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msn.py", line 356, in handleEndHeaders
2007-02-08 13:50:48.981367500       handler(info)
2007-02-08 13:50:48.981369500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msn.py", line 369, in login_failed 2007-02-08 13:50:48.981372500 self.deferred.callback ((LOGIN_FAILURE, unquote(info['cbtxt']))) 2007-02-08 13:50:48.981374500 File "/usr/lib/python2.4/site- packages/twisted/internet/defer.py", line 229, in callback
2007-02-08 13:50:48.981416500       self._startRunCallbacks(result)
2007-02-08 13:50:48.981418500 File "/usr/lib/python2.4/site- packages/twisted/internet/defer.py", line 294, in _startRunCallbacks
2007-02-08 13:50:48.981431500       self._runCallbacks()
2007-02-08 13:50:48.981433500   --- <exception caught here> ---
2007-02-08 13:50:48.981434500 File "/usr/lib/python2.4/site- packages/twisted/internet/defer.py", line 307, in _runCallbacks 2007-02-08 13:50:48.981442500 self.result = callback (self.result, *args, **kw) 2007-02-08 13:50:48.981444500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msn.py", line 1123, in _passportError 2007-02-08 13:50:48.981446500 self.loginFailure("Exception while authenticating: %s" % failure) 2007-02-08 13:50:48.981448500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msnw.py", line 376, in loginFailure 2007-02-08 13:50:48.981453500 self.factory.msncon.loginFailed (message) 2007-02-08 13:50:48.981466500 exceptions.AttributeError: 'NoneType' object has no attribute 'loginFailed'
2007-02-08 13:50:48.981468500

I think we just need a

                if not self.factory.msncon: return

at the beginning of function loginFailure at line 375 of src/legacy/ msn/msnw.py


aca7dd13d5da178277927461e4544664b6e59440

2007-02-08 11:06:13.792426500 [2007-02-08 11:06:13] Traceback (most recent call last): 2007-02-08 11:06:13.792430500 File "/usr/lib/python2.4/site- packages/twisted/python/log.py", line 53, in callWithLogger 2007-02-08 11:06:13.792432500 return callWithContext({"system": lp}, func, *args, **kw) 2007-02-08 11:06:13.792434500 File "/usr/lib/python2.4/site- packages/twisted/python/log.py", line 38, in callWithContext 2007-02-08 11:06:13.792436500 return context.call({ILogContext: newCtx}, func, *args, **kw) 2007-02-08 11:06:13.792438500 File "/usr/lib/python2.4/site- packages/twisted/python/context.py", line 59, in callWithContext 2007-02-08 11:06:13.792477500 return self.currentContext ().callWithContext(ctx, func, *args, **kw) 2007-02-08 11:06:13.792479500 File "/usr/lib/python2.4/site- packages/twisted/python/context.py", line 37, in callWithContext
2007-02-08 11:06:13.792481500       return func(*args,**kw)
2007-02-08 11:06:13.792483500   --- <exception caught here> ---
2007-02-08 11:06:13.792484500 File "/usr/lib/python2.4/site- packages/twisted/internet/epollreactor.py", line 199, in _doReadOrWrite
2007-02-08 11:06:13.792496500       why = selectable.doRead()
2007-02-08 11:06:13.792498500 File "/usr/lib/python2.4/site- packages/twisted/internet/tcp.py", line 348, in doRead 2007-02-08 11:06:13.792500500 return self.protocol.dataReceived (data) 2007-02-08 11:06:13.792501500 File "/usr/lib/python2.4/site- packages/twisted/protocols/basic.py", line 240, in dataReceived
2007-02-08 11:06:13.792514500       return self.rawDataReceived(data)
2007-02-08 11:06:13.792515500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msn.py", line 848, in rawDataReceived
2007-02-08 11:06:13.792517500       self.gotMessage(m)
2007-02-08 11:06:13.792519500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msnw.py", line 744, in gotMessage 2007-02-08 11:06:13.792520500 self.msncon.gotMessage (self.remoteUser, text) 2007-02-08 11:06:13.792526500 File "/servers/msn-transport/PyMSNt/ src/legacy/glue.py", line 430, in gotMessage 2007-02-08 11:06:13.792528500 self.session.sendMessage (self.jabberID, fro=source, body=text, mtype="chat") 2007-02-08 11:06:13.792530500 exceptions.AttributeError: 'NoneType' object has no attribute 'sendMessage'
2007-02-08 11:06:13.792532500

Same as the previous one, I think a
                if not self.session: return
in the gotMessage at line 425 of src/legacy/glue.py should be enough.


fc50c48ee1f2d92bcc41cac263aee45e793980fc

2007-02-08 16:26:27.767256500 [2007-02-08 16:26:27] Traceback (most recent call last): 2007-02-08 16:26:27.767259500 File "/usr/lib/python2.4/site- packages/twisted/python/log.py", line 53, in callWithLogger 2007-02-08 16:26:27.767261500 return callWithContext({"system": lp}, func, *args, **kw) 2007-02-08 16:26:27.767263500 File "/usr/lib/python2.4/site- packages/twisted/python/log.py", line 38, in callWithContext 2007-02-08 16:26:27.767265500 return context.call({ILogContext: newCtx}, func, *args, **kw) 2007-02-08 16:26:27.767267500 File "/usr/lib/python2.4/site- packages/twisted/python/context.py", line 59, in callWithContext 2007-02-08 16:26:27.767298500 return self.currentContext ().callWithContext(ctx, func, *args, **kw) 2007-02-08 16:26:27.767300500 File "/usr/lib/python2.4/site- packages/twisted/python/context.py", line 37, in callWithContext
2007-02-08 16:26:27.767302500       return func(*args,**kw)
2007-02-08 16:26:27.767304500   --- <exception caught here> ---
2007-02-08 16:26:27.767305500 File "/usr/lib/python2.4/site- packages/twisted/internet/epollreactor.py", line 199, in _doReadOrWrite
2007-02-08 16:26:27.767313500       why = selectable.doRead()
2007-02-08 16:26:27.767315500 File "/usr/lib/python2.4/site- packages/twisted/internet/tcp.py", line 348, in doRead 2007-02-08 16:26:27.767317500 return self.protocol.dataReceived (data) 2007-02-08 16:26:27.767318500 File "/usr/lib/python2.4/site- packages/twisted/protocols/basic.py", line 232, in dataReceived
2007-02-08 16:26:27.767336500       why = self.lineReceived(line)
2007-02-08 16:26:27.767337500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msn.py", line 819, in lineReceived
2007-02-08 16:26:27.767339500       try: handler(params.split(' '))
2007-02-08 16:26:27.767341500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msn.py", line 2220, in handle_ANS
2007-02-08 16:26:27.767342500       self.loggedIn()
2007-02-08 16:26:27.767348500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msnw.py", line 704, in loggedIn
2007-02-08 16:26:27.767350500       self._ready()
2007-02-08 16:26:27.767351500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msnw.py", line 671, in _ready
2007-02-08 16:26:27.767353500       self.userJoined(user)
2007-02-08 16:26:27.767354500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msnw.py", line 717, in userJoined
2007-02-08 16:26:27.767356500       self._switchToMulti(remoteUser)
2007-02-08 16:26:27.767361500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msnw.py", line 679, in _switchToMulti 2007-02-08 16:26:27.767363500 del self.msncon.switchboardSessions[self.remoteUser] 2007-02-08 16:26:27.767365500 exceptions.KeyError: '[EMAIL PROTECTED]'
2007-02-08 16:26:27.767366500

Don't know enough python on this one. It seems to me that the key is no longer present in the map. Maybe we could just test for existance?


4512a2226871163fd661d65046ee0e4d34fcf32a

2007-02-27 00:58:02.785235500 [2007-02-27 00:58:02] Traceback (most recent call last): 2007-02-27 00:58:02.785238500 File "/usr/lib/python2.4/site- packages/twisted/python/log.py", line 53, in callWithLogger 2007-02-27 00:58:02.785240500 return callWithContext({"system": lp}, func, *args, **kw) 2007-02-27 00:58:02.785242500 File "/usr/lib/python2.4/site- packages/twisted/python/log.py", line 38, in callWithContext 2007-02-27 00:58:02.785244500 return context.call({ILogContext: newCtx}, func, *args, **kw) 2007-02-27 00:58:02.785246500 File "/usr/lib/python2.4/site- packages/twisted/python/context.py", line 59, in callWithContext 2007-02-27 00:58:02.785270500 return self.currentContext ().callWithContext(ctx, func, *args, **kw) 2007-02-27 00:58:02.785272500 File "/usr/lib/python2.4/site- packages/twisted/python/context.py", line 37, in callWithContext
2007-02-27 00:58:02.785274500       return func(*args,**kw)
2007-02-27 00:58:02.785275500   --- <exception caught here> ---
2007-02-27 00:58:02.785277500 File "/usr/lib/python2.4/site- packages/twisted/internet/epollreactor.py", line 199, in _doReadOrWrite
2007-02-27 00:58:02.785284500       why = selectable.doRead()
2007-02-27 00:58:02.785286500 File "/usr/lib/python2.4/site- packages/twisted/internet/tcp.py", line 348, in doRead 2007-02-27 00:58:02.785288500 return self.protocol.dataReceived (data) 2007-02-27 00:58:02.785290500 File "/usr/lib/python2.4/site- packages/twisted/protocols/basic.py", line 240, in dataReceived
2007-02-27 00:58:02.785304500       return self.rawDataReceived(data)
2007-02-27 00:58:02.785310500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msn.py", line 849, in rawDataReceived
2007-02-27 00:58:02.785312500       self.setLineMode(extra)
2007-02-27 00:58:02.785313500 File "/usr/lib/python2.4/site- packages/twisted/protocols/basic.py", line 255, in setLineMode
2007-02-27 00:58:02.785315500       return self.dataReceived(extra)
2007-02-27 00:58:02.785320500 File "/usr/lib/python2.4/site- packages/twisted/protocols/basic.py", line 232, in dataReceived
2007-02-27 00:58:02.785322500       why = self.lineReceived(line)
2007-02-27 00:58:02.785324500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msn.py", line 805, in lineReceived 2007-02-27 00:58:02.785326500 if len(cmd) != 3: raise MSNProtocolError, "Invalid Command, %s" % repr(cmd) 2007-02-27 00:58:02.785327500 legacy.msn.msn.MSNProtocolError: Invalid Command, 'MIME-Version:'
2007-02-27 00:58:02.785353500

I think this one is more complicated... This needs more MSN protocol knowledge than I have.


33e0c784ca38672cb7d21cc133c7dc646ce35cb1

2007-02-08 10:45:27.816178500 [2007-02-08 10:45:27] Traceback (most recent call last): 2007-02-08 10:45:27.816182500 File "/servers/msn-transport/PyMSNt/ src/main.py", line 399, in main
2007-02-08 10:45:27.816184500       reactor.run()
2007-02-08 10:45:27.816185500 File "/usr/lib/python2.4/site- packages/twisted/internet/posixbase.py", line 218, in run
2007-02-08 10:45:27.816188500       self.mainLoop()
2007-02-08 10:45:27.816189500 File "/usr/lib/python2.4/site- packages/twisted/internet/posixbase.py", line 229, in mainLoop
2007-02-08 10:45:27.816191500       self.doIteration(t)
2007-02-08 10:45:27.816224500 File "/usr/lib/python2.4/site- packages/twisted/internet/epollreactor.py", line 183, in doPoll 2007-02-08 10:45:27.816226500 log.callWithLogger(selectable, _drdw, selectable, fd, event, log)
2007-02-08 10:45:27.816228500   --- <exception caught here> ---
2007-02-08 10:45:27.816230500 File "/usr/lib/python2.4/site- packages/twisted/python/log.py", line 53, in callWithLogger 2007-02-08 10:45:27.816232500 return callWithContext({"system": lp}, func, *args, **kw) 2007-02-08 10:45:27.816239500 File "/usr/lib/python2.4/site- packages/twisted/python/log.py", line 38, in callWithContext 2007-02-08 10:45:27.816246500 return context.call({ILogContext: newCtx}, func, *args, **kw) 2007-02-08 10:45:27.816248500 File "/usr/lib/python2.4/site- packages/twisted/python/context.py", line 59, in callWithContext 2007-02-08 10:45:27.816250500 return self.currentContext ().callWithContext(ctx, func, *args, **kw) 2007-02-08 10:45:27.816261500 File "/usr/lib/python2.4/site- packages/twisted/python/context.py", line 37, in callWithContext
2007-02-08 10:45:27.816263500       return func(*args,**kw)
2007-02-08 10:45:27.816264500 File "/usr/lib/python2.4/site- packages/twisted/internet/epollreactor.py", line 211, in _doReadOrWrite 2007-02-08 10:45:27.816266500 self._disconnectSelectable (selectable, why, inRead) 2007-02-08 10:45:27.816268500 File "/usr/lib/python2.4/site- packages/twisted/internet/posixbase.py", line 253, in _disconnectSelectable
2007-02-08 10:45:27.816304500       selectable.connectionLost(f)
2007-02-08 10:45:27.816305500 File "/usr/lib/python2.4/site- packages/twisted/internet/tcp.py", line 554, in connectionLost 2007-02-08 10:45:27.816307500 Connection.connectionLost(self, reason) 2007-02-08 10:45:27.816309500 File "/usr/lib/python2.4/site- packages/twisted/internet/tcp.py", line 402, in connectionLost
2007-02-08 10:45:27.816310500       protocol.connectionLost(reason)
2007-02-08 10:45:27.816316500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msnw.py", line 658, in connectionLost
2007-02-08 10:45:27.816318500       self.failedMessage(message)
2007-02-08 10:45:27.816320500 File "/servers/msn-transport/PyMSNt/ src/legacy/msn/msnw.py", line 687, in failedMessage 2007-02-08 10:45:27.816321500 self.msncon.failedMessage (self.remoteUser, text) 2007-02-08 10:45:27.816323500 File "/servers/msn-transport/PyMSNt/ src/legacy/glue.py", line 452, in failedMessage 2007-02-08 10:45:27.816334500 self.session.pytrans.statistics.stats["FailedMessageCount"] += 1 2007-02-08 10:45:27.816336500 exceptions.AttributeError: 'NoneType' object has no attribute 'pytrans'
2007-02-08 10:45:27.816338500

A simple
                if not self.session: return
at the top of failedMessage func at line 451 of src/legacy/glue.py should be enough.


I'll send the others later on.

Best regards,
--
HIId: Pedro Melo
SMTP: [EMAIL PROTECTED]
XMPP: [EMAIL PROTECTED]

_______________________________________________
py-transports mailing list
[email protected]
http://lists.modevia.com/cgi-bin/mailman/listinfo/py-transports

Reply via email to