“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 http://people.redhat.com/anderson/crash.changelog) * 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 character. * 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 -k". * 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 SMP". * 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 pageflags". crash (5.1.5-1) unstable; urgency=low * New upstream version 5.1.5 (see http://people.redhat.com/anderson/crash.changelog) * 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 header. * 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 http://people.redhat.com/anderson/crash.changelog) * 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: http://people.redhat.com/anderson/crash.changelog.html#4_0_4_5 * 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 -Wall flag. * 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 structure. 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 http://people.redhat.com/anderson/crash.changelog) * 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 point. * 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 alternative. * 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 <address>". -- Michael Vogt <email address hidden> Fri, 17 Jun 2011 09:20:33 +0200
- diff from 5.0.7-1ubuntu1 to 5.1.6-1ubuntu1 (156.5 KiB)
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.