https://github.com/mchoo7 updated 
https://github.com/llvm/llvm-project/pull/178069

>From 2c46e8d2050ae80f279f4e8c7271dfc6664927fc 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    | 10 +++++++---
 .../Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp     | 11 ++++++++++-
 .../Process/FreeBSDKernel/ThreadFreeBSDKernel.h       |  3 +++
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp 
b/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp
index d209e5b5384f3..c7da9f215972f 100644
--- a/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp
+++ b/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.cpp
@@ -242,9 +242,13 @@ bool ProcessFreeBSDKernel::DoUpdateThreadList(ThreadList 
&old_thread_list,
           thread_desc += llvm::formatv(" (on CPU {0})", oncpu);
         }
 
-        ThreadSP thread_sp{
-            new ThreadFreeBSDKernel(*this, tid, pcb_addr, thread_desc)};
-        new_thread_list.AddThread(thread_sp);
+        auto thread =
+            new ThreadFreeBSDKernel(*this, tid, pcb_addr, thread_desc);
+
+        if (tid == dumptid)
+          thread->SetIsCrashedThread(true);
+
+        new_thread_list.AddThread(static_cast<ThreadSP>(thread));
       }
     }
   } else {
diff --git a/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp 
b/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.cpp
index 24e7943cba0e2..dd1ed52719749 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,12 @@ 
ThreadFreeBSDKernel::CreateRegisterContextForFrame(StackFrame *frame) {
   return reg_ctx_sp;
 }
 
-bool ThreadFreeBSDKernel::CalculateStopInfo() { return false; }
+bool ThreadFreeBSDKernel::CalculateStopInfo() {
+  if (m_is_crashed) {
+    // Set a stop reason for crashing threads only so that they get selected
+    // preferentially.
+    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