- NetBSD Manual Pages
PANIC(9) NetBSD Kernel Developer's Manual PANIC(9)
Powered by man-cgi (2021-06-01).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.
panic -- bring down system on fatal error
vpanic(const char *fmt, va_list ap);
panic(const char *fmt, ...);
The panic() and vpanic() functions terminate the NetBSD system. The mes-
sage fmt is a printf(3) style format string which is printed to the con-
sole and saved in the variable panicstr for later retrieval via core dump
inspection. A newline character is added at the end automatically, and
is thus not needed in the format string.
If a kernel debugger is installed, control is passed to it after the mes-
sage is printed. If the kernel debugger is ddb(4), control may be passed
to it, depending on the value of ddb.onpanic. See options(4) for more
details on setting ddb.onpanic. If control is not passed through to
ddb(4), a ddb(4)-specific function is used to print the kernel stack
trace, and then control returns to panic().
If control remains in panic(), an attempt is made to save an image of
system memory on the configured dump device.
If during the process of handling the panic, panic() is called again
(from the filesystem synchronization routines, for example), the system
is rebooted immediately without synchronizing any filesystems.
panic() is meant to be used in situations where something unexpected has
happened and it is difficult to recover the system to a stable state, or
in situations where proceeding might make things worse, leading to data
corruption and/or loss. It is not meant to be used in scenarios where
the system could easily ignore and/or isolate the condition/subsystem and
In general developers should try to reduce the number of panic() calls in
the kernel to improve stability.
The panic() function never returns.
printf(3), sysctl(3), ddb(4), options(4), savecore(8), swapctl(8),
NetBSD 9.99 October 4, 2019 NetBSD 9.99