[Lldb-commits] [PATCH] D64546: [lldb] Make TestDeletedExecutable more reliable

Raphael Isemann via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Jul 11 08:35:12 PDT 2019


teemperor updated this revision to Diff 209231.
teemperor edited the summary of this revision.
teemperor added a comment.

- Timeout -> file synchronization.
- Made the test process run longer just in case.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64546/new/

https://reviews.llvm.org/D64546

Files:
  lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py
  lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp


Index: lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp
===================================================================
--- lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp
+++ lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/main.cpp
@@ -1,9 +1,15 @@
 #include <chrono>
+#include <fstream>
 #include <thread>
 
-int main(int argc, char const *argv[])
-{
+int main(int argc, char const *argv[]) {
     lldb_enable_attach();
 
-    std::this_thread::sleep_for(std::chrono::seconds(30));
+    {
+      // Create file to signal that this process has started up.
+      std::ofstream f;
+      f.open(argv[1]);
+    }
+
+    std::this_thread::sleep_for(std::chrono::seconds(60));
 }
Index: lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py
===================================================================
--- lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py
+++ lldb/packages/Python/lldbsuite/test/functionalities/deleted-executable/TestDeletedExecutable.py
@@ -1,5 +1,5 @@
 """
-Test process attach/resume.
+Test process attach when executable was deleted.
 """
 
 from __future__ import print_function
@@ -24,8 +24,22 @@
         self.build()
         exe = self.getBuildArtifact("a.out")
 
-        popen = self.spawnSubprocess(exe)
+        # Use a file as a synchronization point between test and inferior.
+        pid_file_path = lldbutil.append_to_process_working_directory(self,
+            "token_pid_%d" % (int(os.getpid())))
+        self.addTearDownHook(
+            lambda: self.run_platform_command(
+                "rm %s" %
+                (pid_file_path)))
+
+        # Spawn a new process
+        popen = self.spawnSubprocess(exe, [pid_file_path])
         self.addTearDownHook(self.cleanupSubprocesses)
+
+        # Wait until process has fully started up.
+        pid = lldbutil.wait_for_file_on_target(self, pid_file_path)
+
+        # Now we can safely remove the executable and test if we can attach.
         os.remove(exe)
 
         self.runCmd("process attach -p " + str(popen.pid))


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D64546.209231.patch
Type: text/x-patch
Size: 2197 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20190711/a53e8826/attachment.bin>


More information about the lldb-commits mailing list