From 07230f772e90650eb8dbac444ebe629272306049 Mon Sep 17 00:00:00 2001 From: Vincent Palatin Date: Wed, 10 Jan 2018 15:09:12 +0100 Subject: Add more debugging to run_host_test If a host test fails, record the execution state of the EC host process. This is an attempt to provide a hint whether the test was blocked on I/O, if so it might be in 'D' state (but it might have recovered too late too). Signed-off-by: Vincent Palatin BRANCH=none BUG=chromium:715011 TEST=run 'make runtests -j', then run it again with TIMEOUT reduced to 1 see it fail on 'kb_scan' and 'interrupt' tests with the trace containing '*** test [...] in state Ssl+ ***' Change-Id: I4590a4b84a2aba8d385d3ef911d5d0186e8ce2e3 Reviewed-on: https://chromium-review.googlesource.com/859771 Commit-Ready: Vincent Palatin Tested-by: Vincent Palatin Reviewed-by: Randall Spangler --- util/run_host_test | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/util/run_host_test b/util/run_host_test index c130b822fb..c0482a7863 100755 --- a/util/run_host_test +++ b/util/run_host_test @@ -7,6 +7,7 @@ from cStringIO import StringIO import pexpect import signal +import subprocess import sys import time @@ -19,6 +20,8 @@ RESULT_ID_EOF = 3 EXPECT_LIST = [pexpect.TIMEOUT, 'Pass!', 'Fail!', pexpect.EOF] +PS_ARGS = ['ps', '--no-headers', '-o', 'stat', '--pid'] + class Tee(object): def __init__(self, target): self._target = target @@ -39,6 +42,10 @@ def RunOnce(test_name, log): return child.expect(EXPECT_LIST) finally: if child.isalive(): + ps_cmd = PS_ARGS + ['%d' % (child.pid)] + ps_stat = subprocess.check_output(ps_cmd).strip() + log.write('\n*** test %s process %d in state %s ***\n' % + (test_name, child.pid, ps_stat)) child.kill(signal.SIGTERM) child.read() -- cgit v1.2.1