Reading a Shutdown Message

QNX SDP8.0TechnotesDeveloperUser

If there is an exception that the kernel cannot handle, it crashes and a shutdown message is printed to the debug device in the following format:

Shutdown[5] S/C/F=11/1/11 C/D=ffffff8060078020/ffffff806014de10 kernel persona
QNX Version 8.0.0 Release 2023/09/15-15:31:33EST KSB:ffffff8087e33000
$URL: http://svn.ott.qnx.com/product/mainline/services/system/ker/timestamp.c $
[0]PID-TID=1-54 P/T FL=09011001/00000000 S:0e M FL=00001053/00000000 S:02 "/proc/boot/kdumper"
[0]ASPACE PID=19251221 PF=69000004 "tmp/wh2_condvar"
[1]NULL active thread
[1]ASPACE PID=19251221 PF=69000004 "tmp/wh2_condvar"
[2]PID-TID=1-11 P/T FL=09011001/00000000 S:02 M FL=00000003/00000000 S:02 "/proc/boot/kdumper"
[2]ASPACE PID=19247119 PF=69000004 "tmp/wh2_condvar"
[3]PID-TID=1-12 P/T FL=09011001/00000000 S:02 M FL=00000003/00000000 S:02 "/proc/boot/kdumper"
[3]ASPACE PID=19247124 PF=69000004 "tmp/wh2_condvar"
[4]PID-TID=1-13 P/T FL=09011001/00000000 S:02 M FL=00000003/00000000 S:02 "/proc/boot/kdumper"
[4]ASPACE PID=19247124 PF=69000004 "tmp/wh2_condvar"
[5]PID-TID=19247124-25 P/T FL=69000004/00400000 S:06 M FL=00001201/00000002 S:02 "tmp/wh2_condvar"
[6]PID-TID=1-15 P/T FL=09011001/00000000 S:02 M FL=00000003/00000000 S:02 "/proc/boot/kdumper"
[6]ASPACE PID=19247124 PF=69000004 "tmp/wh2_condvar"
[7]PID-TID=1-16 P/T FL=09011001/00000000 S:02 M FL=00000003/00000000 S:02 "/proc/boot/kdumper"
[7]ASPACE PID=19251222 PF=69000004 "tmp/wh2_condvar"
aarch64le context[ffffff8060077cd0]:
0000: ffffff80852d4280 0000000000000001 ffffff8087e33057 0000000000000001
0020: 000000000000002a ffffff80603dc200 000000000000002a 0000000000000000
0040: 0000000000af0d98 0000000000000000 0000000000000000 0000000000000000
0060: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
0080: 0000000000000000 0000000000000000 0000000000000000 ffffff80852d4280
00a0: 000000000000002a 0000000005001002 0000000000000001 00000000be65478e
00c0: ffffff80852d4280 0000000000000001 0000000000000000 00000001be65478e
00e0: 0000000000000001 ffffff8087e33010 ffffff80600f8408 ffffff8087e33010
0100: ffffff80600f82b0 0000000040000284
instruction[ffffff80600f82b0]:
fd 7b bd a9 fd 03 00 91 5f 00 00 39 f3 53 01 a9 f3 03 00 aa 00 28 40 b9 1f 04
stack[ffffff8087e33010]:
0000:>ffffff8087e33060 ffffff80600f89a4 0000000000000002 0000000000000004
0020: 0000000000000005 ffffff8087986a40 00000000000000ee 0000000000000000
0040: 0000000000000000 7194e99bdc11b384 ffffff8087e330f0 ffffff80600fa4c8
0060: 0000000000000005 00000000000000ee ffffff808528a500 0000000000000000
Here's what each part means:
Shutdown[5]
A fatal error occurred on CPU 5.
S/C/F=11/1/11
Signal, code, and fault codes; see these files:
  • signal: /usr/include/signal.h
  • code: /usr/include/sys/siginfo.h
  • fault: /usr/include/sys/fault.h
To understand the root cause of the shutdown, search signal.h for the signal code; this indicates the name of the signal. Then, look in siginfo.h for the signal name. In this example, code 11 in signal.h is a SIGSEGV; in siginfo.h, code 1 in the SIGSEGV section is:
SEGV_MAPERR 1  // Address not mapped

In addition, code 11 in fault.h is Recoverable Page Fault. See also the entry for siginfo_t in the QNX OS C Library Reference.

C/D
Location of the kernel's code and data.
  • code: Points to the address of kernel's proc_main() function.
  • data: Points to the kernel's muon_per_cpu variable.
QNX Version
The version of the OS, followed by the date and time at which it was built.
KSB
The kernel stack base.
[x]PID-TID=y-z
The process ID and thread ID. On CPU x (think SMP), process y was running thread z when the crash occurred.
P/T FL
Process and thread flags for the QNX OS microkernel. The process flags are in the form _NTO_PF_*, and the thread flags are in the form _NTO_TF_*. For more information, see <sys/neutrino.h> and the entry for pidin in the Utilities Reference.
S
The state of the thread.
M FL
Muon thread and asynchronous thread flags.
[x]ASPACE PID=y
On CPU x, the address space for process y was active. This line appears only when the process is different from the one in the PID-TID line.
PF
The process flags for the ASPACE PID. In the sample above, wh2_condvar was only running on core 5, but its address space was active for the kernel processes on the other cores.
context
The register set. You can find the list of registers in /usr/nto/include/cpu/context.h, where cpu is the appropriate CPU-specific directory.
instruction
The instruction on which the error occurred.
stack
The contents of the stack. The location of the stack pointer is indicated by a greater-than sign (>) in the output; you can use the -S option for procnto to specify how many bytes of data before and after the stack pointer to include in the dump.
Page updated: