llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: Charles Zablit (charles-zablit) <details> <summary>Changes</summary> Currently, the default state of a thread is `eStateUnloaded`. However, `ThreadList::DidStop` only converts threads that were`eStateRunning` to `eStateStopped`. Because of this, new threads stay `eStateUnloaded` forever, and `SBThread::IsStopped()` returns false. On Windows, `TargetThreadWindows::RefreshStateAfterStop` calls `SetState(eStateStopped)`. When using `LLDB_USE_LLDB_SERVER=1`, lldb uses the gdb-remote code path, which does not have that fix, causing `TestThreadStates::test_state_after_breakpoint` and `TestBreakAfterJoin` to fail. This patch ports the fix to `ThreadGDBRemote`. When running with `LLDB_USE_LLDB_SERVER=1`, it fixes: - `TestThreadStates::test_state_after_breakpoint` - `TestBreakAfterJoin` This could help fix llvm.org/pr15824 on POSIX. rdar://178727939 --- Full diff: https://github.com/llvm/llvm-project/pull/201605.diff 1 Files Affected: - (modified) lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp (+3) ``````````diff diff --git a/lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp index c0171734343a6..86c9843eeedd8 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp @@ -271,6 +271,9 @@ void ThreadGDBRemote::WillResume(StateType resume_state) { } void ThreadGDBRemote::RefreshStateAfterStop() { + // Mark this thread as stopped. ThreadList::DidStop only transitions + // threads from a running state to stopped. + SetState(eStateStopped); // Invalidate all registers in our register context. We don't set "force" to // true because the stop reply packet might have had some register values // that were expedited and these will already be copied into the register `````````` </details> https://github.com/llvm/llvm-project/pull/201605 _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
