You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner │
self.run() │
File "/usr/lib/python2.7/threading.py", line 505, in run │
self.__target(*self.__args, **self.__kwargs) │
File "/home/sam/code/debugger/sts/../pox/pox/lib/recoco/recoco.py", line 574, in _threadProc │
xl.keys(), timeout ) │
File "/home/sam/code/debugger/sts/../pox/pox/lib/ioworker/io_worker.py", line 77, in fileno │
return self.socket.fileno() │
File "/usr/lib/python2.7/socket.py", line 224, in meth │
return getattr(self._sock,name)(*args) │
File "/usr/lib/python2.7/socket.py", line 170, in _dummy │
raise error(EBADF, 'Bad file descriptor') │
error: [Errno 9] Bad file descriptor
The text was updated successfully, but these errors were encountered:
The problem would seem to be that close() is being called on a worker socket while Select() either still has the socket (because close() is called from other thread or maybe another Task, for example), or close() is called on a socket that is passed back into Select().
It's not immediately clear to me how the latter could be happening, because _workers.remove() or _workers.discard() seems to be called in every place that close() is called on a worker socket.
The former is a possibility, though I don't know the io_worker code well enough to immediately say. 96b8074 fixed a similar problem by changing calls from socket.close() to socket.shutdown(), relying on recoco to close them eventually. This might work here?
Here's a stack trace from Sam:
The text was updated successfully, but these errors were encountered: