New submission from jcflack: Python 3.3.2 (default, Dec 4 2013, 20:19:27) [GCC 4.7.3] on linux (gentoo)
Suppose we create a context manager that will fail during exit because of a simple coding error: @contextmanager def f(): try: yield 6 finally: throdbog() # woops, forgot to define this Now let's stack up a few of these: with ExitStack() as stack: i = stack.enter_context(f()) i = stack.enter_context(f()) i = stack.enter_context(f()) print(i) ... prints 6, then hangs, won't respond to ^C, can be killed. Three levels on the stack seems to be the magic number. With one or two it works as expected ("During handling of the above exception, another exception occurred", etc.). Is the ExitStack code somehow creating a circularly-linked exception structure when there are three levels? ---------- components: Library (Lib) messages: 208574 nosy: jcflack priority: normal severity: normal status: open title: ExitStack hang if enough nested exceptions type: crash versions: Python 3.3 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue20317> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com