]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-118413: Fix test_release_task_refs on free-threaded build (#118494)
authorSam Gross <colesbury@gmail.com>
Thu, 2 May 2024 17:41:15 +0000 (13:41 -0400)
committerGitHub <noreply@github.com>
Thu, 2 May 2024 17:41:15 +0000 (13:41 -0400)
The `time.sleep()` call should happen before the GC to give the worker
threads time to clean-up their remaining references to objs.
Additionally, use `support.gc_collect()` instead of `gc.collect()`
just in case the extra GC calls matter.

Lib/test/_test_multiprocessing.py

index 91f85990116ee7c4c69f7836b986f1047c1382b9..5fc4181a1eeadb6b3f80dd7665e5e6868d60fe19 100644 (file)
@@ -2804,7 +2804,6 @@ class _TestPool(BaseTestCase):
         # check that we indeed waited for all jobs
         self.assertGreater(time.monotonic() - t_start, 0.9)
 
-    @support.requires_gil_enabled("gh-118413: test is flaky with GIL disabled")
     def test_release_task_refs(self):
         # Issue #29861: task arguments and results should not be kept
         # alive after we are done with them.
@@ -2813,8 +2812,8 @@ class _TestPool(BaseTestCase):
         self.pool.map(identity, objs)
 
         del objs
-        gc.collect()  # For PyPy or other GCs.
         time.sleep(DELTA)  # let threaded cleanup code run
+        support.gc_collect()  # For PyPy or other GCs.
         self.assertEqual(set(wr() for wr in refs), {None})
         # With a process pool, copies of the objects are returned, check
         # they were released too.