Reading a Shutdown Message

QNX SDP8.0TechnotesDeveloperUser

If your application crashes with a kernel fault, the output tells you what happened at the time of the crash. Here's a sample:

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
Neutrino process and thread flags. 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, devb-eide wasn't running, but its address space was active.
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: