From d29f43bd0b4644b850e7e4cfe294ffd899bd6e6d Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sun, 13 Oct 2024 08:37:07 +0100 Subject: qemurunner: Clean up serial_lock handling Avoid "RuntimeError: release unlocked lock" since the lock shouldn't be locked even in the error path. Add a try/finally path to ensure this. (From OE-Core rev: b0732ee009ca47580d1d2ad75334f4aa50e6efd5) Signed-off-by: Richard Purdie --- meta/lib/oeqa/utils/qemurunner.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'meta/lib/oeqa') diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py index 5c3a8e5999..98a11e1a2c 100644 --- a/meta/lib/oeqa/utils/qemurunner.py +++ b/meta/lib/oeqa/utils/qemurunner.py @@ -521,7 +521,6 @@ class QemuRunner: except Exception as e: self.logger.warning('Extra log data exception %s' % repr(e)) data = None - self.thread.serial_lock.release() return False with self.thread.serial_lock: @@ -824,10 +823,12 @@ class LoggingThread(threading.Thread): self.logfunc(data, ".stdout") elif self.serialsock and self.serialsock.fileno() == fd: if self.serial_lock.acquire(blocking=False): - data = self.recv(1024, self.serialsock) - self.logger.debug("Data received serial thread %s" % data.decode('utf-8', 'replace')) - self.logfunc(data, ".2") - self.serial_lock.release() + try: + data = self.recv(1024, self.serialsock) + self.logger.debug("Data received serial thread %s" % data.decode('utf-8', 'replace')) + self.logfunc(data, ".2") + finally: + self.serial_lock.release() else: serial_registered = False poll.unregister(self.serialsock.fileno()) -- cgit v1.2.3-54-g00ecf