Author: Pavel Labath
Date: 2022-08-01T16:05:01+02:00
New Revision: b53641cb72acae8973a16c4f5567885bd3fe85c0

URL: 
https://github.com/llvm/llvm-project/commit/b53641cb72acae8973a16c4f5567885bd3fe85c0
DIFF: 
https://github.com/llvm/llvm-project/commit/b53641cb72acae8973a16c4f5567885bd3fe85c0.diff

LOG: [lldb] Fix flakyness in TestProcessList

If the test is too fast it can read the process list before the forked
child process actually manages to exec the process with the right
arguments.

Use our file-based synchronization primitives to ensure the child is
up-and-running before we fetch the process list.

Added: 
    

Modified: 
    lldb/test/API/commands/platform/process/list/TestProcessList.py
    lldb/test/API/commands/platform/process/list/main.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/test/API/commands/platform/process/list/TestProcessList.py 
b/lldb/test/API/commands/platform/process/list/TestProcessList.py
index 5daf5dc49b52a..683b62e56e171 100644
--- a/lldb/test/API/commands/platform/process/list/TestProcessList.py
+++ b/lldb/test/API/commands/platform/process/list/TestProcessList.py
@@ -23,8 +23,10 @@ def test_process_list_with_args(self):
         exe = self.getBuildArtifact("TestProcess")
 
         # Spawn a new process
-        popen = self.spawnSubprocess(exe, args=["arg1", "--arg2", "arg3"])
-
-        substrs = [str(popen.pid), "TestProcess arg1 --arg2 arg3"]
+        sync_file = lldbutil.append_to_process_working_directory(self,
+                "ready.txt")
+        popen = self.spawnSubprocess(exe, args=[sync_file, "arg1", "--arg2", 
"arg3"])
+        lldbutil.wait_for_file_on_target(self, sync_file)
 
+        substrs = [str(popen.pid), "TestProcess", "arg1 --arg2 arg3"]
         self.expect("platform process list -v", substrs=substrs)

diff  --git a/lldb/test/API/commands/platform/process/list/main.cpp 
b/lldb/test/API/commands/platform/process/list/main.cpp
index da43e60155ea0..955f6e4382d20 100644
--- a/lldb/test/API/commands/platform/process/list/main.cpp
+++ b/lldb/test/API/commands/platform/process/list/main.cpp
@@ -1,9 +1,9 @@
-#include <stdio.h>
-
 #include <chrono>
+#include <fstream>
 #include <thread>
 
 int main(int argc, char const *argv[]) {
+  std::ofstream(argv[1]).close();
   std::this_thread::sleep_for(std::chrono::seconds(30));
   return 0;
 }


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to