[Python-Dev] new unbounded memory leak in exception handling?
R. David Murray
rdmurray at bitdance.com
Tue Nov 17 14:40:37 CET 2009
On Tue, 17 Nov 2009 at 10:31, Greg Hewgill wrote:
> 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?
I think you want to take a look at PEP 3134. And then please file a doc
bug to have someone update the documentation of sys.exc_info, since the
advice in the warning box is no longer valid in Python 3.
--David (RDM)
More information about the Python-Dev
mailing list