[Crash-utility] [ANNOUNCE] crash version 7.1.5 is available

Dave Anderson anderson at redhat.com
Wed Apr 27 20:18:53 UTC 2016


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 at suse.com)

 - 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 at nttcom.co.jp, anderson at redhat.com)

 - 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 at jp.fujitsu.com)

 - 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 at redhat.com)

 - 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 at redhat.com)

 - 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 at linux.vnet.ibm.com)

 - 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 at oracle.com)

 - 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 at redhat.com)

 - 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 at redhat.com)

 - 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 at redhat.com)

 - 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 at redhat.com)

 - 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 at redhat.com)

 - Configure the embedded gdb module with "--disable-sim" in order to
   bypass the unnecessary build of the libsim.a library.
   (anderson at redhat.com)

 - 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 at redhat.com)

 - 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 at redhat.com)

 - 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 at redhat.com)

 - 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 at redhat.com)

 - 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 at redhat.com)

 - 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 at axis.com)

 - 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 at gmail.com)

 - 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 at redhat.com)

 - 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 at epam.com, anderson at redhat.com)

 - 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 at redhat.com)

 - 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 at gentoo.org)

 - 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 at mail.parknet.co.jp)

 - 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 at mail.parknet.co.jp)

 - 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 at axis.com)

 - 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 at hpe.com)

 - 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 at redhat.com)

 - 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 at redhat.com)

 - 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 at oracle.com)

 - 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 at oracle.com)

 - Account for the Linux 3.17 increase of the ARM64 MAX_PHYSMEM_BITS 
   definition from 40 to 48.
   (Johan.Erlandsson.sonymobile.com)




More information about the Crash-utility mailing list