[Python-Dev] new unbounded memory leak in exception handling?
Greg Hewgill
greg at hewgill.com
Tue Nov 17 11:31:07 CET 2009
I've constructed an example program that does not leak memory in Python
2.x, but causes unbounded memory allocation in Python 3.1. Here is the
code:
import gc
import sys
class E(Exception):
def __init__(self, fn):
self.fn = fn
def call(self):
self.fn()
def f():
raise E(f)
a = E(f)
while True:
print(len(gc.get_objects()))
try:
a.call()
except E:
# get exception value in a python2/3 portable way
a = sys.exc_info()[1]
Every time through the loop, the length of gc.get_objects() increases
by 7 under Python 3.1. I believe this is a regression error, since
Python 2.x does not exhibit the same behaviour.
Can anybody confirm this?
Greg Hewgill
http://hewgill.com
More information about the Python-Dev
mailing list