[issue6647] warnings.catch_warnings is not thread-safe
report at bugs.python.org
Wed Aug 5 06:53:01 CEST 2009
New submission from Gabriel Genellina <gagsl-py2 at yahoo.com.ar>:
warnings.catch_warnings is a context manager supposed to save and
restore warnings filters, and optionally record all warnings issued.
But it does so in a completely thread-unsafe way, by replacing the
module's "showwarning" and "filters" attributes on enter, and restoring
them on exit. If the __enter__ / __exit__ calls of two threads overlap,
after leaving the last block the warnings state is not the same as the
original state, as it should be.
I don't know how to fix this, other than using locks (that could block
indefinitely) or severely restricting how catch_warnings may be used.
At least, this issue should be documented.
components: Library (Lib)
title: warnings.catch_warnings is not thread-safe
versions: Python 2.6, Python 2.7, Python 3.1, Python 3.2
Added file: http://bugs.python.org/file14654/error-warnings.py
Python tracker <report at bugs.python.org>
More information about the Python-bugs-list