Change logs for crash source package in Jessie

  • crash (7.0.8-1) unstable; urgency=medium
    
    
      * Fix for the handling of 32-bit ELF xendump dumpfiles if the guest was
        configured with more than 4GB of memory.  Without the patch, the crash
        session may fail during initialization with the error message "crash:
        vmlinux and <dumpfile> do not match!".
      * Fix for file-handling errors when a compressed vmlinux.debug file is
        followed by a vmlinux file on the crash command line.  When the crash
        session ends, two errors will occur: (1) the vmlinux file will be deleted
        (2) the temporary uncompressed version of the vmlinux.debug file will
        remain in /var/tmp This problem also occurs in the highly unlikely case
        where a compressed vmlinux file is followed by a vmlinux.debug file on the
        command line, and the uncompressed temporary version of the vmlinux file
        is larger than the vmlinux.debug file.  In that case: (1) the
        vmlinux.debug file will be deleted (2) the temporary uncompressed version
        of the vmlinux file will remain in /var/tmp
      * Fix for the "search -t" option if the system has 2064 or more tasks.
        Without the patch, the command fails with a dump of the crash utility
        memory allocation statistics, ending with "search: cannot allocate any
        more memory!".
      * Fix for the "mod -S" command to find the debuginfo data for Red Hat
        "kpatch" modules.  Without the patch, the command would display "mod:
        cannot find or load object file for <kpatch-module> module".
      * Deprecated the "mount -f" option for Linux 3.13 and later kernels
        containing commit eee5cc2702929fd41cce28058dc6d6717f723f87, which removed
        the super_block.s_files list_head member and the open files list that it
        contained.  Without the patch, the command option fails with the error
        message "mount: invalid structure member offset: super_block_s_files"
      * If a compressed kdump is damaged/truncated such that the bitmap data in
        the dumpfile header is not contained within the file, attempts to analyze
        it with a vmlinux file, or using the "crash --osrelease" or "crash --log"
        options with just the vmcore, will result in the crash utility spinning
        forever, endlessly performing reads of 0 bytes from the file without
        recognizing the EOF condition.
      * Fix for an ARM64 compilation failure of the embedded gdb file
        "aarch-linux-nat.c" in the Fedora fc21 rawhide environment, which uses
        glibc-headers-2.19.90-24.fc21.
      * Document the reason behind the deprecation of the "mount -f" option for
        Linux 3.13 and later kernels if the option is attempted, and in the "help
        mount" output, similar to the deprecated "mount -d" option.
      * During initialization, reject useless ARM64 "(A)" absolute symbols that
        begin with "__crc_".  Without the patch, several thousand of them may be
        displayed by "sym -l" prior to the first kernel virtual address symbol.
      * When running against an ARM64 dumpfile created with the "snap.so"
        extension module, do not attempt to read the crash_notes.  Since the
        dumpfile was taken while running on a live system, the crash_notes, if
        configured into the kernel, would not contain valid data.  Without the
        patch, the message "WARNING: could not retrieve crash_notes" is displayed
        during session initialization.
      * Determine the various ARM64 kernel virtual address ranges using the
        kernel's VA_BITS value.  It currently is hardwired in the kernel to one of
        two values depending upon whether 4K or 64K pages are configured.
        However, there are plans to support 16K paqes, to make VA_BITS a
        configurable value, and to make the number of page-table levels
        configurable.  Towards that end, the crash utility has been changed to
        determine the VA_BITS value based upon known kernel virtual addresses, and
        to then calculate the relevant kernel virtual address ranges on that value
        instead of hardwiring them based upon the page size.
      * Enhancement to the "kmem -S" option for Linux 3.2 and later kernels
        configured with CONFIG_SLUB to display the address of each per-cpu
        kmem_cache_cpu address and the contents of its per-cpu partial list.
      * If an ARM or ARM64 dumpfile does not contain the register sets of the
        active tasks in the kernel's per-cpu crash_notes, there is an
        initialization-time warning message indicating "could not retrieve
        crash_notes".  It has been changed to a more meaningful warning message
        indicating "cannot retrieve registers for active tasks".
      * Implement support for ARM and ARM64 raw RAM dumpfiles.  One or more
        "ramdump" files may be entered on the crash command line in an ordered
        pair format consisting of the RAM dump filename and the starting physical
        address expressed in hexadecimal, connected with an ampersand:
    
        $ crash vmlinux ramdump@address [ramdump@address]
    
        A temporary ELF header will be created in /var/tmp, and the combination of
        the header and the ramdump file(s) will be handled like a normal ELF
        vmcore.  The ELF header will only exist during the crash session.  If
        desired, an optional "-o <filename>" may be entered to create a permanent
        ELF vmcore file from the ramdump file(s).
      * Fix for the "help -[nD]" ELF header translation to recognize the EM_ARM
        and EM_AARCH values as "e_machine" types, and ELFOSABI_LINUX as an
        "e_ident[EI_OSABI]" type.  Without the patch, the e_machine translation
        would show "40 (unsupported)" for 32-bit ARM, or "183 (unsupported)" on
        ARM64; and the ELFOSABI_LINUX type would be translated as "3 (?)".
      * Re-run a command in the history list by entering an "!" followed by the
        number identifying the command.  However, unlike the similar "r"
        pseudo-command, if the number is a command name in the user's PATH,
        maintain the current behavior and execute that command.
      * Fix to recognize that the live system "crash.ko" memory driver may be
        compressed and named "crash.ko.xz".  Without the patch, the driver is not
        recognized and loaded, and as a result the /dev/mem driver  and/or
        /proc/kcore will be tried as the live memory source.
      * On a live system during session initialization, delay the first read error
        message (typically when reading the "cpu_possible_mask") until it is
        confirmed that all of the following are true: (1) /dev/crash does not
        exist, and (2) /dev/mem is restricted via CONFIG_STRICT_DEVMEM, and (3)
        /proc/kcore cannot be read/accessed.  The "kernel may be configured with
        CONFIG_STRICT_DEVMEM" and the "trying /proc/kcore as an alternative"
        messages will still be displayed when appropriate.  The read error message
        be displayed only if all three live memory read options fail.
      * Fortify the validity verification of the data structures traversed by the
        "kmem [-sS]" options for kernels configured with CONFIG_SLUB.  Without the
        patch, the contents of several structure members are not validated, and
        may generate bogus or never-ending output, typically seen when running the
        commands on a "live dump" where the dumpfile was taken while the kernel
        was still running.  The patch aborts the relevant parts of per-kmem_cache
        output when invalid data is encountered or if an object list contains
        duplicate entries, and error messages have been enhanced to more
        accurately describe the issues encountered.
      * Implement support for the ppc64le PPC64 little-endian architecture.  Since
        this required a large number of patches to be applied to
        architecture-neutral files in the gdb-7.6 tree, the changes are only
        applied if the host build system is a ppc64le.
      * Fix for SMP active task register-gathering from "kvmdump" dumpfiles that
        were created with a cpu version id of 12 or greater that contain
        additional XSAVE related fields in their cpu device headers.  Without the
        patch, active tasks running on cpus above 0 may have truncated backtraces.
      * Maintain backwards-compatibility for "kvmdump" dumpfiles that were created
        by older development versions of KVM tools in which the cpu version id was
        12, but the cpu device headers did not contain the additional XSAVE
        related fields.
      * Address a "ps" command performance degradation that was introduced by a
        crash-7.0.4 patch which added per-thread task_struct.rss_stat page counts
        to the task's mm_struct.rss_stat page counts in order to show an
        accurate/synchronized RSS value.  Without the patch, the "ps" command
        performance would degrade as the number of tasks increased, most notably
        when there were thousands of tasks.
    
     -- Troy Heber <email address hidden>  Wed, 17 Sep 2014 08:30:13 -0600
  • crash (7.0.7-1) unstable; urgency=low
    
    
      * Export the static ELF and compressed kdump vmcoreinfo_read_string()
        functions from netdump.c and kdump.c via a new read_vmcoreinfo() method in
        the global program_context structure.  The function
        get_log_from_vmcoreinfo() will access vmcoreinfo data via the new pointer
        instead of requiring its callers to pass pointers to their
        dumpfile-specific function.
      * Linux 3.15 and later kernels configured with CONFIG_RANDOMIZE_BASE can be
        now be readily identified because of new kernel symbols that have been
        added.  For those kernels, the new "--kaslr=<offset>" and/or
        "--kaslr=auto" options are not necessary for ELF or compressed kdump
        vmcores, or for live systems that have /proc/kallsyms showing the
        relocated symbol values.  A new KASLR initialization function called
        kaslr_init() is now called by symtab_init() prior to the initial
        symbol-sorting operation.  If kaslr_init() determines that KASLR may be in
        effect, it will trigger a search for the relevant vmlinux symbols during
        the sorting operation, which in turn will cause the relocation value to be
        automatically calculated.
      * Implemented a new "bt -c cpu(s)" option to display the backtrace of the
        active task on one or more cpus.  The cpus must be specified in a comma-
        and/or dash-separated list; for examples ""3", "1,8,9", "1-23", or
        "1,8,9-14".  Similar to "bt -a", the option is only applicable with crash
        dumps.
      * Fix for Linux 3.11 and later ARM kernels, in which all non-panicking cpus
        offline themselves during a kdump procedure.  This causes an invalid cpu
        count determination during crash session initialization from an ARM
        vmcore.  The patch utilizes the cpu count found in the cpu_active_map if
        it is greater than the count in the cpu_online_map.  In addition, the
        maximum NR_CPUS value for the ARM architecture has been raised from 4 to
        32.
      * Fix for the X86_64 "bt" command on Linux 3.3 and later kernels to properly
        display exception frame register contents on NMI stacks.  Kernel commit
        3f3c8b8c4b2a34776c3470142a7c8baafcda6eb0 added 12 more values to the NMI
        exception stack to handle nested NMIs caused by page faults or breakpoints
        that could occur while handling an NMI exception.
      * Kernel commit 28696f434fef0efa97534b59986ad33b9c4df7f8 changed the stack
        layout again, swapping the location of the "saved" and "copied" registers.
        This can be detected automatically, because the "copied" registers contain
        either a copy of the "saved" registers, or point to "repeat_nmi". So, if
        "repeat_nmi" is found as the return address, assume that this is the old
        layout, and adjust the stack pointer again.  Without the patch, incorrect
        register values are displayed in the exception frame dump in the NMI stack
        backtrace.
      * Fix for the built-in "g" alias, which apparently has not worked correctly
        since crash-5.1.4.  Without the patch, if the "g" alias and the first
        argument are separated by one space, then the first first character of
        that argument would get stripped prior to being passed to the embedded gdb
        module.
      * Removed the BASELEVEL_REVISION string from defs.h, which serves no purpose
        since the deprecation of the remote daemon, and typically has been out of
        sync with the crash version.
      * Fix for the "p", "irq", "struct", "union" and "*" commands if a cpu
        specification contains an invalid cpu number.  Without the patch, a
        segmentation violation may be generated.
      * Implemented a new capability for the "ptov" command that takes a per-cpu
        offset and cpu specification argument and translates it into the kernel
        virtual addresses for the cpus specified.
      * Implemented a new "ps -m" option that is a similar, complementary option
        to "ps -l", but which translates the task timestamp value from a decimal
        or hexadecimal nanoseconds value into a more human-readable string
        consisting of the number of days, hours, minutes, seconds and milliseconds
        that have elapsed since the task started executing on a cpu.  More
        accurately described, it is the time difference between the timestamp
        copied from the per-cpu runqueue clock when the task last started
        executing compared to the most current value of the per-cpu runqueue
        clock.
      * In addition, a new "ps -C <cpu-specifier>" option has been added that can
        only be used with "ps -l" and "ps -m", which sorts the global task list
        into per-cpu blocks; the cpu-specifier uses the standard comma or dash
        separated list, expressed as "-C 1,3,5", "-C 1-3", "-C 1,3,5-7,10", or
        "-Call" or "-Ca" for all cpus.
      * Implemented a new "runq -m" option that is a simliar, complementary option
        to "runq -t", but which displays the amount of time that the active task
        on each cpu has been running, expressed in a format consisting of days,
        hours, minutes, seconds and milliseconds.
      * Implemented a new "kmem -h" option that displays the address of each
        hugepage hstate array entry, its hugepage size, its free and total counts,
        and name string.
      * Implemented a new "ps -S" option that displays a summary consisting of the
        number of tasks in a task state.
      * Fix for the "arguments-input-file" feature to protect against a called
        command modifying an argument string.  For example, the "struct" command
        modifies "-l struct_name.member" argument strings, and so without the
        patch, all iterative calls after the first one will fail.
      * Fix failure to build from source when compiling the crash utility with
        gcc-4.9 (closes: #746835)
      * Fix for displaying enum values that are greater than 32-bits in size.
        Without the patch, the upper 32-bits are clipped off and displayed as
        integer-sized value.
      * If the kernel (live or dumpfile) has the "kpatch" module installed, the
        tag "[KPATCH]" will be displayed next to the kernel name in the initial
        system banner and by the "sys" command.
      * Fix for the "DEBUG KERNEL:" display in the initial system banner and by
        the "sys" command when using a System.map file with a Linux 3.0 and later
        debug kernel.  Without the patch, the kernel version is not displayed in
        parentheses following the debug kernel name.
      * If the gdb-<version>.patch file has changed and a rebuild is being done
        from within a previously-existing build tree, "patch -N" the gdb sources,
        and start the rebuild from the gdb-<version> directory instead of the
        gdb-<version>/gdb directory.
      * Fix to prevent a possible segmentation violation generated by the "runq
        -g" command when run on a very active live system due to an active task on
        a cpu exiting while the command is running.
      * Fix for the "runq -g" command on Linux 3.15 and later kernels, where the
        cgroup_name() function now utilizes kernfs_name().  Without the patch, the
        command fails with the error message "runq: invalid structure member
        offset: cgroup_dentry".
      * Fix for the "extend" command when running with an x86_64 crash binary that
        was built with "make target=ARM64" in order to analyze ARM64 dumpfiles on
        an x86_64 host.  Without the patch, if the extend command is used with an
        extension module built in the same manner, it fails with the message
        "extend: <module>.so: not an ELF format object file".
      * Introduce support for 32-bit ARM kernels that are configured with
        CONFIG_ARM_LPAE.  The patch implements the virtual-to-physical address
        translation of 64-bit PTEs used by ARM LPAE kernels.
    
     -- Troy Heber <email address hidden>  Mon, 16 Jun 2014 10:24:39 -0600
  • crash (7.0.5-1) unstable; urgency=low
    
    
      * New upstream version 7.0.5
      * Fix for the "runq -g" option for kernels that are configured with
        CONFIG_FAIR_GROUP_SCHED, but not CONFIG_CFS_BANDWIDTH.  Without the patch,
        the command fails with the message "runq: invalid structure member offset:
        cfs_rq_throttled".
      * Add support for Xen PVH guest types introduced in Xen 4.4.  Without the
        patch, running against a Xen 4.4 hypervisor binary would fail during
        session initialization with the error message "crash: invalid structure
        member offset: domain_is_hvm".  In addition, the PVH guest type is being
        registered internally as an HVM guest type, the debug "help -X ofs"
        command's display of the domain_domain_flags offset has been fixed to show
        it in decimal, and the setting of the internal dc->domain_flags has been
        fixed to contain all flags set, not just the first one found.
      * Fix for the "kmem -S" command on Linux 3.1 and later kernels that are
        configured with CONFIG_SLUB.  Because the the page structure's inuse and
        objects fields used by SLUB were changed from discrete u16 types to
        bit-fields within an unsigned int, the display of per-node partial slab
        statistics are incorrect.  Without the patch, the TOTAL and ALLOCATED
        values are incorrectly shown as equal values, and therefore the FREE value
        is always zero.
      * Fix for the "kmem -S" command for kernels that are configured with
        CONFIG_SLUB.  Eash per-cpu slab object dump may show incorrect ALLOCATED
        and FREE values; and as seen on Linux 3.5 and later kernels, the TOTAL
        value and the number of individual objects dumped may also be incorrect
        (too small).
      * When executing the commands from an input file specified by the "-i
        <file>" command line option, or when accepting input from a file as a set
        of commands or as a set of command arguments using the "<" redirection
        character, unconditionally cease the operation if CTRL-c is entered.
        Without the patch, depending upon the command that was running when the
        SIGINT was received, the operation may continue uninterruptibly until the
        file contents are consumed.
      * Enhanced the "bt -F" option such that if "-F" is entered twice, and if the
        stack frame contents reference a slab cache object, both the slab cache
        name and the stack contents will be displayed within brackets.
      * Enhanced the "rd -S" option such that if "-S" is entered twice, and if the
        memory contents reference a slab cache object, both the slab cache name
        and the memory contents will be displayed within brackets.
      * Fix for the X86_64 "bt" command to prevent an unwarranted message
        indicating "WARNING: possibly bogus exception frame" generated from a
        blocked kernel thread that was in the process of exec'ing a user process
        via the call_usermodehelper() facility.
      * Fix for the X86_64 "bt" command to more correctly determine the function
        frame that called into an interrupted function.  Without the patch, the
        first frame just above an IRQ exception frame register dump may show an
        invalid/stale function.
      * Fix for the X86_64 "bt" command if a page fault exception was generated by
        the invalid contents of the RIP register.  Without the patch, the
        exception frame register dump is not displayed above the "page_fault"
        stack frame; and in a related issue, the "bt -e" option will not find and
        display the exception frame.
      * When invoking a crash session with a compressed vmlinux file, make the
        same host-machine/vmlinux endian verification that is done with
        uncompressed vmlinx files.
      * Reduce the number of CTRL-c entries required to unconditionally terminate
        any manually-entered command from three to one.
      * Fix for the X86_64 "bt" command if an async page fault exception occurred
        in a KVM guest running a Linux 2.6.38 or later kernel.  Without the patch,
        the exception frame register dump is not displayed above the
        "async_page_fault" stack frame.
    
     -- Troy Heber <email address hidden>  Mon, 14 Apr 2014 14:59:30 -0600
  • crash (7.0.3-3) unstable; urgency=low
    
    
      * Add autopkgtest and try to keep the Debian and Ubuntu crash packages in
        sync  (closes: #721095)
    
     -- Troy Heber <email address hidden>  Thu, 07 Nov 2013 08:14:34 -0700
  • crash (6.1.6-1) unstable; urgency=low
    
    
      * New upstream version 6.1.6
    
      * Fix for a crash-6.1.5 regression that causes the "mount" command to fail
        on kernel versions prior to Linux 3.3.  Without the patch, the command
        fails with the message "mount: invalid structure member offset:
        mount_mnt_devname".  
    
     -- Troy Heber <email address hidden>  Mon, 06 May 2013 11:20:38 -0600
  • crash (6.1.3-1) unstable; urgency=low
    
    
      * New upstream version 6.1.3
    
      * Implemented a new "crash --log dumpfile" option which dumps the 
      kernel log buffer and exits.  A kernel namelist is not required,
      but the dumpfile must contain the VMCOREINFO data from the ELF 
      header of the original /proc/vmcore file that was created by the
      kexec/kdump facility.  Accordingly, this option supports kdump ELF 
      vmcores and compressed kdump vmcores created by the makedumpfile
      facility, including those that are in makedumpfile's intermediary
      "vmcore.flat" format.
    
      * Fixes for the ppc64.c file to handle gcc-4.7.2 compiler warnings when
      building crash with "make warn", or compiler failures when building
      with "make Warn" on a PPC64 machine.  Without the patch, gcc-4.7.2 
      generates three "error: variable ‘<variable>’ set but not used 
      [-Werror=unused-but-set-variable]" messages.
    
      * Update the PPC64 architecure's internal storage of the kernel's 
      MAX_PHYSMEM_BITS value for Linux 3.7 and later kernels, which changed
      from 44 to 46 to for 64TB support.  Without the patch, there is no 
      known issue, but the stored value should be correct.
    
      * Fix for the "mount" command's header display to indicate "MOUNT"
      instead of "VFSMOUNT" on Linux 3.3 and later kernels because the
      the first column contains a mount structure address instead of a
      vfsmount structure address.  For those later kernels, it is 
      permissable to enter either the mount structure address, or the 
      address of the vfsmount structure that is embedded within it, as 
      an optional argument.  The output has also been tightened up so
      that the DIRNAME field is not shifted to the right based upon the
      DEVNAME field length.
    
      * Fix for the "mount <superblock>" search option on 2.6.32 and later
      kernels.  Without the patch, it is possible that multiple filesystems
      will be displayed.
    
      * Update to the "mount" help page to indicate that a dentry address 
      may be used as a search option.
    
      * Fix for the "ps -l [pid|task|command]" option to display the 
      specified tasks sorted with the most recently-run task (the largest 
      last_run/timestamp) shown first, as is done with the "ps -l" option
      with no arguments.  Without the patch, the timestamp data gets 
      displayed in the order of the "[pid|task|command]" arguments.
    
      * Added the "ps" command to the set of supported "foreach" commands,
      serving as an alternative manner of passing task-identifying
      arguments to the "ps" command.  For example, a command such as
      "foreach RU ps" can be accomplished without having to pipe normal
      "ps" output to "grep RU".  All "ps" options are supported from the
      "foreach" framework.
    
      * Fix for the "ps -G" restrictor option such that it also takes affect
      if the -p, -c, -l, -a, -r or -g options are used.  Without the 
      patch, thread group filtering would only take effect when the default 
      "ps" command is used without any of the options above.
    
      * Fortify the internal hq_open() function to return FALSE if it is
      already open, and have restore_sanity() and restore_ifile_sanity()
      call hq_close() unconditionally. 
    
      * Added the "extend" command to the set of built-in commands that
      support minimal mode.  A new MINIMAL flag has been created for 
      extension modules to set in their command_table_entry.flags field(s)
      to signal that a command supports minimal mode.  If the crash session
      has been invoked with --minimal, then the "extend" command will 
      require that the module registers at least one command that has 
      the MINIMAL bit set.
    
      * Prevent the "__crc_*" symbols from being added to the the ARM kernel
      symbol list.
    
      * Prevent the "PRRR" and "NMRR" absolute symbols from being added to
      the ARM kernel symbol list.  Without the patch, it allows an invalid
      set of addresses to pass the check in the in_ksymbol_range() function.
    
      * Fix for the ppc.c file to handle a gcc-4.7.2 compiler warning when
      building crash with "make warn", or compiler failures when building
      with "make Warn" on a PPC machine.  Without the patch, gcc-4.7.2
      generates the message "error: variable ‘dm’ set but not used
      [-Werror=unused-but-set-variable]".
    
      * Workaround for the "crash --osrelease dumpfile" option to be able
      to work with malformed ARM compressed kdump headers.  ARM compressed 
      kdumps that indicate header version 3 may contain a malformed 
      kdump_sub_header structure with offset_vmcoreinfo and size_vmcoreinfo
      fields offset by 4 bytes, and the actual vmcoreinfo data is not
      preceded by its ELF note header and its "VMCOREINFO" string.  This 
      workaround finds the vmcoreinfo data and patches the stored header's
      offset_vmcoreinfo and size_vmcoreinfo values.  Without the patch, the
      "--osrelease dumpfile" command line option fails with the message 
      "crash: compressed kdump: cannot lseek dump vmcoreinfo", followed by
      "unknown".
    
      * Fix for the "help -n" option on 32-bit compressed kdumps.  Without
      the patch, the offset_vmcoreinfo, offset_eraseinfo, and offset_note
      fields of the kdump_sub_header have their upper 32-bits clipped off
      when displayed.  However, it should be harmless since the offset 
      values point into the first few pages of the dumpfile.
    
      * Update of the extensions/echo.c extension module example, and the
      "extend" help page, to utilize a constructor function to call the
      register_extension() function.  The _init() and _fini() functions
      have been designated as obsolete for usage by dlopen() and dlclose().
      The echo.c example module has been modified to contain echo_init() 
      and echo_fini() functions marked as __attribute__((constructor)) and
      __attribute__((destructor)) respectively.
    
      * Updated extensions/dminfo.c, extensions/snap.c and extensions/trace.c
      to replace their _init() and _fini() functions with constructor and
      destructor functions.
    
      * Fix for the "bt" command on the PPC64 architecture when running 
      on Linux 3.7 kernel threads.  Without the patch, some kernel threads
      may fail to terminate on the final ".ret_from_kernel_thread" frame,
      repeating that frame endlessly, because the stack linkage pointer 
      points back to itself instead of being NULL.
    
     -- Troy Heber <email address hidden>  Wed, 13 Feb 2013 09:28:40 -0700