summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2024-10-13 08:37:07 +0100
committerSteve Sakoman <steve@sakoman.com>2024-11-26 05:37:09 -0800
commitae0db85f2cf5741af127f1a2380787b2d6e856ec (patch)
tree4d3a2caf37348f0f43df86185b528d602dca1ede
parent28bf1ab6759606a1bfc7526e02eda466173d0cd7 (diff)
downloadpoky-ae0db85f2cf5741af127f1a2380787b2d6e856ec.tar.gz
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: 0d08aab2e1c1ff1a8cb41b62b2e763bb88ca8b5a) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit b0732ee009ca47580d1d2ad75334f4aa50e6efd5) Signed-off-by: Steve Sakoman <steve@sakoman.com>
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py11
1 files changed, 6 insertions, 5 deletions
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index cda43aad8c..f1c2d2b5c9 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -519,7 +519,6 @@ class QemuRunner:
519 except Exception as e: 519 except Exception as e:
520 self.logger.warning('Extra log data exception %s' % repr(e)) 520 self.logger.warning('Extra log data exception %s' % repr(e))
521 data = None 521 data = None
522 self.thread.serial_lock.release()
523 return False 522 return False
524 523
525 with self.thread.serial_lock: 524 with self.thread.serial_lock:
@@ -822,10 +821,12 @@ class LoggingThread(threading.Thread):
822 self.logfunc(data, ".stdout") 821 self.logfunc(data, ".stdout")
823 elif self.serialsock and self.serialsock.fileno() == fd: 822 elif self.serialsock and self.serialsock.fileno() == fd:
824 if self.serial_lock.acquire(blocking=False): 823 if self.serial_lock.acquire(blocking=False):
825 data = self.recv(1024, self.serialsock) 824 try:
826 self.logger.debug("Data received serial thread %s" % data.decode('utf-8', 'replace')) 825 data = self.recv(1024, self.serialsock)
827 self.logfunc(data, ".2") 826 self.logger.debug("Data received serial thread %s" % data.decode('utf-8', 'replace'))
828 self.serial_lock.release() 827 self.logfunc(data, ".2")
828 finally:
829 self.serial_lock.release()
829 else: 830 else:
830 serial_registered = False 831 serial_registered = False
831 poll.unregister(self.serialsock.fileno()) 832 poll.unregister(self.serialsock.fileno())