From 9034ac93518b74dae5e05776c0bce085171cdd1f Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 22 Jun 2020 22:52:35 +0100 Subject: [PATCH] oeqa/utils/command: Improve stdin handling in runCmd Occasionally we've been seeing leftover threads from runCmd. The stdin test assumes we clean up all threads but the code assumes that the daemonic thread can be left behind. The issue can be reproduced by adding a time.sleep(10) to the end of writeThread() which will mean it stays resident past the end of the command. We may as well add it to the threads list and clean it up properly, hopefully removing the race in the tests from the autobuilder. [YOCTO #13055] Signed-off-by: Richard Purdie (cherry picked from commit 9b251dcaffe52d32c1faf41ab57ab414fbc29722) Signed-off-by: Steve Sakoman --- meta/lib/oeqa/utils/commands.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/meta/lib/oeqa/utils/commands.py b/meta/lib/oeqa/utils/commands.py index df373c4169..f7f8c16bf0 100644 --- a/meta/lib/oeqa/utils/commands.py +++ b/meta/lib/oeqa/utils/commands.py @@ -95,7 +95,9 @@ class Command(object): # reason, the main process will still exit, which will then # kill the write thread. if self.data: - threading.Thread(target=writeThread, daemon=True).start() + thread = threading.Thread(target=writeThread, daemon=True) + thread.start() + self.threads.append(thread) if self.process.stderr: thread = threading.Thread(target=readStderrThread) thread.start() -- 2.40.1