Index: lldb/source/Target/Process.cpp =================================================================== --- lldb/source/Target/Process.cpp +++ lldb/source/Target/Process.cpp @@ -5248,15 +5248,17 @@ do_resume = false; handle_running_event = true; } else { + if (thread->IsThreadPlanDone(thread_plan_sp.get())) { + // clean preset StopInfo value when we have out plan completed + thread_sp->ResetStopInfo(); + } StopInfoSP stop_info_sp(thread_sp->GetStopInfo()); StopReason stop_reason = eStopReasonInvalid; if (stop_info_sp) stop_reason = stop_info_sp->GetStopReason(); - // FIXME: We only check if the stop reason is plan complete, - // should we make sure that - // it is OUR plan that is complete? - if (stop_reason == eStopReasonPlanComplete) { + if (stop_reason == eStopReasonPlanComplete && + thread->IsThreadPlanDone(thread_plan_sp.get())) { if (log) log->PutCString("Process::RunThreadPlan(): execution " "completed successfully.");