[Lldb-commits] [lldb] 5720a79 - [lldb-dap] Waiting for the test binary to exit prior to dumping logs. (#131917)

via lldb-commits lldb-commits at lists.llvm.org
Wed Mar 19 08:49:56 PDT 2025


Author: John Harrison
Date: 2025-03-19T08:49:52-07:00
New Revision: 5720a792a950f46a9b1ebdf0b658b76dc02a9833

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

LOG: [lldb-dap] Waiting for the test binary to exit prior to dumping logs. (#131917)

This should ensure we have the full logs prior to dumping the logs.
Additionally, printing log dumps to stderr so they are adjacent to
assertion failures.

Added: 
    

Modified: 
    lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py

Removed: 
    


################################################################################
diff  --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py
index 0fea3419d9725..359ac718138b2 100644
--- a/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py
@@ -88,13 +88,13 @@ def packet_type_is(packet, packet_type):
 
 
 def dump_dap_log(log_file):
-    print("========= DEBUG ADAPTER PROTOCOL LOGS =========")
+    print("========= DEBUG ADAPTER PROTOCOL LOGS =========", file=sys.stderr)
     if log_file is None:
-        print("no log file available")
+        print("no log file available", file=sys.stderr)
     else:
         with open(log_file, "r") as file:
-            print(file.read())
-    print("========= END =========")
+            print(file.read(), file=sys.stderr)
+    print("========= END =========", file=sys.stderr)
 
 
 def read_packet_thread(vs_comm, log_file):
@@ -107,6 +107,14 @@ def read_packet_thread(vs_comm, log_file):
             # termination of lldb-dap and stop waiting for new packets.
             done = not vs_comm.handle_recv_packet(packet)
     finally:
+        # Wait for the process to fully exit before dumping the log file to
+        # ensure we have the entire log contents.
+        if vs_comm.process is not None:
+            try:
+                # Do not wait forever, some logs are better than none.
+                vs_comm.process.wait(timeout=20)
+            except subprocess.TimeoutExpired:
+                pass
         dump_dap_log(log_file)
 
 
@@ -1274,7 +1282,11 @@ def terminate(self):
         super(DebugAdapterServer, self).terminate()
         if self.process is not None:
             self.process.terminate()
-            self.process.wait()
+            try:
+                self.process.wait(timeout=20)
+            except subprocess.TimeoutExpired:
+                self.process.kill()
+                self.process.wait()
             self.process = None
 
 


        


More information about the lldb-commits mailing list