Page MenuHomeFreeBSD

D27271.id79727.diff
No OneTemporary

D27271.id79727.diff

Index: share/man/man4/ddb.4
===================================================================
--- share/man/man4/ddb.4
+++ share/man/man4/ddb.4
@@ -87,6 +87,15 @@
unless the
.Dv KDB_UNATTENDED
option is specified.
+Similarly, if the
+.Va debug.debugger_on_recursive_panic
+variable is set to a non-zero value,
+then the debugger will be invoked on a recursive kernel panic.
+This variable has a default value of
+.Va 0
+and no visible effect if
+.Va debug.debugger_on_panic
+is already set non-zero.
.Pp
The current location is called
.Va dot .
Index: sys/kern/kern_shutdown.c
===================================================================
--- sys/kern/kern_shutdown.c
+++ sys/kern/kern_shutdown.c
@@ -127,6 +127,11 @@
CTLFLAG_RWTUN | CTLFLAG_SECURE,
&debugger_on_panic, 0, "Run debugger on kernel panic");
+static bool debugger_on_recursive_panic = false;
+SYSCTL_BOOL(_debug, OID_AUTO, debugger_on_recursive_panic,
+ CTLFLAG_RWTUN | CTLFLAG_SECURE,
+ &debugger_on_recursive_panic, 0, "Run debugger on recursive kernel panic");
+
int debugger_on_trap = 0;
SYSCTL_INT(_debug, OID_AUTO, debugger_on_trap,
CTLFLAG_RWTUN | CTLFLAG_SECURE,
@@ -899,6 +904,8 @@
kdb_backtrace();
if (debugger_on_panic)
kdb_enter(KDB_WHY_PANIC, "panic");
+ else if (!newpanic && debugger_on_recursive_panic)
+ kdb_enter(KDB_WHY_PANIC, "re-panic");
#endif
/*thread_lock(td); */
td->td_flags |= TDF_INPANIC;

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 14, 7:50 PM (5 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29682484
Default Alt Text
D27271.id79727.diff (1 KB)

Event Timeline