llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: None (dlav-sc) <details> <summary>Changes</summary> I have encountered with the issue that sometimes lldb-server can't remove internal software breakpoints in a multithread process and as a result the process freezes. The source of the issue was that lldb-server tried to read/write memory of the process using a tid of the exited thread and received 'No such process' error from ptrace. This patch sets an existing thread as the current one for this process before software breakpoints removing. --- Full diff: https://github.com/llvm/llvm-project/pull/127506.diff 1 Files Affected: - (modified) lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp (+1-1) ``````````diff diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp index 7f2aba0e4eb2c..fe16ec73c0404 100644 --- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp @@ -1959,6 +1959,7 @@ void NativeProcessLinux::SignalIfAllThreadsStopped() { // Clear any temporary breakpoints we used to implement software single // stepping. + SetCurrentThreadID(m_pending_notification_tid); for (const auto &thread_info : m_threads_stepping_with_breakpoint) { Status error = RemoveBreakpoint(thread_info.second); if (error.Fail()) @@ -1968,7 +1969,6 @@ void NativeProcessLinux::SignalIfAllThreadsStopped() { m_threads_stepping_with_breakpoint.clear(); // Notify the delegate about the stop - SetCurrentThreadID(m_pending_notification_tid); SetState(StateType::eStateStopped, true); m_pending_notification_tid = LLDB_INVALID_THREAD_ID; } `````````` </details> https://github.com/llvm/llvm-project/pull/127506 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits