From 096ae3373abac2c8b3a26a3fe33cc8bd4cbccd4e Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 13 Sep 2017 16:41:08 -0700 Subject: [PATCH] bpo-31234: Try to fix lock_tests warning (#3557) 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 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Lib/test/lock_tests.py b/Lib/test/lock_tests.py index 4fa154f734..e8fa4f999a 100644 --- a/Lib/test/lock_tests.py +++ b/Lib/test/lock_tests.py @@ -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() -- 2.50.1