[issue45241] python REPL leaks local variables when an exception is thrown

2021-09-19 Thread Ian Henderson
Ian Henderson added the comment: Ah, you're right -- it looks like the 'objs' global is what's keeping these objects alive. Sorry for the noise. -- stage: -> resolved status: open -> closed ___ Python tracker

[issue45241] python REPL leaks local variables when an exception is thrown

2021-09-19 Thread Ronald Oussoren
Ronald Oussoren added the comment: I'd expect that there'd be at least one instance of X alive due to sys.last_value and in particular sys.last_traceback (which has a reference to the stack frame which contains references to local variables). Btw. I cannot reproduce this with Python 3.9.7 in

[issue45241] python REPL leaks local variables when an exception is thrown

2021-09-19 Thread Ian Henderson
New submission from Ian Henderson : To reproduce, copy the following code: import gc gc.collect() objs = gc.get_objects() for obj in objs: try: if isinstance(obj, X): print(obj) except NameError: class X: pass def f(): x = X() raise