rhettg / Tron

Next generation batch process scheduling and management
Other
11 stars 0 forks source link

Conch/SSH Crash on CHANNEL_REQUEST #81

Open rhettg opened 12 years ago

rhettg commented 12 years ago
Unhandled Error
Traceback (most recent call last):
 File "/usr/lib/python2.6/dist-packages/twisted/internet/selectreactor.py", line 146, in _doReadOrWrite
   why = getattr(selectable, method)()
 File "/usr/lib/python2.6/dist-packages/twisted/internet/tcp.py", line 460, in doRead
   return self.protocol.dataReceived(data)
 File "/usr/lib/python2.6/dist-packages/twisted/conch/ssh/transport.py", line 313, in dataReceived
   self.dispatchMessage(messageNum, packet[1:])
 File "/usr/lib/python2.6/dist-packages/twisted/conch/ssh/transport.py", line 335, in dispatchMessage
   messageNum, payload)
---  ---
 File "/usr/lib/python2.6/dist-packages/twisted/python/log.py", line 84, in callWithLogger
   return callWithContext({"system": lp}, func, *args, **kw)
 File "/usr/lib/python2.6/dist-packages/twisted/python/log.py", line 69, in callWithContext
   return context.call({ILogContext: newCtx}, func, *args, **kw)
 File "/usr/lib/python2.6/dist-packages/twisted/python/context.py", line 59, in callWithContext
   return self.currentContext().callWithContext(ctx, func, *args, **kw)
 File "/usr/lib/python2.6/dist-packages/twisted/python/context.py", line 37, in callWithContext
   return func(*args,**kw)
 File "/usr/lib/python2.6/dist-packages/twisted/conch/ssh/service.py", line 44, in packetReceived
   return f(packet)
 File "/usr/lib/python2.6/dist-packages/twisted/conch/ssh/connection.py", line 294, in ssh_CHANNEL_REQUEST
   channel = self.channels[localChannel]
exceptions.KeyError: 0

I don't think this is something that can be easily fixed without a patch to twisted. From what I can tell, the channel has been closed, but the remote side is still sending requests. This is server sending a request back to the client, which as far as I know can only mean a keepalive request.

So I think this is a race condition between closing a condition and getting a keepalive. Probably.