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

Dave Anderson anderson at redhat.com
Wed Jan 9 15:50:50 UTC 2013


Download from: http://people.redhat.com/anderson

Changelog:

 - Enhancement of the "task" command to display both the task_struct
   and the thread_info structures of a task.  The -R option accepts 
   members of either/both structure types.
   (anderson at redhat.com)

 - Fix for the X86_64 "search" and "rd" commands due to this commit:
   http://git.kernel.org/linus/027ef6c87853b0a9df53175063028edb4950d476
   Upon any attempt to read a page within the RAM region reserved for
   AMD GART on a live system, the Linux 3.7rc1 commit above causes 
   causes /dev/mem, /proc/kcore and the /dev/crash drivers to spin 
   forever, leading to a kernel soft lockup.  The RAM pages reserved for
   GART consist of 2MB large pages whose _PAGE_PRESENT bits are turned
   off.  Prior to the above commit, a read() attempt on GART RAM would 
   cause an unresolvable page fault, and would harmlessly return an 
   EFAULT.  The commit above has changed pmd_large() function such that
   it now returns TRUE if only _PAGE_PSE bit is set in the PTE, whereas
   before it required both _PAGE_PSE and _PAGE_PRESENT.  So instead of
   just failing the read() system call with an EFAULT, the page fault
   handling code now considers it a spurious TLB fault, and the 
   instruction is retried indefinitely.  The crash utility patch stores
   the GART physical memory range, and disallows any attempts to read
   from it.
   (anderson at redhat.com)

 - If an EPPIC_GIT_URL environment variable is defined, then the URL 
   that it points to is used as an alternative to the code.google.com 
   git source repository for the eppic.so extension module.  However,
   the alternative site is only accessed if code.google.com can first
   be pinged; this patch removes that restriction. 
   (per.fransson.ml at gmail.com)

 - Fix for the "files" command PATH display on kernels configured with
   CONFIG_DEVTMPFS, when the vfsmount pointer in an file structure's 
   "f_path" member does not point to the root vfsmount required for 
   reconstructing the full file pathname.  Without the patch, open files
   in /dev directory may be truncated and not show the "/dev" filename 
   component.
   (anderson at redhat.com)

 - Enhancement to the "kmem -v" option on 2.6.28 and later kernels that
   utilize the "vmap_area_list" list of mapped kernel virtual memory 
   regions, replacing the usage of the to-be-obsoleted "vmlist" list.  
   In those kernels, the output of the command will also show each
   vmap_area structure address, in addition to its vm_struct address, 
   memory range, and size.
   (anderson at redhat.com)

 - Update to the exported do_rbtree() and do_rdtree() functions such
   that they will return the number of items found in the targeted tree,
   similar in nature to the do_list() function.  The two functions have
   also been fixed such that the VERBOSE flag is actually recognized,
   so that external callers are able to gather the entries in a tree
   without having them displayed.  The calls to either function may be 
   enclosed with hq_open() and hq_close() so the that tree entries may
   be subsequently gathered by retrieve_list() into a supplied buffer,
   as well as to recognize a corrupted list with duplicate entries.
   (anderson at redhat.com)

 - Fix for the "extend -u" option to prevent the usage of a member of
   a free()'d extension_table structure.  No command failure occurs, 
   but rather an inadvertent coding error.
   (Jan.Karlsson at sonymobile.com)

 - Fix to allow error() to be called during an open_tmpfile() sequence
   prior to close_tmpfile() being called.  There are no crash functions 
   that call error() during an open_tmpfile() sequence, but there's no 
   reason why it cannot be done.  Without the patch, the error message 
   gets displayed on stdout (as expected), but the error message will 
   also overwrite/corrupt the tmpfile() data while it is being parsed. 
   (anderson at redhat.com)

 - Fix to properly determine whether X86_64 kernels were configured 
   with CONFIG_FRAME_POINTER, due to this ftrace-related commit:
   http://git.kernel.org/linus/d57c5d51a30152f3175d2344cb6395f08bf8ee0c
   Without the patch, the crash utility fails to determine whether the
   kernel was built with CONFIG_FRAME_POINTER, and therefore the "bt"
   command cannot take advantage of it for more reliable backtraces.
   (anderson at redhat.com)

 - Fix to properly determine whether 2.6.31 and earlier X86_64 kernels
   were configured with CONFIG_FRAME_POINTER.  Without the patch, the
   crash utility may fail to determine whether the kernel was built with
   CONFIG_FRAME_POINTER.  In those kernel versions -- which may be
   dependent upon the compiler version used -- one of the sample 
   functions tested may have their "push %rbp, mov %rsp,%rbp" function
   preamble separated by other instruction(s), resulting in a false 
   negative that precludes the "bt" command from taking advantage of 
   framepointers.
   (anderson at redhat.com)

 - Fix for the file and line-number string that is displayed by the 
   "sym <kernel-text>" option.  Without the patch, the "/usr/src/"
   part of the string is stripped, and the filename string itself 
   could have two corrupted characters in the pathname, for example,
   showing "k3.nel-3.6.fc17" instead of "kernel-3.6.fc17".  This is
   dependent upon the compiler version, or perhaps the string library
   that is linked into the crash binary, because it only has been seen 
   on crash binaries built with gcc-4.7.  The fix now displays the full
   pathname, no longer dropping the "/usr/src" from beginning.
   (anderson at redhat.com)

 - Restricted the X86_64 "line_number_hook" to kernels earlier than
   2.6.24, i.e., kernels prior to the x86/x86_64 merge.  Without the
   patch, the manufactured filename information for assembly-language 
   files was incorrect for 2.6.24 and later kernels.  Also, the kernel
   debuginfo data now has file/line-number data for assembly-language
   files as well, obviating the need for the hook.
   (anderson at redhat.com)

 - Fix for the extensions/trace.c extension module to prevent a double
   free exception that would occur if a calloc() call fails during
   module initialization. 
   (per.fransson.ml at gmail com)

 - Fix for the "p -u" option if a 32-bit kernel symbol is incorrectly
   passed as an argument.  Without the patch, the command fails, but
   the next command requiring the services of the embedded gdb module
   will generate an error message of the sort "*** glibc detected ***
   crash: free(): invalid pointer: <address> ***", or "*** glibc 
   detected *** crash: munmap_chunk(): invalid pointer: <address> ***",
   followed by a backtrace, and an abort of the crash session.
   (anderson at redhat.com)

 - Fix for the embedded gdb module to correctly handle kernel modules
   whose ELF header contains "__ksymtab" and "__ksymtab_gpl" sections 
   with non-zero (nonsensical) "Address" values, such as those shown 
   in this example snippet:

    $ readelf -a edac_core.so
    ...
    Section Headers:
      [Nr] Name              Type             Address           Offset
           Size              EntSize          Flags  Link  Info  Align
    ...
      [ 8] __ksymtab         PROGBITS         0000000000000060  0000ad90
           0000000000000010  0000000000000000   A       0     0     16
    ...
      [10] __ksymtab_gpl     PROGBITS         0000000000000070  0000add0
           00000000000001a0  0000000000000000   A       0     0     16
    ...

   Without the patch, if one of the odd sections above is encountered, 
   the "Offset" values of the remaining sections are not processed; and 
   if the module's .data section is ignored, gdb incorrectly calculates 
   the address of all symbols in the module's .data section, leading to
   incorrect output if, for example, data is printed with the gdb "p" 
   command.  This invalid ELF section format was introduced in Linux 3.0
   by the kernel's "scripts/module-common.lds" file.
   (jan.kratochvil at redhat.com)

 - Fix for the "runq -g" option if the kernel contains more than 200 
   task groups.  Without the patch, the command generates a segmentation
   violation.
   (anderson at redhat.com)




More information about the Crash-utility mailing list