- Introduction of a new "tree" command that can be used to dump the
the addresses of all data structure entries in a red-black tree or
a radix tree. Similar in nature to the "list" command, each data
structure in a tree can be dumped in total, or one or more members
in each strucure may be dumped.
- If a compressed kdump header contains an invalid "nr_cpus" value,
allow the crash session to continue after printing a warning
message. Without the patch, on non-S390/S390X systems, an invalid
nr_cpus value generates a message such as "crash: compressed kdump:
invalid nr_cpus value: 0", and the session subsequently fails with
the message "crash: vmcore: not a supported file format". However,
compressed kdumps have been seen that have an nr_cpus value of 0,
but the session can still run normally. The patch changes the
message to "WARNING: compressed kdump: invalid nr_cpus value: 0",
and the session is allowed to continue.
- Clarify the "help -n" output for compressed kdumps to show the
offsets and sizes of the vmcoreinfo, notes, and eraseinfo sections
in both hexadecimal and decimal, and to cleanly handle compressed
kdumps that have no NR_PRSTATUS notes in the notes section.
- Fix for the X86 "bt" command for a possible situation where the
crashing cpu's back trace starts at the "sysrq_handle_crash" stack
frame instead of farther down the stack below the exception at the
"crash_kexec" stack frame.
- Fix for the "runq" command for kernels that have the CFS scheduler.
Without the patch, tasks queued on a priority array of a cpu's RT
runqueue may not be displayed.
- Fix for analyzing dumpfiles from kernel version 3.5 and later, in
which the kernel log buffer has been converted from a byte-buffer to
a variable-length record buffer. Without the patch, the crash
session fails during initialization with the error message "crash:
cannot determine length of symbol: log_end". If the session is run
on a live system, or if the session is invoked with the "-s" command
line option, the session is not killed, but in those cases the "sys"
and "log" commands will fail with the same error message.
- For kernel versions 3.5 and later, in which the kernel log buffer has
been converted from a byte-buffer to a variable-length record buffer,
two new options have been added. The "log -t" option will display
log messages without the timestamp prepended. The "log -d" option
will display the dictionary of key/value pair properties that the
kernel's dev_printk() function optionally appends to a message.
- The SIAL extension module has been replaced by the "eppic" facility,
which stands for "Embeddable Pre-Processor and Interpreter for C".
The eppic git tree is located at http://code.google.com/p/eppic.
When "make extensions" is done, the eppic source code will be
downloaded automatically via "git clone", and then the "eppic.so"
extension module will be built. The "eppic.so" extension module
offers the same command set as the older "sial.so" module; the SIAL
extension module source files have been completely removed. If
desired, the eppic sources can be updated by executing "git pull"
from the "extensions/eppic" subdirectory.
- Added a new "list -h" option. When used with -h, the "start",
address must be the address of a data structure that contains
an embedded list_head structure. Updated the "list" help page
to more clearly differentiate the difference between using a
"start" address alone, "-H start", or "-h start", and added a
WARNING section to address the problem of "-h start" passing
through an external LIST_HEAD(), or passing though the actual
starting point of the list that is contained within a different
type of data structure from all the entries in the list.
(firstname.lastname@example.org, email@example.com, firstname.lastname@example.org)
- Implemented a new "scope" crash environment variable that can alter
the text scope for viewing the definition of data structures. It is
useful in cases where the kernel defines more than one instance of
of a data structure with the same name, and the "wrong" one is
selected by default. The variable takes a kernel or module text
symbol name or address, or an expression evaluating to the same.
If the variable is a module text address, then the command will
attempt to load the module into the crash session if it is not
already loaded; if that fails, then the setting of the variable
- Update to the extensions/trace.c extension modue to handle a kernel
version 3.4 patch that added a new "ring_buffer_per_cpu.nr_pages"
member, making the trace buffer size per-cpu.
- Fix to recognize a kernel version 3.5 patch that changed the
"qstr.len" member from an unsigned integer into a member of an
anonymous structure within an anonymous union. Without the patch,
the following commands fail, displaying the following error messages:
mount: "mount: invalid structure member offset: qstr_len"
files: "files: invalid structure member offset: qstr_len"
vm: "vm: invalid structure member offset: qstr_len"
swap: "swap: invalid structure member offset: qstr_len
fuser: "files: invalid structure member offset: qstr_len"
The "fuser" command generates the above error because it uses the
"files" command behind the scenes.
- Fix for the function that gathers a cpu's register set from an
NT_PRSTATUS note of an x86 or x86_64 compressed kdump header if one
or more cpus were offline when the system crashed. In that case,
if the requested cpu number is equal or greater than the number of
online cpus, the function will fail. When that happens, that cpu's
back trace will not have those registers as a fall-back option if the
starting point cannot be determined otherwise.
- Added "ipcs" and "tree" command references to the crash.8 man page.
- Redefined the usage of the "struct -o" flag when used in conjunction
with a symbol or address argument. Without this patch, the behavior
has been to print the warning message "struct: -o option not valid
with an address argument", ignore the "-o", and to just display the
structure at that address. With this patch, each structure member
will be proceded by its virtual address.
- Added new "bt -s [-xd]" options that will display symbol names plus
their offset in each frame. The default behavior is unchanged, where
only the symbol name is displayed. The symbol offset will be
expressed in the default output format, which can be overridden with
the -x or -d options.
- Fix for 32-bit PPC to handle a situation where one or more
NT_PRSTATUS note(s) were not captured in the kdump header due
to cpu(s) not responding to an IPI. Without the patch, the "bt"
command may result in a segmentation violation.
- Fix for building the PPC64 architecture in ppc64 environments where
where applications are built 32-bit by default when -m32 or -m64 are
not specified. This was a regression introduced in the crash-6.0.3
patch that introduced the "make target=PPC" feature that can be
performed on ppc64 hosts. Without the patch, a "make" command would
build a 32-bit PPC crash utility on such ppc64 hosts.
- Fix for the 32-bit PPC "irq" command. Without the patch, depending
upon the kernel version, the command would fail with the message
"irq: cannot determine number of IRQs", or "irq: invalid structure
- Fix for the 32-bit PPC "pte" command to properly translate the PTE
bit settings based upon the correct Book3E specifications.
Crash-utility mailing list