https://github.com/mchoo7 updated https://github.com/llvm/llvm-project/pull/178069
>From fe6f7a62ffb43ea70387387a72c6097effadf6ec Mon Sep 17 00:00:00 2001 From: Minsoo Choo <[email protected]> Date: Mon, 26 Jan 2026 14:58:11 -0500 Subject: [PATCH] [lldb] [Process/FreeBSDKernel] Select paniced thread automatically Signed-off-by: Minsoo Choo <[email protected]> --- .../Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp | 6 ++++++ .../Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp | 10 +++++++++- .../Process/FreeBSDKernel/ThreadFreeBSDKernel.h | 3 +++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp b/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp index d209e5b5384f3..dc7cbb007b926 100644 --- a/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp +++ b/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp @@ -245,6 +245,12 @@ bool ProcessFreeBSDKernel::DoUpdateThreadList(ThreadList &old_thread_list, ThreadSP thread_sp{ new ThreadFreeBSDKernel(*this, tid, pcb_addr, thread_desc)}; new_thread_list.AddThread(thread_sp); + + if (tid == dumptid) { + static_cast<ThreadFreeBSDKernel*>(thread_sp.get())->SetIsCrashedThread(true); + } + + new_thread_list.AddThread(thread_sp); } } } else { diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp b/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp index 24e7943cba0e2..d59283df861a5 100644 --- a/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp +++ b/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp @@ -8,6 +8,7 @@ #include "ThreadFreeBSDKernel.h" +#include "lldb/Target/StopInfo.h" #include "lldb/Target/Unwind.h" #include "lldb/Utility/Log.h" @@ -82,4 +83,11 @@ ThreadFreeBSDKernel::CreateRegisterContextForFrame(StackFrame *frame) { return reg_ctx_sp; } -bool ThreadFreeBSDKernel::CalculateStopInfo() { return false; } +bool ThreadFreeBSDKernel::CalculateStopInfo() { + if (m_is_crashed) { + // Set stop info for the crashed thread + SetStopInfo(StopInfo::CreateStopReasonWithException(*this, "kernel panic")); + return true; + } + return false; +} diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.h b/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.h index 3bc019b63e680..6a8d44eaf5699 100644 --- a/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.h +++ b/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.h @@ -38,6 +38,8 @@ class ThreadFreeBSDKernel : public lldb_private::Thread { m_thread_name.clear(); } + void SetIsCrashedThread(bool is_crashed) { m_is_crashed = is_crashed; } + protected: bool CalculateStopInfo() override; @@ -45,6 +47,7 @@ class ThreadFreeBSDKernel : public lldb_private::Thread { std::string m_thread_name; lldb::RegisterContextSP m_thread_reg_ctx_sp; lldb::addr_t m_pcb_addr; + bool m_is_crashed = false; }; #endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_THREADFREEBSDKERNEL_H _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
