From ca59812b9b23c96354982b6c696fb2b129bf117d Mon Sep 17 00:00:00 2001 From: John Harrison Date: Tue, 18 Mar 2025 14:01:44 -0700 Subject: [PATCH 1/2] [lldb-dap] Waiting for the test binary to exit prior to dumping logs. This should ensure we have the full logs prior to dumping the logs. Additionally, printing log dumps to stderr so they are interspersed with assertion failures. --- .../lldbsuite/test/tools/lldb-dap/dap_server.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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..a9a47e281e829 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,10 @@ 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: + vs_comm.process.wait() dump_dap_log(log_file) From 36ceaebadf10cf139ea430629aea9efeb388e7ff Mon Sep 17 00:00:00 2001 From: John Harrison Date: Tue, 18 Mar 2025 18:14:11 -0700 Subject: [PATCH 2/2] Adding a timeout to the waits to ensure we try to print some logs. --- .../lldbsuite/test/tools/lldb-dap/dap_server.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 a9a47e281e829..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 @@ -110,7 +110,11 @@ def read_packet_thread(vs_comm, log_file): # 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: - vs_comm.process.wait() + 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) @@ -1278,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