New submission from Richard Oudkerk <shibt...@gmail.com>:

Multiprocessing's process pool originally used a finalizer to shutdown the pool 
when the pool object is garbage collected.

Since the maxtasksperchild feature was added, the worker_handler thread holds a 
reference to the pool, preventing garbage collection at least until that thread 
finished.

In some cases the last reference to the pool is owned by the worker_handler 
thread, and as it exits, the finalizer is triggered.  Since the finalizer tries 
to join the worker_handler thread, an error will be raised since a thread 
cannot join itself.

It would have been better if pools had used the context manager protocol rather 
than using RAII -- see Issue #15064.

Unless/until RAII usage is fixed, a quick fix would be to just make the 
finalizer skip trying to join the current thread.

----------
messages: 163101
nosy: sbt
priority: normal
severity: normal
status: open
title: multiprocessing pool finalizer can fail if triggered in background pool 
thread
type: behavior

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue15101>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to