Reinstating r181091 and r181106 with fix for Linux regressions.
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@181340 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Target/Thread.cpp b/source/Target/Thread.cpp
index a7e03a2..5096a91 100644
--- a/source/Target/Thread.cpp
+++ b/source/Target/Thread.cpp
@@ -357,18 +357,24 @@
Thread::GetStopInfo ()
{
ThreadPlanSP plan_sp (GetCompletedPlan());
+ ProcessSP process_sp (GetProcess());
+ const uint32_t stop_id = process_sp ? process_sp->GetStopID() : UINT32_MAX;
if (plan_sp && plan_sp->PlanSucceeded())
+ {
return StopInfo::CreateStopReasonWithPlan (plan_sp, GetReturnValueObject());
+ }
else
{
- ProcessSP process_sp (GetProcess());
- if (process_sp
- && m_actual_stop_info_sp
- && m_actual_stop_info_sp->IsValid()
- && m_thread_stop_reason_stop_id == process_sp->GetStopID())
+ if ((m_thread_stop_reason_stop_id == stop_id) || // Stop info is valid, just return what we have (even if empty)
+ (m_actual_stop_info_sp && m_actual_stop_info_sp->IsValid())) // Stop info is valid, just return what we have
+ {
return m_actual_stop_info_sp;
+ }
else
- return GetPrivateStopReason ();
+ {
+ GetPrivateStopReason ();
+ return m_actual_stop_info_sp;
+ }
}
}