aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mtest.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/mtest.py')
-rw-r--r--mesonbuild/mtest.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/mesonbuild/mtest.py b/mesonbuild/mtest.py
index 3d3d2f5..910136f 100644
--- a/mesonbuild/mtest.py
+++ b/mesonbuild/mtest.py
@@ -354,7 +354,18 @@ class SingleTestRunner:
# There's nothing we can do (maybe the process
# already died) so carry on.
pass
- (stdo, stde) = p.communicate()
+ try:
+ (stdo, stde) = p.communicate(timeout=1)
+ except subprocess.TimeoutExpired:
+ # An earlier kill attempt has not worked for whatever reason.
+ # Try to kill it one last time with a direct call.
+ # If the process has spawned children, they will remain around.
+ p.kill()
+ try:
+ (stdo, stde) = p.communicate(timeout=1)
+ except subprocess.TimeoutExpired:
+ stdo = b'Test process could not be killed.'
+ stde = b''
endtime = time.time()
duration = endtime - starttime
stdo = decode(stdo)