[Python-Dev] What is the precise problem? [was: Reference cycles in Exception.traceback] (original) (raw)
Victor Stinner victor.stinner at gmail.com
Sat Mar 8 14:01:50 CET 2014
- Previous message: [Python-Dev] What is the precise problem? [was: Reference cycles in Exception.__traceback__]
- Next message: [Python-Dev] What is the precise problem? [was: Reference cycles in Exception.__traceback__]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
2014-03-08 12:45 GMT+01:00 Antoine Pitrou <solipsis at pitrou.net>:
Attached script: neverdeleted2.py, it's almost the same but it explains better the problem. The script creates MyObject and Future objects which are never deleted. Calling gc.collect() does not break the reference cycle (between the future, the exception, traceback and frames). Stopping the event loop does not remove Future nor MyObject objects. Only exiting Python does remove the Future object. So clearly the coroutine must be kept alive by something.
It's a reference cycle. Something like that:
Future -> Exception -> Traceback -> Frames -> Local variables -> {Future, MyObject}
Victor
- Previous message: [Python-Dev] What is the precise problem? [was: Reference cycles in Exception.__traceback__]
- Next message: [Python-Dev] What is the precise problem? [was: Reference cycles in Exception.__traceback__]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]