Download from: http://people.redhat.com/anderson or https://github.com/crash-utility/crash/releases The github master branch serves as a development branch that will contain all patches that are queued for the next release: $ git clone git://github.com/crash-utility/crash.git Changelog: - Fix for the handling of Xen DomU ELF dumpfiles to prevent the pre-gathering of p2m frames during session initialization, which is unnecessary since ELF files contain the mapping information in their ".xen_p2m" section. Without the patch, it is possible that the crash session may be unnecessarily aborted if the p2m frame-gathering fails, for example, if the CR3 value in the header is invalid. (ptesarik@xxxxxxxx) - Fix for the translation of X86_64 virtual addresses in the vsyscall region between 0xffffffffff600000 and 0xffffffffffe00000. Without the patch, the reading of addresses in that region returns invalid data; in addition, the "vtop" command for an address in that region shows an invalid physical address under the "PHYSICAL" column. (nakajima.akira@xxxxxxxxxxxx, anderson@xxxxxxxxxx) - Make the "zero excluded" mode default behavior when analyzing SADUMP dumpfiles because some Fujitsu troubleshooting software assumes the behavior. Also, fix the "set -v" option to show the "zero_excluded" internal variable as "on" if it has been set when analyzing SADUMP dumpfiles. (d.hatayama@xxxxxxxxxxxxxx) - Fix for the "bt" command to properly pull the stack and frame pointer registers from the NT_PRSTATUS notes of 32-bit tasks running in user-mode on ARM64. Without the patch, the "bt" command utilizes ptregs->sp and ptregs->regs[29] for 32-bit tasks instead of the architecturally-mapped ptregs->regs[13] and ptregs->regs[11], which yields unpredictable/invalid results, and possibly a segmentation violation. (drjones@xxxxxxxxxx) - Fix for the "ps -t" option in 3.17 and later kernels that contain commit ccbf62d8a284cf181ac28c8e8407dd077d90dd4b, which changed the task_struct.start_time member from a struct timespec to a u64. Without the patch, the "RUN TIME" value is nonsensical. (anderson@xxxxxxxxxx) - Fix for the changes made to the kernel module structure introduced by this kernel commit for Linux 4.5 and later kernels: commit 7523e4dc5057e157212b4741abd6256e03404cf1 module: use a structure to encapsulate layout. Without the patch, the crash session fails during initialization with the error message: "crash: invalid structure member offset: module_core_size". (sebott@xxxxxxxxxxxxxxxxxx) - The crash utility has not supported Xen dom0 and domU dumpfiles since this Linux 3.19 commit: commit 054954eb051f35e74b75a566a96fe756015352c8 xen: switch to linear virtual mapped sparse p2m list This patch resurrects support for dom0 dumpfiles only. Without the patch, the crash session fails during session initialization with the message "crash: cannot resolve p2m_top". (daniel.kiper@xxxxxxxxxx) - Fix for the replacements made to the kernel's cpu_possible_mask, cpu_online_mask, cpu_present_mask and cpu_active_mask symbols in this kernel commit for Linux 4.5 and later kernels: commit 5aec01b834fd6f8ca49d1aeede665b950d0c148e kernel/cpu.c: eliminate cpu_*_mask Without the patch, behavior is architecture-specific, dependent upon whether the cpu mask values are used to calculate the number of cpus. For example, ARM64 crash sessions fail during session initialization with the error message "crash: zero-size memory allocation! (called from <address>)", whereas X86_64 sessions come up normally, but invalid cpu mask values of zero are stored internally. (anderson@xxxxxxxxxx) - Fixes for "[-Werror=misleading-indentation]" compiler warnings that are generated by the following files, when building X86_64 in a Fedora Rawhide environment with gcc-6.0.0: gdb-7.6/bfd/coff-i386.c gdb-7.6/bfd/coff-x86_64.c kernel.c x86_64.c lkcd_common.c Without the patch, the warnings in the bfd library files are treated as errors, and abort the build. The three instances in the top-level crash source code directory are non-fatal. There are several other gdb-specific instances that are non-fatal and are not addressed. (anderson@xxxxxxxxxx) - Fix for a "[-Werror=shift-negative-value]" compiler warning that is generated by "gdb-7.6/opcodes/arm-dis.c" when building crash with "make target=ARM64" on an x86_64 host with gcc-6.0.0. Without the patch, the warning is treated as an error and the build is aborted. (anderson@xxxxxxxxxx) - Fix for a series of "[-Werror=shift-negative-value]" compiler warnings that are generated by "gdb-7.6/bfd/elf64-ppc.c" and "gdb-7.6/opcodes/ppc-opc.c" when building with "make target=PPC64" on an x86_64 host with gcc-6.0.0. Without the patch, the warnings are treated as errors and the build is aborted. (anderson@xxxxxxxxxx) - Fix for a "[-Werror=unused-const-variable]" compiler warning that is generated by "gdb-7.6/opcodes/mips-dis.c" when building with "make target=MIPS" on an x86_64 host with gcc-6.0.0. Without the patch, the warning is treated as an error and the build is aborted. (anderson@xxxxxxxxxx) - Configure the embedded gdb module with "--disable-sim" in order to bypass the unnecessary build of the libsim.a library. (anderson@xxxxxxxxxx) - Implement support for per-cpu IRQ stacks on the ARM64 architecture, which were introduced in Linux 4.5 by this commit: commit 132cd887b5c54758d04bf25c52fa48f45e843a30 arm64: Modify stack trace and dump for use with irq_stack Without the patch, if an active task was operating on its per-cpu IRQ stack on dumpfiles generated by kdump, its backtrace would start at the exception frame that was laid down on the process stack. This patch also adds support for "bt -E" to search IRQ stacks for exception frames, and the "mach" command displays the addresses of each per-cpu IRQ stack. (anderson@xxxxxxxxxx) - Fixes for "[-Werror=misleading-indentation]" compiler warnings that are generated by the following files, when building X86_64 in a Fedora Rawhide environment with gcc-6.0.0: gdb-7.6/gdb/ada-lang.c gdb-7.6/gdb/linux-record.c gdb-7.6/gdb/inflow.c gdb-7.6/gdb/printcmd.c gdb-7.6/gdb/c-typeprint.c Without the patch, warnings in the gdb-7.6/gdb directory are not treated as errors, and are non-fatal to the build. (anderson@xxxxxxxxxx) - Further fix for the symbol name changes made to the kernel's cpu_online_mask, cpu_possible_mask, cpu_present_mask and cpu_active_mask symbols in Linux 4.5 and later kernels for when the crash session is brought up with "crash -d<debug-level>". Without the patch, the cpus found in each mask are displayed like this example: cpu_possible_(null): cpus: 0 1 2 3 4 5 6 7 cpu_present_(null): cpus: 0 1 cpu_online_(null): cpus: 0 1 cpu_active_(null): cpus: 0 1 The "(null)" string segments above should read "mask". (anderson@xxxxxxxxxx) - Fix for the changes made to the kernel module structure introduced by this kernel commit for Linux 4.5 and later kernels: commit 8244062ef1e54502ef55f54cced659913f244c3e modules: fix longstanding /proc/kallsyms vs module insertion race. Without the patch, the crash session fails during initialization with the error message: "crash: invalid structure member offset: module_num_symtab". (anderson@xxxxxxxxxx) - Fix for the "dis <function | address>" option if the function or address is the highest text symbol value in a kernel module. Without the patch, the disassembly may continue past the end of the function, or may show nothing at all. The patch utilizes in-kernel kallsyms symbol size information instead of disassembling until reaching the address of the next symbol in the module. (anderson@xxxxxxxxxx) - Fix for the "irq -s" option in Linux 4.2 and later kernels. Without the patch, the irq_chip.name string (e.g. "IO-APIC", "PCI-MSI", etc.) is missing from the display. (rabin.vincent@xxxxxxxx) - Improvement of the accuracy of the allocated objects count for each kmem_cache shown by "kmem -s" in kernels configured with CONFIG_SLUB. Without the patch, the values under the ALLOCATED column may be too large because cached per-cpu objects are counted as allocated. (vinayakm.list@xxxxxxxxx) - Fixes to address two gcc-4.1.2 compiler warnings introduced by the previous patch: memory.c: In function ‘count_cpu_partial’: memory.c:17958: warning: comparison is always false due to limited range of data type memory.c: In function ‘count_partial’: memory.c:18729: warning: comparison is always false due to limited range of data type (anderson@xxxxxxxxxx) - Introduction of the "whatis -r" and "whatis -m" options. The -r option searches for data structures of a specified size or within a range of specified sizes. The -m option searches for data structures that contain a member of a given type. If a structure contains another structure, the members of the embedded structure will also be subject to the search. The type string may be a substring of the data type name. The output displays the size and name of the data structure. (Alexandr_Terekhov@xxxxxxxx, anderson@xxxxxxxxxx) - Apply a fuzz factor of zero to the re-application of a modified version of the gdb-7.6.patch in a pre-existing build directory. Without the patch, it is possible that a previously-applied patch could be applied a second time without the fuzz restriction. (anderson@xxxxxxxxxx) - Include sys/macros.h explicitly in filesys.c for the definitions of major(), minor() and makedev(). These functions are defined in the sys/sysmacros.h header, not sys/types.h. Linux C libraries are updating to drop the implicit include, so we need to include it explicitly. (vapier@xxxxxxxxxx) - Fix for "kmem -[sS]" options for kernels configured with CONFIG_SLUB. Without the patch, the count displayed in the ALLOCATED column may be too large, and the "kmem -S" display of allocated/free status of individual objects may be incorrect. (hirofumi@xxxxxxxxxxxxxxxxxx) - Fix for "kmem -[sS]" options for kernels configured with CONFIG_SLUB. Without the patch, if a freelist pointer is corrupt, the address of the slab page being referenced may not be displayed by the error message, showing something like: "kmem: kmalloc-32: slab: 0 invalid freepointer: 6e652f323a302d74". (hirofumi@xxxxxxxxxxxxxxxxxx) - Fix for the "vm -p" option on kernels that are not configured with CONFIG_SWAP. Without the patch, the command may fail prematurely with the message "nr_swapfiles doesn't exist in this kernel". (rabinv@xxxxxxxx) - Introduction of ARM64 support for 64K pages with 3-level page tables and 48 VA bits. Until now, support has only existed for 64K pages with 2-level page tables, and 4K pages with 3-level page tables. (jim.hull@xxxxxxx) - Fix for the "vm -p" and "vtop <user virtual address>" commands if a user page is swapped out. Without the patch, the "/dev" component of the swap file pathname may be missing from its display. (anderson@xxxxxxxxxx) - Fix for the x86_64 "vm -p" command to properly emulate the kernel's pte_present() function, which checks for either _PAGE_PRESENT or _PAGE_PROTNONE to be set. Without the patch, user pages whose PTE does not have _PAGE_PRESENT bit set are misconstrued as SWAP pages with an "(unknown swap location") along with a bogus OFFSET value. (anderson@xxxxxxxxxx) - When reading a task's task_struct.flags field, check for its size, which was changed from an unsigned long to an unsigned int. (dave.kleikamp@xxxxxxxxxx) - Introduction of support for the 64-bit SPARC V9 architecture. This version supports running against a live kernel. Compressed kdump support is also here, but the crash dump support for the kernel, kexec-tools, and makedumpfile is still pending. Initial work was done by Karl Volz with help from Bob Picco. (dave.kleikamp@xxxxxxxxxx) - Account for the Linux 3.17 increase of the ARM64 MAX_PHYSMEM_BITS definition from 40 to 48. (Johan.Erlandsson.sonymobile.com) -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility