Commit 707f228b authored by Antoine Pitrou's avatar Antoine Pitrou

Try harder to reap dangling threads in test.support.reap_threads().

parent c081c0c6
......@@ -24,9 +24,15 @@ import sysconfig
import logging.handlers
try:
import _thread
import _thread, threading
except ImportError:
_thread = None
threading = None
try:
import multiprocessing.process
except ImportError:
multiprocessing = None
__all__ = [
"Error", "TestFailed", "ResourceDenied", "import_module",
......@@ -1275,19 +1281,20 @@ def modules_cleanup(oldmodules):
def threading_setup():
if _thread:
return _thread._count(),
return _thread._count(), threading._dangling.copy()
else:
return 1,
return 1, ()
def threading_cleanup(nb_threads):
def threading_cleanup(*original_values):
if not _thread:
return
_MAX_COUNT = 10
for count in range(_MAX_COUNT):
n = _thread._count()
if n == nb_threads:
values = _thread._count(), threading._dangling
if values == original_values:
break
time.sleep(0.1)
gc_collect()
# XXX print a warning in case of failure?
def reap_threads(func):
......
......@@ -67,6 +67,8 @@ C-API
Tests
-----
- Try harder to reap dangling threads in test.support.reap_threads().
- Issue #12573: Add resource checks for dangling Thread and Process objects.
- Issue #12549: Correct test_platform to not fail when OS X returns 'x86_64'
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment