Issue 179: Unhandled error in Deferred?
Status:  New
Owner: ----
Reported by ky6uk.kun, Jun 6, 2009
I see in logs:
[2009-06-07 00:27:34] Unhandled error in Deferred:
[2009-06-07 00:27:34] Unhandled error in Deferred:

What it's error?

Jun 8, 2009
Project Member #1 r000ns...@gmail.com
Only these lines and nothing more?
Jun 9, 2009
#2 ky6uk.kun
Yes. 10-20 lines per day.
May 17, 2010
#3 Mur...@gmail.com
Same string in logs on version pyicqt-0.8.1.5:
[2010-05-17 08:17:30] Unhandled error in Deferred:
[2010-05-17 08:17:30] Unhandled error in Deferred:
[2010-05-17 08:17:30] Unhandled error in Deferred:
[2010-05-17 08:17:30] Unhandled error in Deferred:
[2010-05-17 08:17:30] Unhandled error in Deferred:
[2010-05-17 08:17:30] Unhandled error in Deferred:
[2010-05-17 08:17:30] Unhandled error in Deferred:

Jun 7, 2010
#4 frank....@gmail.com
Having the same trouble,

[2010-06-07 08:18:52] Unhandled error in Deferred:
[2010-06-07 08:18:52] Unhandled error in Deferred:

and gate appear and disappear in servise discovery every second...
Nov 16, 2010
#5 pa...@bk.ru
Same here:
[2010-11-15 22:21:45] Unhandled error in Deferred:
[2010-11-16 09:09:31] Unhandled error in Deferred:
[2010-11-16 10:44:13] Unhandled error in Deferred:

Mar 14, 2011
#6 mk.fraggod@gmail.com
Not sure if it's the same issue (previous info is clearly inconclusive), but beginning is the same:

pyicqt[1600]:  Unhandled error in Deferred:
pyicqt[1600]:  Traceback (most recent call last):
pyicqt[1600]:  File "/usr/lib64/python2.7/site-packages/pyicqt/src/tlib/oscar.py", line 663, in dataReceived
pyicqt[1600]:  state=func(flap)
pyicqt[1600]:  File "/usr/lib64/python2.7/site-packages/pyicqt/src/tlib/oscar.py", line 805, in oscar_Data
pyicqt[1600]:  d.errback(snac)
pyicqt[1600]:  File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 388, in errback
pyicqt[1600]:  self._startRunCallbacks(fail)
pyicqt[1600]:  File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 455, in _startRunCallbacks
pyicqt[1600]:  self._runCallbacks()
pyicqt[1600]:  --- <exception caught here> ---
pyicqt[1600]:  File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 542, in _runCallbacks
pyicqt[1600]:  current.result = callback(current.result, *args, **kw)
pyicqt[1600]:  File "/usr/lib64/python2.7/site-packages/pyicqt/src/tlib/oscar.py", line 2097, in _cbRequestSSI
pyicqt[1600]:  if snac[1] == 0x0f: # same SSI as we have
pyicqt[1600]:  exceptions.TypeError: 'NoneType' object is not subscriptable

Looking at the code, it looks like proper snac (not None) is passed to errback chain:

if snac[1]!=1:
		d.callback(snac)
else:
		d.errback(snac)

but is get lost somewhere on the way to _cbRequestSSI, so this code receives None:

def _cbRequestSSI(self, snac, args = ()):
		if snac[1] == 0x0f: # same SSI as we have
				return

_ebDeferredError seem to be the first errback for these deferreds and it doesn't seem to return anything and indicates a critical errors, so it looks like either adding callbacks after that errback (so they'll be processed after it with None argument) is wrong or errback itself should re-raise error (or return a Failure object) to pass it to next errback, not the callback chain.

Attached patch returns the same Failure, so further errbacks (_ebDeferredRequestSSIError) should be called in case of errors instead of callbacks (_cbRequestSSI).

pyicqt-oscar-errback-chain-fix.patch
405 bytes   View   Download