]> code.ossystems Code Review - openembedded-core.git/commitdiff
oeqa/utils/command: Improve stdin handling in runCmd
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 22 Jun 2020 21:52:35 +0000 (22:52 +0100)
committerSteve Sakoman <steve@sakoman.com>
Fri, 26 Jun 2020 21:53:05 +0000 (11:53 -1000)
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 <richard.purdie@linuxfoundation.org>
(cherry picked from commit 9b251dcaffe52d32c1faf41ab57ab414fbc29722)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
meta/lib/oeqa/utils/commands.py

index df373c416963ba30464bd6d8e9c07d07481ae05e..f7f8c16bf00732ac72b82b7bc497ecee71107f93 100644 (file)
@@ -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()