Irit Katriel <[email protected]> added the comment:
I'm pretty sure the frame locals is involved.
This leaks (not a is being re-raised, not b):
---------------------
def test_no_hang_on_context_chain_cycle2():
class A(Exception): pass
class B(Exception): pass
try:
try:
raise A()
except A as _a:
a = _a
try:
raise B()
except B as _b:
b = _b
raise a
except A:
pass
---------------------
But this doesn't leak:
---------------------
def test_no_hang_on_context_chain_cycle2():
class A(Exception): pass
class B(Exception): pass
try:
try:
raise A()
except A as _a:
a = _a
try:
raise B()
except B as _b:
pass # b = _b <== not saving b in a local
raise a
except A:
pass
---------------------
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue44895>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com