bpo-36867: _test_multiprocessing: avoid weak sync primitive (GH-13292)
authorPierre Glaser <pierreglaser@msn.com>
Fri, 17 May 2019 18:20:07 +0000 (20:20 +0200)
committerVictor Stinner <vstinner@redhat.com>
Fri, 17 May 2019 18:20:07 +0000 (20:20 +0200)
Avoid weak sync primitive in multiprocessing resource_tracker test.

Lib/test/_test_multiprocessing.py

index 772c9638337ae5ee6583411cf0789ea0c53c9ee9..78ec53beb0f01d5ba62ac63626dad9a35cc1e0db 100644 (file)
@@ -3945,11 +3945,19 @@ class _TestSharedMemory(BaseTestCase):
             # 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