New submission from Wang Jie <i...@i8e.net>:
I referenced an Exception object in a function and found memory usage will increase constantly in the accident. I think it may be a bug. I wrote a minimal code to reproduce it. ```py from threading import local, Thread from time import sleep l = {} def t0(): b = l.get('e') # memory usage won't increase if I remove this line try: raise Exception('1') except Exception as e: l['e'] = e def target(): while True: sleep(0.0001) t0() target() # t = Thread(target=target) # t.daemon = True # t.start() ``` I tried to execute it in IPython and got the following output: ``` In [1]: run py/ref_exception_causes_oom.py In [2]: import objgraph In [3]: objgraph.show_growth(limit=3) frame 78792 +78792 Exception 78779 +78779 traceback 78779 +78779 In [4]: objgraph.show_growth(limit=3) Exception 100862 +22083 traceback 100862 +22083 frame 100875 +22083 In [5]: objgraph.show_growth(limit=3) Exception 115963 +15101 traceback 115963 +15101 frame 115976 +15101 ``` And I tried to execute this code in python2.7 and pypy. Both of them won't occur this problem. ---------- components: Interpreter Core messages: 362873 nosy: wangjie priority: normal severity: normal status: open title: local varible referenced a Exception won't be collected in function type: resource usage versions: Python 3.7 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue39782> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com