From 2a76f56e5a01146237add63c75d9a8ae62fa6ea2 Mon Sep 17 00:00:00 2001 From: Duane Griffin Date: Fri, 27 Jun 2025 02:18:32 +1200 Subject: [PATCH] gh-91555: add warning to docs about possibility of deadlock/infinite recursion (GH-135954) * gh-91555: add warning to docs about possibility of deadlock/infinite recursion Attempt to clarify in the documentation that care must be taken when using multiprocessing classes to implement logging since they have builtin internal logging, and hence may cause deadlock/infinite recursion. * Update Doc/library/logging.handlers.rst Co-authored-by: Vinay Sajip * Change whitespace. --------- (cherry picked from commit a4625d597f9fc2d083fbb9c22d3ffcec73b2061a) Co-authored-by: Duane Griffin Co-authored-by: Vinay Sajip --- Doc/library/logging.handlers.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Doc/library/logging.handlers.rst b/Doc/library/logging.handlers.rst index b48c5cb483dcce..c587052ae9a4a0 100644 --- a/Doc/library/logging.handlers.rst +++ b/Doc/library/logging.handlers.rst @@ -1052,6 +1052,15 @@ possible, while any potentially slow operations (such as sending an email via .. note:: If you are using :mod:`multiprocessing`, you should avoid using :class:`~queue.SimpleQueue` and instead use :class:`multiprocessing.Queue`. + .. warning:: + + The :mod:`multiprocessing` module uses an internal logger created and + accessed via :meth:`~multiprocessing.get_logger`. + :class:`multiprocessing.Queue` will log ``DEBUG`` level messages upon + items being queued. If those log messages are processed by a + :class:`QueueHandler` using the same :class:`multiprocessing.Queue` instance, + it will cause a deadlock or infinite recursion. + .. method:: emit(record) Enqueues the result of preparing the LogRecord. Should an exception