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: