From 6e8fbc6f39c97d8e43b80d345913db418715179f Mon Sep 17 00:00:00 2001 From: Chaoren Lin Date: Sat, 7 Nov 2015 02:16:31 +0000 Subject: [PATCH] Fix TestThreadSpecificBreakpoint.py on Linux after rL252355. Summary: On Linux, if a thread-specific conditional breakpoint was hit, it won't necessarily be the thread that hit the breakpoint itself that evaluates the conditional expression, so the thread that hit the breakpoint could still be asked to stop, even though it hasn't been allowed to run since the previous stop. Reviewers: sivachandra, jingham Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D14472 llvm-svn: 252391 --- lldb/source/Target/ThreadList.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lldb/source/Target/ThreadList.cpp b/lldb/source/Target/ThreadList.cpp index c06f7a6ccc49..f098a887d5c4 100644 --- a/lldb/source/Target/ThreadList.cpp +++ b/lldb/source/Target/ThreadList.cpp @@ -262,7 +262,11 @@ ThreadList::ShouldStop (Event *event_ptr) // This is an optimization... If we didn't let a thread run in between the previous stop and this // one, we shouldn't have to consult it for ShouldStop. So just leave it off the list we are going to // inspect. - if (thread_sp->GetTemporaryResumeState () != eStateSuspended) + // On Linux, if a thread-specific conditional breakpoint was hit, it won't necessarily be the thread + // that hit the breakpoint itself that evaluates the conditional expression, so the thread that hit + // the breakpoint could still be asked to stop, even though it hasn't been allowed to run since the + // previous stop. + if (thread_sp->GetTemporaryResumeState () != eStateSuspended || thread_sp->IsStillAtLastBreakpointHit()) threads_copy.push_back(thread_sp); }