From 4e7274dd4ae6ded0bdb8e79b58e33359d4cbfa79 Mon Sep 17 00:00:00 2001 From: Raphael Isemann Date: Wed, 25 Mar 2026 08:34:57 +0000 Subject: [PATCH] [lldb] Print correct thread plan in logging code of Thread::ShouldReportRun (#188198) This code accesses the completed thread plan (even if it's private one). However, the logging code does not pass `skip_private=false` and instead accesses only the public completed thread plan. In case there is no public thread plan, the logging code could also crash. This is just some minor refactoring that ensures we use the same thread plan in the logging code. --- lldb/source/Target/Thread.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index 8bc109340c61..53aa551b4c68 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -1084,14 +1084,15 @@ Vote Thread::ShouldReportRun(Event *event_ptr) { if (GetPlans().AnyCompletedPlans()) { // Pass skip_private = false to GetCompletedPlan, since we want to ask // the last plan, regardless of whether it is private or not. + ThreadPlanSP plan = GetPlans().GetCompletedPlan(/*skip_private=*/false); + LLDB_LOGF(log, "Current Plan for thread %d(%p) (0x%4.4" PRIx64 ", %s): %s being asked whether we should report run.", GetIndexID(), static_cast(this), GetID(), - StateAsCString(GetTemporaryResumeState()), - GetCompletedPlan()->GetName()); + StateAsCString(GetTemporaryResumeState()), plan->GetName()); - return GetPlans().GetCompletedPlan(false)->ShouldReportRun(event_ptr); + return plan->ShouldReportRun(event_ptr); } else { LLDB_LOGF(log, "Current Plan for thread %d(%p) (0x%4.4" PRIx64