https://github.com/eleviant created https://github.com/llvm/llvm-project/pull/145241
Temporarily revert commit e066f35c6981c720e3a7e5883efc40c861b3b7ee, because lldb tests randomly hang after it's been pushed. >From 2f636e6b9f99592dda885e9c9af06464e0a2a6c0 Mon Sep 17 00:00:00 2001 From: Evgeny Leviant <elevi...@accesssoftek.com> Date: Sun, 22 Jun 2025 18:54:44 +0200 Subject: [PATCH] Revert "[lldb] Fix qEcho message handling (#145072)" Temporarily revert commit e066f35c6981c720e3a7e5883efc40c861b3b7ee, because lldb tests randomly hang after it's been pushed. --- .../Python/lldbsuite/test/gdbclientutils.py | 10 --- .../gdb-remote/GDBRemoteCommunication.cpp | 3 +- .../GDBRemoteCommunicationClient.cpp | 2 +- .../gdb_remote_client/TestGDBRemoteClient.py | 72 ------------------- 4 files changed, 2 insertions(+), 85 deletions(-) diff --git a/lldb/packages/Python/lldbsuite/test/gdbclientutils.py b/lldb/packages/Python/lldbsuite/test/gdbclientutils.py index b603c35c8df09..753de22b9cfee 100644 --- a/lldb/packages/Python/lldbsuite/test/gdbclientutils.py +++ b/lldb/packages/Python/lldbsuite/test/gdbclientutils.py @@ -92,9 +92,6 @@ class MockGDBServerResponder: class RESPONSE_DISCONNECT: pass - class RESPONSE_NONE: - pass - def __init__(self): self.packetLog = [] @@ -184,8 +181,6 @@ def respond(self, packet): return self.qQueryGDBServer() if packet == "qHostInfo": return self.qHostInfo() - if packet.startswith("qEcho"): - return self.qEcho(int(packet.split(":")[1])) if packet == "qGetWorkingDir": return self.qGetWorkingDir() if packet == "qOffsets": @@ -242,9 +237,6 @@ def qProcessInfo(self): def qHostInfo(self): return "ptrsize:8;endian:little;" - def qEcho(self): - return "E04" - def qQueryGDBServer(self): return "E04" @@ -663,8 +655,6 @@ def _handlePacket(self, packet): if not isinstance(response, list): response = [response] for part in response: - if part is MockGDBServerResponder.RESPONSE_NONE: - continue if part is MockGDBServerResponder.RESPONSE_DISCONNECT: raise self.TerminateConnectionException() self._sendPacket(part) diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp index f244f7abe45e3..2aea7c6b781d7 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp @@ -354,9 +354,8 @@ GDBRemoteCommunication::WaitForPacketNoLock(StringExtractorGDBRemote &packet, disconnected = true; Disconnect(); } - } else { - timed_out = true; } + timed_out = true; break; case eConnectionStatusSuccess: // printf ("status = success but error = %s\n", diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp index d8130cae71ce6..adbf06b9a19a0 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp @@ -406,7 +406,7 @@ void GDBRemoteCommunicationClient::GetRemoteQSupported() { m_supports_qXfer_memory_map_read = eLazyBoolYes; else if (x == "qXfer:siginfo:read+") m_supports_qXfer_siginfo_read = eLazyBoolYes; - else if (x == "qEcho+") + else if (x == "qEcho") m_supports_qEcho = eLazyBoolYes; else if (x == "QPassSignals+") m_supports_QPassSignals = eLazyBoolYes; diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py index 12b464d3397eb..08ac9290ee85a 100644 --- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py +++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBRemoteClient.py @@ -356,78 +356,6 @@ def A(self, packet): ["vRun;%s;61726731;61726732;61726733" % (exe_hex,)] ) - def test_launch_lengthy_vRun(self): - class MyResponder(MockGDBServerResponder): - def __init__(self, *args, **kwargs): - self.started = False - return super().__init__(*args, **kwargs) - - def qC(self): - if self.started: - return "QCp10.10" - else: - return "E42" - - def qfThreadInfo(self): - if self.started: - return "mp10.10" - else: - return "E42" - - def qsThreadInfo(self): - return "l" - - def qEcho(self, num): - resp = "qEcho:" + str(num) - if num >= 2: - # We have launched our program - self.started = True - return [resp, "T13"] - - return resp - - def qSupported(self, client_supported): - return "PacketSize=3fff;QStartNoAckMode+;qEcho+;" - - def qHostInfo(self): - return "default_packet_timeout:1;" - - def vRun(self, packet): - return [self.RESPONSE_NONE] - - def A(self, packet): - return "E28" - - self.server.responder = MyResponder() - - target = self.createTarget("a.yaml") - # NB: apparently GDB packets are using "/" on Windows too - exe_path = self.getBuildArtifact("a").replace(os.path.sep, "/") - exe_hex = binascii.b2a_hex(exe_path.encode()).decode() - process = self.connect(target) - lldbutil.expect_state_changes( - self, self.dbg.GetListener(), process, [lldb.eStateConnected] - ) - - process = target.Launch( - lldb.SBListener(), - ["arg1", "arg2", "arg3"], # argv - [], # envp - None, # stdin_path - None, # stdout_path - None, # stderr_path - None, # working_directory - 0, # launch_flags - True, # stop_at_entry - lldb.SBError(), - ) # error - self.assertTrue(process, PROCESS_IS_VALID) - self.assertEqual(process.GetProcessID(), 16) - - self.assertPacketLogContains( - ["vRun;%s;61726731;61726732;61726733" % (exe_hex,)] - ) - def test_launch_QEnvironment(self): class MyResponder(MockGDBServerResponder): def qC(self): _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits