]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-125245: Fix race condition when importing `collections.abc` (#125415)
authorSam Gross <colesbury@gmail.com>
Thu, 24 Oct 2024 22:12:51 +0000 (18:12 -0400)
committerGitHub <noreply@github.com>
Thu, 24 Oct 2024 22:12:51 +0000 (18:12 -0400)
If multiple threads concurrently imported `collections.abc`, some of the
threads might incorrectly see the "shim" `Lib/collections/abc.py` module
instead of the correct `Lib/_collections_abc.py` module.  This affected
both the free threading build and the default GIL-enabled build.

Lib/collections/__init__.py
Lib/collections/abc.py [deleted file]
Misc/NEWS.d/next/Library/2024-10-11-00-40-13.gh-issue-125245.8vReM-.rst [new file with mode: 0644]

index b47e728484c8acf800a7b257e8910ddc44411f4a..d688141f9b183d388b454367e92556a3fb2db8d1 100644 (file)
@@ -29,6 +29,9 @@ __all__ = [
 import _collections_abc
 import sys as _sys
 
+_sys.modules['collections.abc'] = _collections_abc
+abc = _collections_abc
+
 from itertools import chain as _chain
 from itertools import repeat as _repeat
 from itertools import starmap as _starmap
diff --git a/Lib/collections/abc.py b/Lib/collections/abc.py
deleted file mode 100644 (file)
index 034ba37..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-import _collections_abc
-import sys
-sys.modules[__name__] = _collections_abc
diff --git a/Misc/NEWS.d/next/Library/2024-10-11-00-40-13.gh-issue-125245.8vReM-.rst b/Misc/NEWS.d/next/Library/2024-10-11-00-40-13.gh-issue-125245.8vReM-.rst
new file mode 100644 (file)
index 0000000..c880efe
--- /dev/null
@@ -0,0 +1,2 @@
+Fix race condition when importing :mod:`collections.abc`, which could
+incorrectly return an empty module.