[Python-checkins] bpo-36867: _test_multiprocessing: avoid weak sync primitive (GH-13292)

Victor Stinner webhook-mailer at python.org
Fri May 17 14:20:31 EDT 2019


https://github.com/python/cpython/commit/cbe72d842646ded2454784679231e3d1e6252e72
commit: cbe72d842646ded2454784679231e3d1e6252e72
branch: master
author: Pierre Glaser <pierreglaser at msn.com>
committer: Victor Stinner <vstinner at redhat.com>
date: 2019-05-17T20:20:07+02:00
summary:

bpo-36867: _test_multiprocessing: avoid weak sync primitive (GH-13292)

Avoid weak sync primitive in multiprocessing resource_tracker test.

files:
M Lib/test/_test_multiprocessing.py

diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
index 772c9638337a..78ec53beb0f0 100644
--- a/Lib/test/_test_multiprocessing.py
+++ b/Lib/test/_test_multiprocessing.py
@@ -3945,11 +3945,19 @@ def test_shared_memory_cleaned_after_process_termination(self):
             # segment should not leak the given memory segment.
             p.terminate()
             p.wait()
-            time.sleep(1.0)  # wait for the OS to collect the segment
 
-            # The shared memory file was deleted.
-            with self.assertRaises(FileNotFoundError):
-                smm = shared_memory.SharedMemory(name, create=False)
+            deadline = time.monotonic() + 60
+            t = 0.1
+            while time.monotonic() < deadline:
+                time.sleep(t)
+                t = min(t*2, 5)
+                try:
+                    smm = shared_memory.SharedMemory(name, create=False)
+                except FileNotFoundError:
+                    break
+            else:
+                raise AssertionError("A SharedMemory segment was leaked after"
+                                     " a process was abruptly terminated.")
 
             if os.name == 'posix':
                 # A warning was emitted by the subprocess' own



More information about the Python-checkins mailing list