1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-08 17:19:20 +00:00

bitbake: server/process: Avoid risk of exception deadlocks

The open coded lock acquire/release in the UI event handler doesn't
cover the case an exception occurs and if one did, it could deadlock
the code. Switch to use 'with' statements which would handle this
possibility.

We have seen deadlocks in the UI at exit this so this removes a
possible cause.

(Bitbake rev: bd12792f28efd2f03510653ec947ebf961315272)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2022-06-07 14:14:46 +01:00
parent 96e34de6f0
commit 5940020cfb
+9 -14
View File
@@ -667,18 +667,14 @@ class BBUIEventQueue:
self.t.start()
def getEvent(self):
self.eventQueueLock.acquire()
with self.eventQueueLock:
if len(self.eventQueue) == 0:
return None
if len(self.eventQueue) == 0:
self.eventQueueLock.release()
return None
item = self.eventQueue.pop(0)
if len(self.eventQueue) == 0:
self.eventQueueNotify.clear()
item = self.eventQueue.pop(0)
if len(self.eventQueue) == 0:
self.eventQueueNotify.clear()
self.eventQueueLock.release()
return item
def waitEvent(self, delay):
@@ -686,10 +682,9 @@ class BBUIEventQueue:
return self.getEvent()
def queue_event(self, event):
self.eventQueueLock.acquire()
self.eventQueue.append(event)
self.eventQueueNotify.set()
self.eventQueueLock.release()
with self.eventQueueLock:
self.eventQueue.append(event)
self.eventQueueNotify.set()
def send_event(self, event):
self.queue_event(pickle.loads(event))