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)
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to