STINNER Victor <vstin...@python.org> added the comment:

I converted the example into attached file mp_exit.py and I added a call to 
faulthandler to see what is going on.

Output with the master branch of Python:

vstinner@apu$ ~/python/master/python ~/mp_exit.py 
Timeout (0:00:05)!
Thread 0x00007ff40139a700 (most recent call first):
  File "/home/vstinner/python/master/Lib/multiprocessing/connection.py", line 
379 in _recv
  File "/home/vstinner/python/master/Lib/multiprocessing/connection.py", line 
414 in _recv_bytes
  File "/home/vstinner/python/master/Lib/multiprocessing/connection.py", line 
250 in recv
  File "/home/vstinner/python/master/Lib/multiprocessing/pool.py", line 576 in 
_handle_results
  File "/home/vstinner/python/master/Lib/threading.py", line 882 in run
  File "/home/vstinner/python/master/Lib/threading.py", line 944 in 
_bootstrap_inner
  File "/home/vstinner/python/master/Lib/threading.py", line 902 in _bootstrap

Thread 0x00007ff401b9b700 (most recent call first):
  File "/home/vstinner/python/master/Lib/multiprocessing/pool.py", line 528 in 
_handle_tasks
  File "/home/vstinner/python/master/Lib/threading.py", line 882 in run
  File "/home/vstinner/python/master/Lib/threading.py", line 944 in 
_bootstrap_inner
  File "/home/vstinner/python/master/Lib/threading.py", line 902 in _bootstrap

Thread 0x00007ff40239c700 (most recent call first):
  File "/home/vstinner/python/master/Lib/selectors.py", line 415 in select
  File "/home/vstinner/python/master/Lib/multiprocessing/connection.py", line 
930 in wait
  File "/home/vstinner/python/master/Lib/multiprocessing/pool.py", line 499 in 
_wait_for_updates
  File "/home/vstinner/python/master/Lib/multiprocessing/pool.py", line 519 in 
_handle_workers
  File "/home/vstinner/python/master/Lib/threading.py", line 882 in run
  File "/home/vstinner/python/master/Lib/threading.py", line 944 in 
_bootstrap_inner
  File "/home/vstinner/python/master/Lib/threading.py", line 902 in _bootstrap

Thread 0x00007ff4102cf740 (most recent call first):
  File "/home/vstinner/python/master/Lib/threading.py", line 303 in wait
  File "/home/vstinner/python/master/Lib/threading.py", line 565 in wait
  File "/home/vstinner/python/master/Lib/multiprocessing/pool.py", line 759 in 
wait
  File "/home/vstinner/python/master/Lib/multiprocessing/pool.py", line 762 in 
get
  File "/home/vstinner/python/master/Lib/multiprocessing/pool.py", line 364 in 
map
  File "/home/vstinner/mp_exit.py", line 12 in <module>


In the main process, Pool._handle_results() thread is blocked on os.read() 
which never completes, even if the child process died and so the other end of 
the pipe should be closed.

----------
Added file: https://bugs.python.org/file48603/mp_exit.py

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

Reply via email to