gh-104536: Improve multiprocessing.process._cleanup logic (#104537)

Fix a race condition in the internal `multiprocessing.process` cleanup
logic that could manifest as an unintended `AttributeError` when calling
`BaseProcess.close()`.

---------

Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
This commit is contained in:
Luccccifer 2023-05-22 11:48:57 +08:00 committed by GitHub
parent b9c807a260
commit ef5d00a592
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 1 deletions

View File

@ -61,7 +61,7 @@ def parent_process():
def _cleanup():
# check for processes which have finished
for p in list(_children):
if p._popen.poll() is not None:
if (child_popen := p._popen) and child_popen.poll() is not None:
_children.discard(p)
#

View File

@ -0,0 +1,3 @@
Fix a race condition in the internal :mod:`multiprocessing.process` cleanup
logic that could manifest as an unintended ``AttributeError`` when calling
``process.close()``.