SIGN IN SIGN UP

gh-71936: Fix race condition in multiprocessing.Pool (GH-124973)

* gh-71936: Fix race condition in multiprocessing.Pool

Proxes of shared objects register a Finalizer in BaseProxy._incref(), and it
will call BaseProxy._decref() when it is GCed. This may cause a race condition
with Pool(maxtasksperchild=None) on Windows.

A connection would be closed and raised TypeError when a GC occurs between
_ConnectionBase._check_writable() and _ConnectionBase._send_bytes() in
_ConnectionBase.send() in the second or later task, and a new object
is allocated that shares the id() of a previously deleted one.

Instead of using the id() of the token (or the proxy), use a unique,
non-reusable number.

Co-Authored-By: Akinori Hattori <hattya@gmail.com>
P
Petr Viktorin committed
ba088c8f9cf7163b0f28c507cb1343befe21997e
Parent: 1e40c5b
Committed by GitHub <noreply@github.com> on 11/13/2024, 9:25:10 AM