ubuntu oneiric in
Primary Archive for Ubuntu
crash (5.1.6-1ubuntu1) oneiric; urgency=low
* Merge from debian unstable. Remaining changes:
+ Provides SPU extension support
+ Enable SPU on PPC
crash (5.1.6-1) unstable; urgency=low
* New upstream version 5.1.5 (see
* Fixed several typos in the updated crash.8 man page.
* Created a new "rd -a" option that displays printable ASCII data only,
starting from the specified location. If a "count" argument is not
entered, the display stops upon encountering the first non-printable
* Fix for the "search -k" option on X86 kernels whose first memmap page
structure does not map to physical address 0. Without the patch, the
identity-mapped region of the first memory node would not be searched.
* Fix for the "search -k" option in the highly unlikely case of kernels that
have multiple NUMA nodes that are not sequential with respect to their
node IDs and the physical memory they reference, have physical memory
holes between any of the nodes, and do not have memmap page structures
referencing the non-existent inter-node physical memory. In that event,
it is conceivable that a NUMA node would be skipped.
* If the "kmem <address>" argument is a virtual address inside a kernel
module, the first item displayed is the address, followed by its symbol
type, and its symbol-name-plus-offset string. This patch appends the
module name in brackets, similar to what is displayed if "sym <address>"
* Fix for "kmem -s <address>" in kernels configured with CONFIG_SLUB and
CONFIG_PAGEFLAGS_EXTENDED if the address is contained in a page other than
the first page in a compound, multi-page, slab. Without the patch, the
command would fail with the message "kmem: address is not allocated in
slab subsystem: <address>".
* Created a new "rd -N" option that displays 16- and 32-bit data in network
byte order, performing byte-swapping if appropriate.
* Fix for a compiler warning when building with "make warn". Without the
patch, memory.c generates a message indicating "kernel.c: In function
‘back_trace’:" followed by 17 messages indicating "kernel.c: 2187:
warning: ‘btsave.<member>’ may be used uninitialized in this function",
where there is one message for each <member> of the bt_info structure.
* Updated the #define of NR_SECTION_ROOTS to match its change upstream that
prevents its value from being calculated to be zero.
* Fix for a double-free() in the unlikely event of a readmem() failure in
the ARM architecture's read_module_unwind_table() function.
* Updates to support CONFIG_SPARSEMEM for the ARM architecture.
* Extended the "mach" command to display the size and address of each
per-cpu IRQ stack and per-cpu exception stack, if they exist. This
extension is applicable to the x86_64 and ppc64 architectures, and the x86
architecture if applicable. Prior to this patch, the values were only
accessible via "help -t" or "help -m".
* Created a new "kmem -o" option that dumps each cpu's offset value that is
added to per-cpu symbol values to translate them into kernel virtual
addresses. Prior to this patch, the values were only accessible via "help
* Removed the "kmem [-[l|L][a|i]]" options from being advertised by the
"kmem" help page; the options have been obsolete since the Linux version
* Fix to support Linux 3.x version number change. Without the patch, the
crash session fails with kernel version 3.0 and later, displaying the
message "WARNING: kernel version inconsistency between vmlinux and [live
memory or dumpfile]", followed by the fatal error message "crash:
incompatible arguments: vmlinux is not SMP -- [live system or dumpfile] is
* Updates to the sial.c extension module to support the Linux 3.x version
* Created a new "kmem -g [flags]" option that displays the enumerator value
of bits in the page structure's "flags" field. With no "flags" argument,
the enumerator value of all bits are displayed; when a hexadecimal "flags"
option is added, just the bits in the value are translated. This option
only works with 2.6.26 and later kernels, which contain the "enum
crash (5.1.5-1) unstable; urgency=low
* New upstream version 5.1.5 (see
* Fix to allow a vmlinux.bz2 file to be accepted when it is part of a
relative or absolute pathname. Without the patch, the file is rejected
with the message "crash: <path-to>/vmlinux.bz2: not a supported file
format", although it is still possible to use it with the "-f" flag.
* Fix for the usage of a vmlinux.gz or vmlinux.bz2 file if the relevant
gunzip or bunzip2 file is not located in /usr/bin. Without the patch on
an Ubunutu system, the uncompression fails because those binaries are only
located in the /bin directory. Also fixed the uncompression error message
to differentiate between gunzip and bunzip2.
* Created a new exist_regs_in_elf_notes() function for extension modules to
pre-determine whether an ELF note containing registers exists for a
specified task. The function is also used by the currently-existing
get_regs_from_elf_notes() function to clean up redundant code in the
various get_<arch>_regs_from_elf_notes() functions that it calls.
* Exported the formerly static x86_64_exception_frame() function to
extension modules, and created a new EFRAME_INIT flags argument that
directs the function to fill in the x86_64 pt_regs offset table and return
any errors encountered in doing so.
* Created and exported a new get_kvm_register_set() interface for extension
modules to get a copy of the per-cpu registers stored in the kvmdump
* Fix for the handling of x86_64 compressed kdump dumpfiles where the
crashing system contained more than 454 cpus. Without the patch, the
crash session fails during initialization with the error message "crash:
compressed kdump: invalid nr_cpus value: <cpus>" followed by "crash:
vmcore: not a supported file format".
* Fix for the "uvtop" and "vm -p" commands when run on tasks that have
performed an mprotect(PROT_NONE) on a user-space page. Because the
PAGE_PRESENT bit is not set in that case, the page was presumed to be
swapped out. Without the patch the "vtop <address>" command fails with
the error message "vtop: cannot determine swap location", and "vm -p"
indicates "SWAP: (unknown swap location)" when iterating over the page.
* Fix for the use of the "-g vmlinux" command line option by non-root users
if the /dev/crash module has been preloaded. Without the patch, after the
vmlinux file's debugging information has been shown, the error messages
"ERROR: Removing 'crash': Operation not permitted" and "NOTE:
cleanup_memory_driver failed" are displayed.
* Fix for the s390x "bt" command to handle a program check interrupt while
operating on the process stack. Without the patch, the backtrace stops
prematurely upon reaching the pgm_check_handler() interrupt handler.
* Long overdue rewrite of the crash.8 man page and the associated "crash -h"
built-in usage display. The crash.8 man page clarifies the required
invocation options, adds all of the rarely-used command line options that
have proliferated over the years, and updates the ENVIRONMENT variables
section. The "crash -h" output closely mimics the relevant parts of the
crash.8 man page.
* Fix for the embedded gdb module to determine member offsets of the
pglist_data structure when the kernel was compiled with gcc 4.6.0.
Without the patch, the system MEMORY size shown by the initial system data
and by the "sys" command is nonsensical, the "kmem -n" command shows
faulty memory node data, and if the kernel is configure with CONFIG_SLUB,
"kmem -[sS]" will fail with numerous "kmem: page_to_nid: cannot determine
node for pages: <page-address>" errors. There may be other ramifications
given that the pglist_data structure is crucial to the functionality of
the crash utility.
* Implemented the capability of using the NT_PRSTATUS ELF note data that is
saved in version 4 compressed kdump headers to determine the starting
stack and instruction pointer hooks for x86 and x86_64 backtraces when
they cannot be determined in the traditional manners.
* Added a new "--osrelease <dumpfile>" command line option that displays the
OSRELEASE vmcoreinfo string from a kdump dumpfile.
* Fix to recognize the per-cpu symbol name change from "cpu_info" to
"ia64_cpu_info" in 2.6.33 and later ia64 kernels. Without the patch, the
message "WARNING: cannot find cpuinfo_ia64 location" would appear during
invocation, and the "mach -c" command would fail in a similar manner,
indicating "mach: cannot find cpuinfo_ia64 location".
* Fix for "kmem -[sS]" command on 2.6.39 kernels where the original slab
structure members have been moved into an anonymous union. Without the
patch, either command fails immediately with the error message "kmem:
invalid structure member offset: slab_list".
crash (5.1.4-1) unstable; urgency=low
* New upstream version 5.1.4 (see
* Fix for RT kernels in which the schedule() function has become a wrapper
function that calls the __schedule() function, and where other functions
may call __schedule() directly. Without the patch, a warning message
indicating "crash: cannot determing thread return address" is displayed
during invocation on x86_64 machines, and backtraces of blocked tasks may
have missing or invalid frames.
* Fix for running against live x86 kernels that were configured with
CONFIG_PHYSICAL_START containing a value that is greater than its
CONFIG_PHYSICAL_ALIGN value, and where the first symbol listed by
/proc/kallsyms is not "_text". Without the patch, the crash session fails
during invocation with the error message "crash: vmlinux and /dev/mem do
not match!" (or "/dev/crash" if applicable). As a work- around,
"/proc/kallsyms" can be entered on the command line, or the
"--reloc=<size>" option could be used, but the fix obviates that
requirement for live systems. It should be noted that dumpfiles of
kernels configured that way still do require that "/proc/kallsyms", or a
copy of it, or alternatively the "--reloc=<size>" option, to be entered on
the command line, as detailed in this changelog entry:
* Unlike other extension modules, the "sial.so" module must be built within
a pre-built crash source tree because it uses header files from the
embedded gdb module. Therefore if a crash source tree is laid down,
entered, and "make extensions" is entered without first building the crash
utility, the build of sial.so build spews numerous error messages. To
avoid that, the sial.mk file has been modified to check whether the
embedded gdb build has been completed, and if it has not, just displays
"sial.so: build failed: requires the crash gdb-7.0 module".
* If an extension module does not have its own <module>.mk file, and is
built using the extensions/Makefile, then it will be compiled with the
* The "trace.so" extension module has been improved to use "trace.cmd" to
implement the "trace show" option, instead of maintaining a redundant code
base within the module itself. The trace-cmd command is better, mature,
and continually maintained. The new "trace show" option works like so:
(1) builds trace.dat from the core file and dumps it to /tmp. (2) execs
"trace-cmd report" upon the trace.dat file. (3) splices the output of
trace-cmd to the user and unlinks the temporary file.
* Updates to the "trace.so" extension module to extract trace_bprintk()
formats from a kernel core dump. It handles both the current format and a
new format that will be pushed out after the merge window has closed for
Linux 2.6.40. The new format is required for the kernel debugfs to export
the same bprintk data as well. This means that the trace.so extension
module will be able to extract more information than trace-cmd itself can
on a running kernel.
* Fix for the "gdb" command, or any command that resolves to a gdb command,
to not strip quotation marks from the input line. Without the patch, any
gdb command whose arguments contain quotation marks, (e.g. "printf") would
fail because they get incorrectly stripped from the input line.
* Fix for the "p" command if its symbolic argument is a "char *" that points
to a static data string containing an "%" character. Without the patch,
the command results in a segmentation violation.
* Fix for the "sys -c" option to display an error message if a known
sys_call_table entry is not a valid system call address. Without the
patch, the compromised system call entry is not displayed unless the crash
debug mode is set to 1 or greater. With the patch, the system call number
will be followed by an error message indicating "invalid sys_call_table
entry: <address> (<symbol-name>)". This change is only applicable on
architectures/kernels where the index of the sys_call_table array can be
confirmed by debuginfo data, i.e., is not a loose calculation based upon
the next kernel symbol.
* Print a warning message if there is any inconsistency between the kernel
version strings found in the vmlinux file vs. the dumpfile or live memory.
If a System.map file is used to correct the virtual addresses found in the
vmlinux file, the message is not displayed.
* Fix for "kmem -v", and all other commands that search through the kernel's
mapped virtual address list, in x86_64 kernel versions from 2.6.0 to
2.6.11. Those kernels contained a "vmlist" and a separate "mod_vmlist"
list header, both of which point to list of vm_structs that described each
contiguous block of mapped kernel memory. 2.6.12 and later x86_64 kernels
consolidated both lists onto the "vmlist". Without the patch, the list
headed by "mod_vmlist" was not searched.
* Clarify the "struct -l offset" option so that it does not imply that the
address argument is necessarily an embedded list_head pointer. The "-l
offset" option essentially provides the capability of the kernel's
container_of() macro, such that the address of an embedded data structure
can be used to display its containing data structure.
* Clarify the help page documentation for the "struct -l offset" option so
that it does not imply that the address argument is necessarily an
embedded list_head pointer. The "-l offset" option essentially provides
the capability of the kernel's container_of() macro, such that the address
of an embedded data structure can be used to display its containing data
crash (5.1.3-1) unstable; urgency=low
* Implemented support for using vmlinux files that have been compressed with
either gzip or bzip2. For examples:
# crash vmlinux.gz vmcore
# crash vmlinuz.bz2
The uncompressed file will be temporarily stored either in /var/tmp or in
the directory specified in a TMPDIR shell environment variable. The
compressed filename must at least begin with "vmlinux" so as to avoid any
attempt to uncompress a vmcore file. Gzip'd vmlinux files are preferable
since the uncompress operation is less time-consuming.
* Prevent an unnecessary warning message that was introduced in version
5.1.0 that indicates "WARNING: cannot read .debug_frame data from
<namelist>" when running against vmlinux executables that have a separate
".debug" debuginfo file, such as RHEL3 vmlinux kernels. With the patch,
the message is only printed if CRASHDEBUG(1).
* Fix for the x86_64 "bt" command if the shutdown NMI is issued to a 32-bit
task that has executed a "sysenter" instruction and the RSP still contains
the zero value loaded from the MSR_IA32_SYSENTER_ESP register. Without
the patch, the backtrace issues a warning message indicating "WARNING:
possibly bogus exception frame", and is unable to make a transition from
the NMI exception stack.
* Fixes for the gdb-7.0 sources to address gcc-4.6 compile failures.
Without the patch, gcc-4.6 generates "error: variable ‘<variable>’ set but
not used [-Werror=unused-but-set-variable]" fatal errors when the
(default) -Werror flag is used. Previous gcc versions considered local
variables were simply set to some value to be "used", but that is no
longer the case.
* Fixes for the top-level crash sources to address gcc-4.6 compiler warnings
or errors. Without the patch, building with gcc-4.6 would generate
numerous "error: variable ‘<variable>’ set but not used
[-Werror=unused-but-set-variable]" errors or warnings, depending upon
whether "make warn" or "make Warn" was used.
* Removed -Wp,-D_FORTIFY_SOURCE=2 from the WARNING_OPTIONS string due to a
memmove() oddity seen when using it in conjunction with -O2 with gcc-4.6.
* Implemented three new options for the "search" command. This patch adds
the -c option to search for character strings, the -w option to search for
unsigned hexadecimal integer values, and -h to search for unsigned
hexadecimal short values. The integer and short values are searched on
integer and short alignments respectively. The -w option is only
meaningful on 64-bit systems, to be used in order to search both the upper
and lower 32-bits of each 64-bit long for the 32-bit value. Strings are
searched across contiguous page boundaries, where the page boundaries
being crossed are relevant to the memory type being searched, i.e., kernel
virtual, user virtual, or physical memory.
* Restrict the new "search -p" option to physical memory pages that have an
mem_map page structure assigned to them.
* Hardwire the declaration of the user_regs_struct in x86_64.c for kernels
whose debuginfo data does not contain it.
* Fix for compiler warnings when building makedumpfile.c and memory.c with
"make warn" on 32-bit systems.
* Fix to more correctly determine the KVM I/O hole size and location. The
I/O hole size to this point in time is either 1GB or 512MB, but its
setting is hardwired into the Qemu code that was used to create the
dumpfile. The dumpfile is a "savevm" file that is designed to be used for
guest migration, and since inter-version save/load is not supported, the
I/O hole information does not have to encoded into the dumpfile. Without
the patch, the I/O hole for dumpfiles created by older Qemu version was
not being set to 1GB, so if the KVM guest was configured with more than
3GB of memory, the crash session would typically display numerous "read
error" messages during session initialization.
* Fix for the x86 "bt" command on RHEL6 kernels that contain a backport of
upstream commit a00e817f42663941ea0aa5f85a9d1c4f8b212839, which moved x86
irq-exit functions to a special .kprobes.text section. Without this
patch, "bt" would show nonsensical backtraces that begin and end with the
"ia32_sysenter_target" function, and would dump an invalid kernel-entry
* Fix for the x86 "bt" command to fix a possible failure to backtrace a
non-active "swapper" task. Without the patch, the backtrace would fail
with the error message "bt: cannot resolve stack trace".
* Fix for the x86 "bt" command to prevent the display of a stale interrupt
exception frame left on the stack of a non-active task.
crash (5.1.1-1) unstable; urgency=low
* New upstream version 5.1.1 (see
* Fix for the potential to miss tasks when walking the pid_hash table in
2.6.24 and later kernels.
* Enhancement for the ARM architecture's "bt" command to print out the user
space register set for tasks entering the kernel via the syscall entry
* Rework of the handling of "set" commands that are put in .crashrc files so
that only the following options are resolved prior to session
initialization: silent, console, core, edit, namelist, and zero_excluded.
All others are resolved immediately after session initialization is
complete. Accordingly, the use of "set -c <cpu>", "set -p", "set -a
[task|pid]" and set [pid|task]" are now acceptable .crashrc commands.
* The entering of "set -v" in a .crashrc file would cause an immediate
segmentation violation. The "set" command rework above defers the command
until session initialization is complete.
* The entering of "set dumpfile <filename>" in a .crashrc file would cause a
fatal "seek" error during session initalization with most most dumpfile
types, so the "dumpfile" option has been removed from the "set" command.
* The execution of "alias" commands from a .crashrc file used to be
performed immediately; that behavior has been changed so that they are
executed immediately after session initialization is complete.
* Enhancement of the "repeat" command to allow command aliases.
* Fix for running "kmem -s" on a live system if an offline cpu is brought
back online while the command is executing. Without the patch, the online
operation may cause a segmentation violation.
* Change the behavior of "bt -[tT]" to allow the command options to be run
on active tasks on live systems. Without the patch, both command options
would display the task data banner followed by "(active)".
* Fix for the ARM architecuture's "irq" command when run on 2.6.36 and later
kernels. Without the patch, the command fails with the error message
"irq: invalid kernel virtual address: 23 type: irq_chip typename". The
fix replaces the custom ARM IRQ dumping function with the
* Introduced support for using /proc/kcore as an alternative source of live
memory to /dev/mem. Doing so allows vmalloc memory access on 32-bit
architectures when the underlying mapped physical memory is in highmem,
which is not allowed by the /dev/mem driver. It would also be usable on
systems that are configured with CONFIG_STRICT_DEVMEM but still configured
with CONFIG_PROC_KCORE. To enforce the use of /proc/kcore, it may be
entered on the command line.
* If a live crash session attempts to use /dev/mem as a live memory source,
and it is determined that the system is configured with
CONFIG_STRICT_DEVMEM, /proc/kcore will automatically be tried as an
* Fix to allow "/dev/crash" to be entered on the command line for live
sessions. Because it is used automatically if it exists, it is never
necessary to enter it on the command line. However, if it is used,
without the patch, the session fails during initializaion with the error
message "crash: /dev/crash: No such file or directory" if the crash.ko
driver is a module (RHEL4/RHEL5), or "crash: /dev/crash: not a supported
file format" if the driver is built into the kernel (RHEL6).
* Fix for the ARM "bt" command to address the issue behind faulty warning
messages that indicate "WARNING: UNWIND: unsupported personality routine".
* Fix for the ARM "bt" command to address the issue behind faulty warning
messages that indicate "bt: WARNING: UNWIND: cannot find index for
-- Michael Vogt <email address hidden> Fri, 17 Jun 2011 09:20:33 +0200
kernel debugging utility, allowing gdb like syntax