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 06:11:30 -0800
commitb0c9ca360079aaaad209d3eae3c4136699df406f (patch)
tree8f4cdd06afb0fc4d2811f9bb2eeabb934547aaa6
parent1a526844db586a84978f23393b981da76c55ae41 (diff)
downloadpoky-b0c9ca360079aaaad209d3eae3c4136699df406f.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: 78f86c946d37d15b044be158e22e9853009cae27) 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())