From 30d88a20432d2ddca555c9b6690450b260e523ec Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sat, 30 Mar 2024 18:08:15 +0000 Subject: oeqa/sstatetests: Fix race issue Under some load conditions, the result event can come back before the command complete event. If that happens, the code would hang indefinitely. Rework the code to wait for both events and avoid the hang. (From OE-Core rev: 8cfc94a4404c54bc73eab9f98d9da1f84c2135ad) Signed-off-by: Richard Purdie --- meta/lib/oeqa/selftest/cases/sstatetests.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/meta/lib/oeqa/selftest/cases/sstatetests.py b/meta/lib/oeqa/selftest/cases/sstatetests.py index e2f509c3e8..86d6cd7464 100644 --- a/meta/lib/oeqa/selftest/cases/sstatetests.py +++ b/meta/lib/oeqa/selftest/cases/sstatetests.py @@ -772,15 +772,16 @@ addtask tmptask2 before do_tmptask1 def find_siginfo(pn, taskname, sigs=None): result = None + command_complete = False tinfoil.set_event_mask(["bb.event.FindSigInfoResult", "bb.command.CommandCompleted"]) ret = tinfoil.run_command("findSigInfo", pn, taskname, sigs) if ret: - while True: + while result is None or not command_complete: event = tinfoil.wait_event(1) if event: if isinstance(event, bb.command.CommandCompleted): - break + command_complete = True elif isinstance(event, bb.event.FindSigInfoResult): result = event.result return result -- cgit v1.2.3-54-g00ecf