STINNER Victor added the comment:

Oh, by the way: keeping the exception after the except block is also a tricky 
reference leak. In Python 3, since exceptions store their traceback, this issue 
may keep a lot of objects alive too long, whereas they are expected to be 
destroyed much earlier.

When I started to investigate this issue, it took me 2 hours to begin to 
understand why so many objects were kept alive. It looks like a reference 
cycle, a reference leak, or other kind of complex memory leak. Clearing 
manually local variables (ex: "self = None" in methods) is not enough.

Python 2 has a sys.exc_clear() method which can be used to workaround this 
issue. It cannot be used in Python 3 since the function was removed in Python 3.

----------

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

Reply via email to