fallkrum created this revision. fallkrum added reviewers: clayborg, jingham. fallkrum added a project: LLDB.
Encountered the following situation: Let we started thread T1 and it hit breakpoint on B1 <https://reviews.llvm.org/B1> location. We suspended T1 and continued the process. Then we started thread T2 which hit for example the same location B1 <https://reviews.llvm.org/B1>. This time in a breakpoint callback we decided not to stop returning false. Expected result: process continues (as if T2 did not hit breakpoint) its workflow with T1 still suspended. Real result: process do stops (as if T2 callback returned true). Solution: We need somehow invalidate StopInfo for threads that was previously suspended just because something that is already inactive can not be the reason of stop. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D80112 Files: lldb/source/Target/Thread.cpp Index: lldb/source/Target/Thread.cpp =================================================================== --- lldb/source/Target/Thread.cpp +++ lldb/source/Target/Thread.cpp @@ -378,7 +378,8 @@ const uint32_t process_stop_id = process_sp->GetStopID(); if (m_stop_info_stop_id != process_stop_id) { if (m_stop_info_sp) { - if (m_stop_info_sp->IsValid() || IsStillAtLastBreakpointHit() || + if (m_stop_info_sp->IsValid() || + (IsStillAtLastBreakpointHit() && m_resume_state != eStateSuspended) || GetCurrentPlan()->IsVirtualStep()) SetStopInfo(m_stop_info_sp); else
Index: lldb/source/Target/Thread.cpp =================================================================== --- lldb/source/Target/Thread.cpp +++ lldb/source/Target/Thread.cpp @@ -378,7 +378,8 @@ const uint32_t process_stop_id = process_sp->GetStopID(); if (m_stop_info_stop_id != process_stop_id) { if (m_stop_info_sp) { - if (m_stop_info_sp->IsValid() || IsStillAtLastBreakpointHit() || + if (m_stop_info_sp->IsValid() || + (IsStillAtLastBreakpointHit() && m_resume_state != eStateSuspended) || GetCurrentPlan()->IsVirtualStep()) SetStopInfo(m_stop_info_sp); else
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits