summaryrefslogtreecommitdiffstats
path: root/meta/lib
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2020-06-22 22:52:35 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-07-02 16:12:36 +0100
commit4d1b2cecef15a88e1b861c37c4d8bacf59805c47 (patch)
tree972a22d71be1bbbf8bb1ab756ca646b7f76c4d74 /meta/lib
parent7267bf59fcfc137e478ab1f892cf545ef1d99ce5 (diff)
downloadpoky-4d1b2cecef15a88e1b861c37c4d8bacf59805c47.tar.gz
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] (From OE-Core rev: 9034ac93518b74dae5e05776c0bce085171cdd1f) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 9b251dcaffe52d32c1faf41ab57ab414fbc29722) Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r--meta/lib/oeqa/utils/commands.py4
1 files changed, 3 insertions, 1 deletions
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):
95 # reason, the main process will still exit, which will then 95 # reason, the main process will still exit, which will then
96 # kill the write thread. 96 # kill the write thread.
97 if self.data: 97 if self.data:
98 threading.Thread(target=writeThread, daemon=True).start() 98 thread = threading.Thread(target=writeThread, daemon=True)
99 thread.start()
100 self.threads.append(thread)
99 if self.process.stderr: 101 if self.process.stderr:
100 thread = threading.Thread(target=readStderrThread) 102 thread = threading.Thread(target=readStderrThread)
101 thread.start() 103 thread.start()