]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-91577: SharedMemory move imports out of methods (GH-91579)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 16 Jun 2022 14:07:30 +0000 (07:07 -0700)
committerGitHub <noreply@github.com>
Thu, 16 Jun 2022 14:07:30 +0000 (07:07 -0700)
SharedMemory.unlink() uses the unregister() function from resource_tracker. Previously it was imported in the method, but this can fail if the method is called during interpreter shutdown, for example when unlink is part of a __del__() method.

Moving the import to the top of the file, means that the unregister() method is available during interpreter shutdown.

The register call in SharedMemory.__init__() can also use this imported resource_tracker.
(cherry picked from commit 9a458befdd68625d088f4fea7df135a57d147deb)

Co-authored-by: samtygier <samtygier@yahoo.co.uk>
Lib/multiprocessing/shared_memory.py
Misc/NEWS.d/next/Library/2022-04-15-17-38-55.gh-issue-91577.Ah7cLL.rst [new file with mode: 0644]

index 122b3fcebf3fedd29ece099d1a64b2ef771e29f6..881f2001dd59800b020cc229b8bb78136c8db437 100644 (file)
@@ -23,6 +23,7 @@ else:
     import _posixshmem
     _USE_POSIX = True
 
+from . import resource_tracker
 
 _O_CREX = os.O_CREAT | os.O_EXCL
 
@@ -116,8 +117,7 @@ class SharedMemory:
                 self.unlink()
                 raise
 
-            from .resource_tracker import register
-            register(self._name, "shared_memory")
+            resource_tracker.register(self._name, "shared_memory")
 
         else:
 
@@ -237,9 +237,8 @@ class SharedMemory:
         called once (and only once) across all processes which have access
         to the shared memory block."""
         if _USE_POSIX and self._name:
-            from .resource_tracker import unregister
             _posixshmem.shm_unlink(self._name)
-            unregister(self._name, "shared_memory")
+            resource_tracker.unregister(self._name, "shared_memory")
 
 
 _encoding = "utf8"
diff --git a/Misc/NEWS.d/next/Library/2022-04-15-17-38-55.gh-issue-91577.Ah7cLL.rst b/Misc/NEWS.d/next/Library/2022-04-15-17-38-55.gh-issue-91577.Ah7cLL.rst
new file mode 100644 (file)
index 0000000..0f44f34
--- /dev/null
@@ -0,0 +1 @@
+Move imports in :class:`~multiprocessing.SharedMemory` methods to module level so that they can be executed late in python finalization.