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

Reply via email to