bpo-40232: _PyImport_ReInitLock() can now safely use its lock (GH-20597)

Since _PyImport_ReInitLock() now calls _PyThread_at_fork_reinit() on
the import lock, the lock is now in a known state: unlocked. It
became safe to acquire it after fork.
This commit is contained in:
Victor Stinner 2020-06-02 17:13:49 +02:00 committed by GitHub
parent 26881c8fae
commit 45b34a04a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 1 additions and 5 deletions

View File

@ -213,11 +213,7 @@ _PyImport_ReInitLock(void)
if (import_lock_level > 1) { if (import_lock_level > 1) {
/* Forked as a side effect of import */ /* Forked as a side effect of import */
unsigned long me = PyThread_get_thread_ident(); unsigned long me = PyThread_get_thread_ident();
/* The following could fail if the lock is already held, but forking as PyThread_acquire_lock(import_lock, WAIT_LOCK);
a side-effect of an import is a) rare, b) nuts, and c) difficult to
do thanks to the lock only being held when doing individual module
locks per import. */
PyThread_acquire_lock(import_lock, NOWAIT_LOCK);
import_lock_thread = me; import_lock_thread = me;
import_lock_level--; import_lock_level--;
} else { } else {