mirror of
https://github.com/python/cpython.git
synced 2025-07-31 23:23:11 +00:00
Add new utility function, reap_children(), to test_support. This should
be called at the end of each test that spawns children (perhaps it should be called from regrtest instead?). This will hopefully prevent some of the unexplained failures in the buildbots (hppa and alpha) during tests that spawn children. The problems were not reproducible. There were many zombies that remained at the end of several tests. In the worst case, this shouldn't cause any more problems, though it may not help either. Time will tell.
This commit is contained in:
parent
10497c83ec
commit
b15ac3169d
14 changed files with 58 additions and 8 deletions
|
@ -475,3 +475,24 @@ def threading_cleanup(num_active, num_limbo):
|
|||
while len(threading._limbo) != num_limbo and count < _MAX_COUNT:
|
||||
count += 1
|
||||
time.sleep(0.1)
|
||||
|
||||
def reap_children():
|
||||
"""Use this function at the end of test_main() whenever sub-processes
|
||||
are started. This will help ensure that no extra children (zombies)
|
||||
stick around to hog resources and create problems when looking
|
||||
for refleaks.
|
||||
"""
|
||||
|
||||
# Reap all our dead child processes so we don't leave zombies around.
|
||||
# These hog resources and might be causing some of the buildbots to die.
|
||||
import os
|
||||
if hasattr(os, 'waitpid'):
|
||||
any_process = -1
|
||||
while True:
|
||||
try:
|
||||
# This will raise an exception on Windows. That's ok.
|
||||
pid, status = os.waitpid(any_process, os.WNOHANG)
|
||||
if pid == 0:
|
||||
break
|
||||
except:
|
||||
break
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue