STINNER Victor <victor.stin...@haypocalc.com> added the comment:

Le vendredi 07 janvier 2011 à 02:19 +0000, Nadeem Vawda a écrit :
> Most of these leaks seem to stem from the fact that socket.SocketIO.close() 
> doesn't behave as documented. According to its docstring, it is meant to 
> decrement the underlying socket's refcount, and close it if the refcount 
> drops to zero. However, to do this job it calls socket._decref_socketios(), 
> which is defined as follows:
> 
>     def _decref_socketios(self):
>         if self._io_refs > 0:
>             self._io_refs -= 1
>         if self._closed:
>             self.close()
> 
> Clearly, this doesn't do what the docstring describes. Changing the second 
> conditional from "if self._closed:" to "if self._io_refs <= 0:" disposes of 
> all but one of the ResourceWarnings, but also breaks 8 tests in test_socket. 
> It seems that the tests expect a socket to remain open after all referring 
> SocketIO objects have been closed, which contradicts the docstring for 
> SocketIO.close(). I suppose I should open a separate issue for this.

Can you please open a new issue for that?

Victor

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue10512>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to