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

Reply via email to