New submission from Gabriel Genellina <gagsl-...@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) files: error-warnings.py messages: 91301 nosy: gagenellina severity: normal status: open title: warnings.catch_warnings is not thread-safe type: behavior 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 <rep...@bugs.python.org> <http://bugs.python.org/issue6647> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com