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 <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2024-03-30 18:08:15 +00:00
parent 66f2f710e6
commit 30d88a2043

View File

@@ -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