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 05:37:09 -0800 |
| commit | ae0db85f2cf5741af127f1a2380787b2d6e856ec (patch) | |
| tree | 4d3a2caf37348f0f43df86185b528d602dca1ede | |
| parent | 28bf1ab6759606a1bfc7526e02eda466173d0cd7 (diff) | |
| download | poky-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.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()) |
