Re: [Cython] [Pyrex] Pyrex exception reraise behavior

Stefan Behnel <[email protected]> Sun, 17 Aug 2008 10:18:10 +0200
Newsgroups gmane.comp.python.cython.devel,gmane.comp.python.pyrex
Message-ID <[email protected]>
Hi Greg,

Greg Ewing wrote:
> Stefan Behnel wrote:
> 
>> Greg Ewing wrote:
>>
>>> What you appear to be seeing is a leaking of the
>>> sys.exc_info() outside the scope where it would
>>> normally be available in Python.
>> Especially in Py3, where sys.exc_info() is reset when leaving the except block
>> that caught the exception.
> 
> But again, does this actually cause any problem?

Well, yes, the same problems for which the exception catching semantics were
redesigned in Py3. Leaving the exception in sys.exc_info will keep it alive
longer than necessary, even for an undefined period of time, as it will only
be deleted when the next exception is raised. In the case of an exception
raised by Python, this will keep alive all related frames in the traceback,
including their local variables etc. This can be expensive.

http://www.python.org/dev/peps/pep-0344/
http://www.python.org/dev/peps/pep-3110/

Stefan