]> granicus.if.org Git - python/commitdiff
bpo-31234: Try to fix lock_tests warning (#3557)
authorVictor Stinner <victor.stinner@gmail.com>
Wed, 13 Sep 2017 23:41:08 +0000 (16:41 -0700)
committerGitHub <noreply@github.com>
Wed, 13 Sep 2017 23:41:08 +0000 (16:41 -0700)
Try to fix the "Warning -- threading_cleanup() failed to cleanup 1
threads" warning in test.lock_tests: wait a little bit longer to give
time to the threads to complete.

Warning seen on test_thread and test_importlib.

Lib/test/lock_tests.py

index 4fa154f734d07021a698055d70e9974b6130b35c..e8fa4f999a7ce8f9c64eaba2eb25124189d12545 100644 (file)
@@ -54,6 +54,13 @@ class Bunch(object):
     def wait_for_finished(self):
         while len(self.finished) < self.n:
             _wait()
+        # Wait a little bit longer to prevent the "threading_cleanup()
+        # failed to cleanup X threads" warning. The loop above is a weak
+        # synchronization. At the C level, t_bootstrap() can still be
+        # running and so _thread.count() still accounts the "almost dead"
+        # thead.
+        for _ in range(self.n):
+            _wait()
 
     def do_finish(self):
         self._can_exit = True
@@ -304,6 +311,7 @@ class RLockTests(BaseLockTests):
             self.assertRaises(RuntimeError, lock.release)
         finally:
             b.do_finish()
+        b.wait_for_finished()
 
     def test__is_owned(self):
         lock = self.locktype()