aboutsummaryrefslogtreecommitdiff
path: root/debug/testlib.py
diff options
context:
space:
mode:
authorTim Newsome <tim@sifive.com>2016-12-07 17:52:26 -0800
committerTim Newsome <tim@sifive.com>2016-12-07 17:52:26 -0800
commit5cf0fec72a613b5a64971c4e862b4d239471bf4b (patch)
treeb2697c5ae00d8b617f18daefb2cbefed88cd3b2d /debug/testlib.py
parent56f46aa0f9688c87ce9ebd7658e19b884b018b6b (diff)
downloadriscv-tests-5cf0fec72a613b5a64971c4e862b4d239471bf4b.zip
riscv-tests-5cf0fec72a613b5a64971c4e862b4d239471bf4b.tar.gz
riscv-tests-5cf0fec72a613b5a64971c4e862b4d239471bf4b.tar.bz2
Fix race when finding the port OpenOCD is using.
Diffstat (limited to 'debug/testlib.py')
-rw-r--r--debug/testlib.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/debug/testlib.py b/debug/testlib.py
index b8e9ad4..6b01d8d 100644
--- a/debug/testlib.py
+++ b/debug/testlib.py
@@ -165,14 +165,19 @@ class Openocd(object):
PORT_REGEX = re.compile(r'(?P<port>\d+) \(LISTEN\)')
for _ in range(MAX_ATTEMPTS):
with open(os.devnull, 'w') as devnull:
- output = subprocess.check_output([
- 'lsof',
- '-a', # Take the AND of the following selectors
- '-p{}'.format(self.process.pid), # Filter on PID
- '-iTCP', # Filter only TCP sockets
- ], stderr=devnull)
+ try:
+ output = subprocess.check_output([
+ 'lsof',
+ '-a', # Take the AND of the following selectors
+ '-p{}'.format(self.process.pid), # Filter on PID
+ '-iTCP', # Filter only TCP sockets
+ ], stderr=devnull)
+ except subprocess.CalledProcessError:
+ output = ""
matches = list(PORT_REGEX.finditer(output))
+ matches = [m for m in matches if m.group('port') not in ('6666', '4444')]
if len(matches) > 1:
+ print output
raise Exception(
"OpenOCD listening on multiple ports. Cannot uniquely "
"identify gdb server port.")