[Python-3000] Exception tracebacks living too long in 3.0 (original) (raw)

Jeffrey Yasskin jyasskin at gmail.com
Sat Mar 29 06:15:19 CET 2008


If you apply the following patch to the py3k branch, you can watch test_threading fail in test_no_refcycle_through_target:

Index: Lib/threading.py

--- Lib/threading.py (revision 62033) +++ Lib/threading.py (working copy) @@ -540,6 +540,7 @@ finally: with _active_limbo_lock: self._stop()

This apparently happens because the traceback in sys.exc_info keeps the frame for the call to RunSelfFunction._run alive even though there are otherwise no references to the object. In 2.6, this is fixed by calling sys.exc_clear() before allowing the thread to be joined, but that function has gone away in 3.0. I had thought that exc_info was automatically cleared at the end of any except block that caught an exception, but apparently that isn't the case. Is this a bug in 3.0, or do we need to keep sys.exc_clear() around?

-- Namasté, Jeffrey Yasskin



More information about the Python-3000 mailing list