diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2024-10-13 08:37:07 +0100 |
---|---|---|
committer | Steve Sakoman <steve@sakoman.com> | 2024-11-26 06:11:30 -0800 |
commit | b0c9ca360079aaaad209d3eae3c4136699df406f (patch) | |
tree | 8f4cdd06afb0fc4d2811f9bb2eeabb934547aaa6 | |
parent | 1a526844db586a84978f23393b981da76c55ae41 (diff) | |
download | poky-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.py | 11 |
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()) |