homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author jcflack
Recipients jcflack
Date 2014年01月20日.20:08:08
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1390248489.02.0.0980821300277.issue20317@psf.upfronthosting.co.za>
In-reply-to
Content
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?
History
Date User Action Args
2014年01月20日 20:08:09jcflacksetrecipients: + jcflack
2014年01月20日 20:08:09jcflacksetmessageid: <1390248489.02.0.0980821300277.issue20317@psf.upfronthosting.co.za>
2014年01月20日 20:08:08jcflacklinkissue20317 messages
2014年01月20日 20:08:08jcflackcreate

AltStyle によって変換されたページ (->オリジナル) /