crash 5.1.6-1ubuntu1 source package in Ubuntu


crash (5.1.6-1ubuntu1) oneiric; urgency=low

  * Merge from debian unstable.  Remaining changes:
    - debian/patches/01_spu_commands.patch
      + Provides SPU extension support
    - debian/rules:
      + 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>"
    is entered.
  * 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
    2.2 timeframe.
  * 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
    number change.
  * 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 "" 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 build spews numerous error messages.  To
    avoid that, the file has been modified to check whether the
    embedded gdb build has been completed, and if it has not, just displays
    " 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
    -Wall flag.
  * The "" 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 "" 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 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 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
    exception frame.
  * 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
    architecture-neutral version.
  * 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

Upload details

Uploaded by:
Michael Vogt on 2011-06-17
Uploaded to:
Original maintainer:
Ubuntu MOTU Developers
i386 ia64 alpha powerpc amd64
Low Urgency

See full publishing history Publishing

Series Pocket Published Component Section
Precise release on 2011-10-13 main utils


File Size SHA-256 Checksum
crash_5.1.6.orig.tar.gz 23.3 MiB b97b74257f12a42c0c30b08b80e9d1fc1d66a289a597c15d12da9e04b4a0b8dd
crash_5.1.6-1ubuntu1.diff.gz 36.2 KiB 86acf2bdc6cd9958c7414b1e785d607230e37f2be5014d42ff711b367464ef01
crash_5.1.6-1ubuntu1.dsc 1.1 KiB d403354e9b74581fa4c4179840b917409af98681f987b7f728fc2fc680c490dc

Available diffs

View changes file

Binary packages built by this source

crash: kernel debugging utility, allowing gdb like syntax

 The core analysis suite is a self-contained tool that can be used to
 investigate either live systems, or multiple different core dump formats
 including kdump, LKCD, netdump and diskdump.
 o The tool is loosely based on the SVR4 crash command, but has been
    completely integrated with gdb in order to be able to display
    formatted kernel data structures, disassemble source code, etc.
 o The current set of available commands consist of common kernel core
    analysis tools such as a context-specific stack traces, source code
    disassembly, kernel variable displays, memory display, dumps of
    linked-lists, etc. In addition, any gdb command may be entered,
    which in turn will be passed onto the gdb module for execution.
 o There are several commands that delve deeper into specific kernel
    subsystems, which also serve as templates for kernel developers
    to create new commands for analysis of a specific area of interest.
    Adding a new command is a simple affair, and a quick recompile
    adds it to the command menu.
 o The intent is to make the tool independent of Linux version dependencies,
    building in recognition of major kernel code changes so as to adapt to
    new kernel versions, while maintaining backwards compatibility.