[ubuntu/zesty-proposed] crash 7.1.7-1ubuntu1 (Accepted)

Louis Bouchard louis.bouchard at ubuntu.com
Thu Jan 19 10:49:17 UTC 2017


crash (7.1.7-1ubuntu1) zesty; urgency=low

  * Merge from Debian unstable. (LP: #1657488)  Remaining changes:
    - Build for armhf, ppc64el.
    - Minor fixes for live autopkgtest.
    - debian/tests/live: Redirect gpg stderr to stdout, as that's the only
      known and expected stderr source.
    - Simplify ddeb archive requirements.

crash (7.1.7-1) unstable; urgency=medium

  * New upstream 7.1.7  (Closes: #843731):

  * Remove -pie compile option (Closes: #844831)

  * Set the default 32-bit MIPS HZ value to 100 if the in-kernel config data
    is unavailable, and have the "mach" command display the value.

  * Enable SPARSEMEM support on 32-bit MIPS by setting SECTION_SIZE_BITS and
    MAX_PHYSMEM_BITS.

  * Fix for Linux 4.9-rc1 commits 15f4eae70d365bba26854c90b6002aaabb18c8aa and
    c65eacbe290b8141554c71b2c94489e73ade8c8d, which have introduced a new
    CONFIG_THREAD_INFO_IN_TASK configuration.  This configuration moves each
    task's thread_info structure from the base of its kernel stack into its
    task_struct.  Without the patch, the crash session fails during
    initialization with the error "crash: invalid structure member offset:
    thread_info_cpu".

  * Fixes for the gathering of the active task registers from 32-bit MIPS
    dumpfiles: (1) If ELF notes are not available, read them from the kernel's
    crash_notes.  (2) If an online CPUs did not save its ELF notes, then
    adjust the mapping of each ELF note to its CPU accordingly.

  * Add support for "help -r" on 32-bit MIPS to display the registers for each
    CPU from a dumpfile.

  * Fix for Linux 4.9-rc1 commit 0100301bfdf56a2a370c7157b5ab0fbf9313e1cd,
    which rewrote the x86_64 switch_to() code by embedding the call to
    __switch_to() inside a new __switch_to_asm() assembly code ENTRY()
    function.  Without the patch, the message "crash: cannot determine thread
    return address" gets displayed during initialization, and the "bt" command
    shows frame #0 starting at "schedule" instead of "__schedule".

  * When each x86_64 per-cpu cpu_tss.x86_tss.ist[] array member (or in older
    kernels, each per-cpu init_tss.x86_hw_tss.ist[] array member), is compared
    with its associated per-cpu orig_ist.ist[] array member, ensure that both
    exception stack pointers have been initialized (non-NULL) before printing
    a WARNING message if they don't match.

  * Fix for a possible segmentation violation when analyzing Linux 4.7 x86_64
    kernels that are configured with CONFIG_RANDOMIZE_BASE.  Depending upon
    the randomized starting address of the kernel text and static data, a
    segmentation violation may occur during session initialization, just after
    the patching of the gdb minimal_symbol values message.

  * Restore the x86_64 "dis" command's symbolic translation of jump or call
    target addresses if the kernel was configured with CONFIG_RANDOMIZE_BASE.

  * Fix for the 32-bit MIPS "bt" command to prevent an empty display (task
    header only) for an active task if the epc register in its exception frame
    contains 00000000.

  * Fix for support of Linux 4.7 and later x86_64 ELF kdump vmcores from
    kernels configured with CONFIG_RANDOMIZE_BASE.  Without the patch, the
    crash session may fail during initialization with the message "crash:
    vmlinux and vmcore do not match!".

  * Fix for the x86_64 "mach" command display of the vmemmap base address in
    Linux 4.9 and later kernels configured with CONFIG_RANDOMIZE_BASE.
    Without the patch, the command shows a value of ffffea0000000000 next to
    "KERNEL VMEMMAP BASE".

  * Since the Linux 3.10 release, the kernel has offered the ability to create
    multiple independent ftrace buffers.  At present, however, the "trace.c"
    extension module is only able to extract the primary buffer.  This patch
    refactors the trace.c extension module so that the global instance is
    passed around as a parameter rather than accessing it directly, and then
    locates all of the available instances and extracts the data from each of
    them.

  * Fix for the s390x "bt" command for active tasks.  Since the commit above
    in this crash-7.1.7 release that added support for the new
    CONFIG_THREAD_INFO_IN_TASK configuration, the backtrace of active tasks
    can be incomplete.

  * In collaboration with an update to the /dev/crash kernel driver, fix for
    Linux 4.6 commit a7f8de168ace487fa7b88cb154e413cf40e87fc6, which allows
    the ARM64 kernel image to be loaded anywhere in physical memory.  Without
    the patch, attempting to run live on an ARM64 Linux 4.6 and later kernel
    may display the warning message "WARNING: cannot read linux_banner
    string", and then fails with the message "crash: vmlinux and /dev/crash do
    not match!".  Version 1.3 of the crash driver is required, which
    introduces a new ioctl command that retrieves the ARM64-only
    "kimage_voffset" value that is required for virtual-to-physical address
    translation.

  * Update of the sample memory_driver/crash.c /dev/crash kernel driver to
    version 1.3, which adds support for Linux 4.6 and later ARM64 kernels,
    kernels configured with CONFIG_HARDENED_USERCOPY, and S390X kernels use
    xlate_dev_mem_ptr() and unxlate_dev_mem_ptr() instead of kmap() and
    kunmap().

crash (7.1.6-1) unstable; urgency=medium

  * New upstream 7.1.5  (Closes: #843731):

  * Introduction of support for "live" ramdump files, such as those that are
    specified by the QEMU mem-path argument of a memory-backend-file object.
    This allows the running of a live crash session against a QEMU guest from
    the host machine.  In this example, the /tmp/MEM file on a QEMU host
    represents the guest's physical memory:

     $ qemu-kvm ...other-options... \
     -object memory-backend-file,id=MEM,size=128m,mem-path=/tmp/MEM,share=on \
     -numa node,memdev=MEM -m 128

    and a live session run can be run against the guest kernel like so:

     $ crash <path-to-guest-vmlinux> live:/tmp/MEM at 0

    By prepending the ramdump image name with "live:", the crash session will
    act as if it were running a normal live session.

  * Fix for the support of ELF vmcores created by the KVM "virsh dump
    --memory-only" facility if the guest kernel was not configured with
    CONFIG_KEXEC, or CONFIG_KEXEC_CORE in Linux 4.3 and later kernels.
    Without the patch, the crash session fails during initialization with the
    message "crash: cannot resolve kexec_crash_image".

  * Added support for x86_64 ramdump files.  Without the patch, the crash
    session fails immediately with the message "ramdump: unsupported machine
    type: X86_64".

  * Fix for a "[-Werror=misleading-indentation]" compiler warning that is
    generated by gdb-7.6/bfd/elf64-s390.c when building S390X in a Fedora
    Rawhide environment with gcc-6.0.0

  * Recognize and parse the new QEMU_VM_CONFIGURATION and QEMU_VM_FOOTER
    sections used for live migration of KVM guests, which are seen in the
    "kvmdump" format generated if "virsh dump" is used without the
    "--memory-only" option.

  * Fix for Linux commit edf14cdbf9a0e5ab52698ca66d07a76ade0d5c46, which has
    appended a NULL entry as the final member of the pageflag_names[] array.
    Without the patch, a message that indicates "crash: failed to read
    pageflag_names entry" is displayed during session initialization in Linux
    4.6 kernels.

  * Fix for Linux commit 0139aa7b7fa12ceef095d99dc36606a5b10ab83a, which
    renamed the page._count member to page._refcount.  Without the patch,
    certain "kmem" commands fail with the "kmem: invalid structure member
    offset: page_count".

  * Fix for an ARM64 crash-7.1.5 "bt" regression for a task that has called
    panic().  Without the patch, the backtrace may fail with a message such as
    "bt: WARNING: corrupt prstatus? pstate=0x20000000, but no user frame
    found" followed by "bt: WARNING: cannot determine starting stack frame for
    task <address>".  The pstate register warning will still be displayed (as
    it is essentially a kdump bug), but the backtrace will proceed normally.

  * Fix for the ARM64 "bt" command in Linux 4.5 and later kernels which use
    per-cpu IRQ stacks.  Without the patch, if an active non-crashing task was
    running in user space when it received the shutdown IPI from the crashing
    task, the "-- <IRQ stack> ---" transition marker from the IRQ stack to the
    process stack is not displayed, and a message indicating "bt: WARNING:
    arm64_unwind_frame: on IRQ stack: oriq_sp: <address> fp: 0 (?)" gets
    displayed.

  * Fix for the ARM64 "bt" command in Linux 4.5 and later kernels which are
    not configured with CONFIG_FUNCTION_GRAPH_TRACER.  Without the patch,
    backtraces that originate from a per-cpu IRQ stack will dump an invalid
    exception frame before transitioning to the process stack.

  * Introduction of ARM64 support for 4K pages with 4-level page tables and 48
    VA bits.

  * Implemented support for the redesigned ARM64 kernel virtual memory layout
    and associated KASLR support that was introduced in Linux 4.6.  The kernel
    text and static data has been moved from unity-mapped memory into the
    vmalloc region, and its start address can be randomized if
    CONFIG_RANDOMIZE_BASE is configured.  Related support is being put into
    the kernel's kdump code, the kexec-tools package, and makedumpfile(8);
    with that in place, the analysis of Linux 4.6 ARM64 dumpfiles with or
    without KASLR enabled should work normally by entering "crash vmlinux
    vmcore".  On live systems, Linux 4.6 ARM64 kernels will only work
    automatically if CONFIG_RANDOMIZE_BASE is not configured.  Unfortunately,
    if CONFIG_RANDOMIZE_BASE is configured on a live system, two --machdep
    command line arguments are required, at least for the time being.  The
    arguments are:

     --machdep phys_offset=<base physical address>
     --machdep kimage_voffset=<kernel kimage_voffset value>

    Without the patch, any attempt to analyze a Linux 4.6 ARM64 kernel fails
    during initialization with a stream of "read error" messages followed by
    "crash: vmlinux and vmcore do not match!".

  * Linux 3.15 and later kernels configured with CONFIG_RANDOMIZE_BASE could
    be identified because of the "randomize_modules" kernel symbol, and if it
    existed, the "--kaslr=<offset>" and/or "--kaslr=auto" options were
    unnecessary.  Since the "randomize_modules" symbol was removed in Linux
    4.1, this patch has replaced the KASLR identifier with the
    "module_load_offset" symbol, which was also introduced in Linux 3.15, but
    still remains.

  * Improvement of the ARM64 "bt -f" display such that in most cases, each
    stack frame level delimiter will be set to the stack address location
    containing the old FP and old LR pair.

  * Fix for the introduction of ARM64 support for 64K pages with 3-level page
    tables in crash-7.1.5, which fails to translate user space virtual
    addresses.  Without the patch, "vtop <user-space address>" fails to
    translate all user-space addresses, and any command that needs to either
    translate or read user-space memory, such as "vm -p", "ps -a", and "rd -u"
    will fail.

  * Enhancement of the error message generated by the "tree -t radix" option
    when a duplicate entry is encountered.  Without the patch, the error
    message shows the address of the radix_tree_node that contains the
    duplicate entry, for example, "tree: duplicate tree entry:
    <radix_tree_node>".  It has been changed to also display the
    radix_tree_node.slots[] array index and the duplicate entry value, for
    example, "tree: duplicate tree entry: radix_tree_node: <radix_tree_node>
    slots[<index>]: <entry>".

  * Introduction of a new "bt -v" option that checks the kernel stack of all
    tasks for evidence of stack overflows.  It does so by verifying the
    thread_info.task address, ensuring the thread_info.cpu value is a valid
    cpu number, and checking the end of the stack for the STACK_END_MAGIC
    value.

  * Fix to recognize a kernel thread that has user space virtual memory
    attached to it.  While kernel threads typically do not have an mm_struct
    referencing a user-space virtual address space, they can either
    temporarily reference one for a user-space copy operation, or in the case
    of KVM "vhost" kernel threads, keep a reference to the user space of the
    "quem-kvm" task that created them.  Without the patch, they will be
    mistaken for user tasks; the "bt" command will display an invalid
    kernel-entry exception frame that indicates "[exception RIP: unknown or
    invalid address]", the "ps" command will not enclose the command name with
    brackets, and the "ps -[uk]" and "foreach [user|kernel]" options will show
    the kernel thread as a user task.

  * Fix for the "bt -[eE]" options on ARM64 to recognize kernel exception
    frames in VHE enabled systems, in which the kernel runs in EL2.

  * Fix for the extensions/trace.c extension module to account for the Linux
    4.7 kernel commit dcb0b5575d24 that changed the bit index for the
    TRACE_EVENT_FL_TRACEPOINT flag.  Without the patch, the "extend" command
    fails to load the trace.so module, with the error message "extend:
    /path/to/crash/extensions/trace.so: no commands registered: shared object
    unloaded".  The patch reads the flag's enum value dynamically instead of
    using a hard-coded value.

  * Incorporated Takahiro Akashi's alternative backtrace method as a "bt"
    option, which can be accessed using "bt -o", and where "bt -O" will toggle
    the original and optional methods as the default.  The original backtrace
    method has adopted two changes/features from the optional method:
     (1) ORIG_X0 and SYSCALLNO registers are not displayed in kernel
         exception frames.
     (2) stackframe entry text locations are modified to be the PC
         address of the branch instruction instead of the subsequent
         "return" PC address contained in the stackframe link register.
   Accordingly, these are the essential differences between the original and
   optional methods:
     (1) optional: the backtrace will start with the IPI exception frame
         located on the process stack.
     (2) original: the starting point of backtraces for the active,
         non-crashing, tasks, will continue to have crash_save_cpu()
         on the IRQ stack as the starting point.
     (3) optional: the exception entry stackframe adjusted to be located
         farther down in the IRQ stack.
     (4) optional: bt -f does not display IRQ stack memory above the
         adjusted exception entry stackframe.
     (5) optional: may display "(Next exception frame might be wrong)".

  * Fix for the failure of the "sym <symbol>" option in the extremely unlikely
    case where the symbol's name string is composed entirely of hexadecimal
    characters.  For example, without the patch, "sym e820" fails with the
    error message "sym: invalid address: e820".

  * Fix for the failure of the "dis <symbol>" option in the extremely unlikely
    case where the symbol's name string is composed entirely of hexadecimal
    characters.  For example, without the patch, "dis f" fails with the error
    message "dis: WARNING: f: no associated kernel symbol found" followed by
    "0xf: Cannot access memory at address 0xf".

  * Fix for the X86_64 "bt -R <symbol>" option if the only reference to the
    kernel text symbol in a backtrace is contained within the "[exception RIP:
    <symbol+offset>]" line of an exception frame dump.  Without the patch, the
    reference will only be picked up if the exception RIP's hexadecimal
    address value is used.

  * Fix for the ARM64 "bt -R <symbol>" option if the only reference to the
    kernel text symbol in a backtrace is contained within the "[PC: <address>
    [<symbol+offset>]" line of an exception frame dump.  Without the patch,
    the reference will only be picked up if the PC's hexadecimal address value
    is used.

  * Fix for the gathering of module symbol name strings during session
    initialization.  In the unlikely case where the ordering of module symbol
    name strings does not match the order of the kernel_symbol structures, a
    faulty module symbol list entry may be created that contains a bogus name
    string.

  * Fix the PERCENTAGE of total output of the "kmem -i" SWAP USED line when
    the system has no swap pages at all.  Without the patch, both the PAGES
    and TOTAL columns show values of zero, but it confusingly shows "100% of
    TOTAL SWAP", which upon first glance may seem to indicate potential memory
    pressure.

  * Enhancement to determine structure member data if the member is contained
    within an anonymous structure or union.  Without the patch, it is
    necessary to parse the output of a discrete gdb "printf" command to
    determine the offset of such a structure member.

  * Speed up session initialization by attempting MEMBER_OFFSET_INIT() before
    falling back to ANON_MEMBER_OFFSET_INIT() in several known cases of
    structure members that are contained within anonymous structures.

  * Implemented new "list -S" and "tree -S" options that are similar to each
    command's -s option, but instead of parsing gdb output, member values are
    read directly from memory, so the command is much faster for 1-, 2-, 4-,
    and 8-byte members.

  * Fix to recognize and support x86_64 Linux 4.8-rc1 and later kernels that
    are configured with CONFIG_RANDOMIZE_MEMORY, which randomizes the base
    addresses of the kernel's unity-map address (PAGE_OFFSET), and the vmalloc
    region.  Without the patch, the crash utility fails with a segmentation
    violation during session initialization on a live system, or will generate
    a number of WARNING messages followed by the fatal error message "crash:
    vmlinux and <dumpfile name> do not match!" with dumpfiles.

  * Fix for Linux 4.1 commit d0a0de21f82bbc1737ea3c831f018d0c2bc6b9c2, which
    renamed the x86_64 "init_tss" per-cpu variable to "cpu_tss".  Without the
    patch, the addresses of the 4 per-cpu exception stacks cannot be
    determined, which causes backtraces that originate on any of the per-cpu
    DOUBLEFAULT, NMI, DEBUG, or MCE stacks to be truncated.

  * With the introduction of radix MMU in Power ISA 3.0, there are changes in
    kernel page table management accommodating it.  This patch series makes
    appropriate changes here to work for such kernels.  Also, this series
    fixes a few bugs along the way:

     ppc64: fix vtop page translation for 4K pages
     ppc64: Use kernel terminology for each level in 4-level page table
     ppc64/book3s: address changes in kernel v4.5
     ppc64/book3s: address change in page flags for PowerISA v3.0
     ppc64: use physical addresses and unfold pud for 64K page size
     ppc64/book3s: support big endian Linux page tables

    The patches are needed for Linux v4.5 and later kernels on all ppc64
    hardware.

  * Fix for Linux 4.8-rc1 commit 500462a9de657f86edaa102f8ab6bff7f7e43fc2, in
    which Thomas Gleixner redesigned the kernel timer mechanism to switch to a
    non-cascading wheel.  Without the patch, the "timer" command fails with
    the message "timer: zero-size memory allocation!  (called from <address>)"

  * Support for PPC64/BOOK3S virtual address translation for radix MMU.  As
    both radix and hash MMU are supported in a single kernel on Power ISA 3.0
    based server processors, identify the current MMU type and set page table
    index values accordingly.  Also, in Linux 4.7 and later kernels,
    PPC64/BOOK3S uses the same masked bit values in page table entries for 4K
    and 64K page sizes.

  * Change the RESIZEBUF() macro so that it will accept buffer pointers that
    are not declared as "char *" types.  Change two prior direct callers of
    resizebuf() to use RESIZEBUF(), and fix two prior users of RESIZEBUF() to
    correctly calculate the need to resize their buffers.

  * Fix for the "trace.so" extension module to properly recognize Linux 3.15
    and later kernels.  In crash-7.1.6, the MEMBER_OFFSET() macro has been
    improved so that it is able to recognize members of embedded anonymous
    structures.  However, the module's manner of recognizing Linux 3.15 and
    later kernels depended upon MEMBER_OFFSET() failing to handle anonymous
    members, and therefore the improvement prevented the module from
    successfully loading.

  * If a "struct" command address argument is expressed using the per-cpu
    "symbol:cpuspec" format, and the symbol is a pointer type, i.e., not the
    address of the structure, display a WARNING message.

  * Exclude ARM64 kernel module linker mapping symbols like "$d" and "$x" as
    is done with 32-bit ARM.  Without the patch, a crash session may fail
    during the "gathering module symbol data" stage with a message similar to
    "crash: store_module_symbols_v2: total: 15 mcnt: 16".

  * Enhancement to the ARM64 "dis" command when the kernel has enabled KASLR.
    When KASLR is enabled on ARM64, a function call between a module and the
    base kernel code will be done via a veneer (PLT) if the displacement is
    more than +/-128MB.  As a result, disassembled code will show a branch to
    the in-module veneer location instead of the in-kernel target location.
    To avoid confusion, the output of the "dis" command will translate the
    veneer location to the target location preceded by "plt:", for example,
    "<plt:printk>".

  * Improvement of the "dev -d" option to display I/O statics for disks whose
    device driver uses the blk-mq interface.  Currently "dev -d" always
    displays 0 in all fields for the blk-mq disk because blk-mq does not
    increment/decrement request_list.count[2] on I/O creation and I/O
    completion.  The following values are used in blk-mq in such situations:

     - I/O creation:   blk_mq_ctx.rq_dispatched[2]
     - I/O completion: blk_mq_ctx.rq_completed[2]

    So, we can get the counter of in-progress I/Os as follows: in progress
    I/Os == rq_dispatched - rq_completed This patch displays the result of
    above calculation for the disk.  It determines whether the device driver
    uses blk-mq if the request_queue.mq_ops is not NULL.  The "DRV" field is
    displayed as "N/A(MQ)" if the value for in-flight in the device driver
    does not exist for blk-mq.

crash (7.1.5-4) unstable; urgency=medium

  * Fix FTBFS due compiler warnings in elf64-s390.c

crash (7.1.5-3) unstable; urgency=medium

  * Update to packages-arch-specific to enable arm64

crash (7.1.5-2) unstable; urgency=medium

  * Forgot to close bug in the last upload (Closes: #811604)

Date: Wed, 18 Jan 2017 16:23:44 +0100
Changed-By: Louis Bouchard <louis.bouchard at ubuntu.com>
Maintainer: Ubuntu Developers <ubuntu-devel-discuss at lists.ubuntu.com>
https://launchpad.net/ubuntu/+source/crash/7.1.7-1ubuntu1
-------------- next part --------------
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Wed, 18 Jan 2017 16:23:44 +0100
Source: crash
Binary: crash
Architecture: source
Version: 7.1.7-1ubuntu1
Distribution: zesty
Urgency: medium
Maintainer: Ubuntu Developers <ubuntu-devel-discuss at lists.ubuntu.com>
Changed-By: Louis Bouchard <louis.bouchard at ubuntu.com>
Description:
 crash      - kernel debugging utility, allowing gdb like syntax
Closes: 811604 843731 844831
Launchpad-Bugs-Fixed: 1657488
Changes:
 crash (7.1.7-1ubuntu1) zesty; urgency=low
 .
   * Merge from Debian unstable. (LP: #1657488)  Remaining changes:
     - Build for armhf, ppc64el.
     - Minor fixes for live autopkgtest.
     - debian/tests/live: Redirect gpg stderr to stdout, as that's the only
       known and expected stderr source.
     - Simplify ddeb archive requirements.
 .
 crash (7.1.7-1) unstable; urgency=medium
 .
   * New upstream 7.1.7  (Closes: #843731):
 .
   * Remove -pie compile option (Closes: #844831)
 .
   * Set the default 32-bit MIPS HZ value to 100 if the in-kernel config data
     is unavailable, and have the "mach" command display the value.
 .
   * Enable SPARSEMEM support on 32-bit MIPS by setting SECTION_SIZE_BITS and
     MAX_PHYSMEM_BITS.
 .
   * Fix for Linux 4.9-rc1 commits 15f4eae70d365bba26854c90b6002aaabb18c8aa and
     c65eacbe290b8141554c71b2c94489e73ade8c8d, which have introduced a new
     CONFIG_THREAD_INFO_IN_TASK configuration.  This configuration moves each
     task's thread_info structure from the base of its kernel stack into its
     task_struct.  Without the patch, the crash session fails during
     initialization with the error "crash: invalid structure member offset:
     thread_info_cpu".
 .
   * Fixes for the gathering of the active task registers from 32-bit MIPS
     dumpfiles: (1) If ELF notes are not available, read them from the kernel's
     crash_notes.  (2) If an online CPUs did not save its ELF notes, then
     adjust the mapping of each ELF note to its CPU accordingly.
 .
   * Add support for "help -r" on 32-bit MIPS to display the registers for each
     CPU from a dumpfile.
 .
   * Fix for Linux 4.9-rc1 commit 0100301bfdf56a2a370c7157b5ab0fbf9313e1cd,
     which rewrote the x86_64 switch_to() code by embedding the call to
     __switch_to() inside a new __switch_to_asm() assembly code ENTRY()
     function.  Without the patch, the message "crash: cannot determine thread
     return address" gets displayed during initialization, and the "bt" command
     shows frame #0 starting at "schedule" instead of "__schedule".
 .
   * When each x86_64 per-cpu cpu_tss.x86_tss.ist[] array member (or in older
     kernels, each per-cpu init_tss.x86_hw_tss.ist[] array member), is compared
     with its associated per-cpu orig_ist.ist[] array member, ensure that both
     exception stack pointers have been initialized (non-NULL) before printing
     a WARNING message if they don't match.
 .
   * Fix for a possible segmentation violation when analyzing Linux 4.7 x86_64
     kernels that are configured with CONFIG_RANDOMIZE_BASE.  Depending upon
     the randomized starting address of the kernel text and static data, a
     segmentation violation may occur during session initialization, just after
     the patching of the gdb minimal_symbol values message.
 .
   * Restore the x86_64 "dis" command's symbolic translation of jump or call
     target addresses if the kernel was configured with CONFIG_RANDOMIZE_BASE.
 .
   * Fix for the 32-bit MIPS "bt" command to prevent an empty display (task
     header only) for an active task if the epc register in its exception frame
     contains 00000000.
 .
   * Fix for support of Linux 4.7 and later x86_64 ELF kdump vmcores from
     kernels configured with CONFIG_RANDOMIZE_BASE.  Without the patch, the
     crash session may fail during initialization with the message "crash:
     vmlinux and vmcore do not match!".
 .
   * Fix for the x86_64 "mach" command display of the vmemmap base address in
     Linux 4.9 and later kernels configured with CONFIG_RANDOMIZE_BASE.
     Without the patch, the command shows a value of ffffea0000000000 next to
     "KERNEL VMEMMAP BASE".
 .
   * Since the Linux 3.10 release, the kernel has offered the ability to create
     multiple independent ftrace buffers.  At present, however, the "trace.c"
     extension module is only able to extract the primary buffer.  This patch
     refactors the trace.c extension module so that the global instance is
     passed around as a parameter rather than accessing it directly, and then
     locates all of the available instances and extracts the data from each of
     them.
 .
   * Fix for the s390x "bt" command for active tasks.  Since the commit above
     in this crash-7.1.7 release that added support for the new
     CONFIG_THREAD_INFO_IN_TASK configuration, the backtrace of active tasks
     can be incomplete.
 .
   * In collaboration with an update to the /dev/crash kernel driver, fix for
     Linux 4.6 commit a7f8de168ace487fa7b88cb154e413cf40e87fc6, which allows
     the ARM64 kernel image to be loaded anywhere in physical memory.  Without
     the patch, attempting to run live on an ARM64 Linux 4.6 and later kernel
     may display the warning message "WARNING: cannot read linux_banner
     string", and then fails with the message "crash: vmlinux and /dev/crash do
     not match!".  Version 1.3 of the crash driver is required, which
     introduces a new ioctl command that retrieves the ARM64-only
     "kimage_voffset" value that is required for virtual-to-physical address
     translation.
 .
   * Update of the sample memory_driver/crash.c /dev/crash kernel driver to
     version 1.3, which adds support for Linux 4.6 and later ARM64 kernels,
     kernels configured with CONFIG_HARDENED_USERCOPY, and S390X kernels use
     xlate_dev_mem_ptr() and unxlate_dev_mem_ptr() instead of kmap() and
     kunmap().
 .
 crash (7.1.6-1) unstable; urgency=medium
 .
   * New upstream 7.1.5  (Closes: #843731):
 .
   * Introduction of support for "live" ramdump files, such as those that are
     specified by the QEMU mem-path argument of a memory-backend-file object.
     This allows the running of a live crash session against a QEMU guest from
     the host machine.  In this example, the /tmp/MEM file on a QEMU host
     represents the guest's physical memory:
 .
      $ qemu-kvm ...other-options... \
      -object memory-backend-file,id=MEM,size=128m,mem-path=/tmp/MEM,share=on \
      -numa node,memdev=MEM -m 128
 .
     and a live session run can be run against the guest kernel like so:
 .
      $ crash <path-to-guest-vmlinux> live:/tmp/MEM at 0
 .
     By prepending the ramdump image name with "live:", the crash session will
     act as if it were running a normal live session.
 .
   * Fix for the support of ELF vmcores created by the KVM "virsh dump
     --memory-only" facility if the guest kernel was not configured with
     CONFIG_KEXEC, or CONFIG_KEXEC_CORE in Linux 4.3 and later kernels.
     Without the patch, the crash session fails during initialization with the
     message "crash: cannot resolve kexec_crash_image".
 .
   * Added support for x86_64 ramdump files.  Without the patch, the crash
     session fails immediately with the message "ramdump: unsupported machine
     type: X86_64".
 .
   * Fix for a "[-Werror=misleading-indentation]" compiler warning that is
     generated by gdb-7.6/bfd/elf64-s390.c when building S390X in a Fedora
     Rawhide environment with gcc-6.0.0
 .
   * Recognize and parse the new QEMU_VM_CONFIGURATION and QEMU_VM_FOOTER
     sections used for live migration of KVM guests, which are seen in the
     "kvmdump" format generated if "virsh dump" is used without the
     "--memory-only" option.
 .
   * Fix for Linux commit edf14cdbf9a0e5ab52698ca66d07a76ade0d5c46, which has
     appended a NULL entry as the final member of the pageflag_names[] array.
     Without the patch, a message that indicates "crash: failed to read
     pageflag_names entry" is displayed during session initialization in Linux
     4.6 kernels.
 .
   * Fix for Linux commit 0139aa7b7fa12ceef095d99dc36606a5b10ab83a, which
     renamed the page._count member to page._refcount.  Without the patch,
     certain "kmem" commands fail with the "kmem: invalid structure member
     offset: page_count".
 .
   * Fix for an ARM64 crash-7.1.5 "bt" regression for a task that has called
     panic().  Without the patch, the backtrace may fail with a message such as
     "bt: WARNING: corrupt prstatus? pstate=0x20000000, but no user frame
     found" followed by "bt: WARNING: cannot determine starting stack frame for
     task <address>".  The pstate register warning will still be displayed (as
     it is essentially a kdump bug), but the backtrace will proceed normally.
 .
   * Fix for the ARM64 "bt" command in Linux 4.5 and later kernels which use
     per-cpu IRQ stacks.  Without the patch, if an active non-crashing task was
     running in user space when it received the shutdown IPI from the crashing
     task, the "-- <IRQ stack> ---" transition marker from the IRQ stack to the
     process stack is not displayed, and a message indicating "bt: WARNING:
     arm64_unwind_frame: on IRQ stack: oriq_sp: <address> fp: 0 (?)" gets
     displayed.
 .
   * Fix for the ARM64 "bt" command in Linux 4.5 and later kernels which are
     not configured with CONFIG_FUNCTION_GRAPH_TRACER.  Without the patch,
     backtraces that originate from a per-cpu IRQ stack will dump an invalid
     exception frame before transitioning to the process stack.
 .
   * Introduction of ARM64 support for 4K pages with 4-level page tables and 48
     VA bits.
 .
   * Implemented support for the redesigned ARM64 kernel virtual memory layout
     and associated KASLR support that was introduced in Linux 4.6.  The kernel
     text and static data has been moved from unity-mapped memory into the
     vmalloc region, and its start address can be randomized if
     CONFIG_RANDOMIZE_BASE is configured.  Related support is being put into
     the kernel's kdump code, the kexec-tools package, and makedumpfile(8);
     with that in place, the analysis of Linux 4.6 ARM64 dumpfiles with or
     without KASLR enabled should work normally by entering "crash vmlinux
     vmcore".  On live systems, Linux 4.6 ARM64 kernels will only work
     automatically if CONFIG_RANDOMIZE_BASE is not configured.  Unfortunately,
     if CONFIG_RANDOMIZE_BASE is configured on a live system, two --machdep
     command line arguments are required, at least for the time being.  The
     arguments are:
 .
      --machdep phys_offset=<base physical address>
      --machdep kimage_voffset=<kernel kimage_voffset value>
 .
     Without the patch, any attempt to analyze a Linux 4.6 ARM64 kernel fails
     during initialization with a stream of "read error" messages followed by
     "crash: vmlinux and vmcore do not match!".
 .
   * Linux 3.15 and later kernels configured with CONFIG_RANDOMIZE_BASE could
     be identified because of the "randomize_modules" kernel symbol, and if it
     existed, the "--kaslr=<offset>" and/or "--kaslr=auto" options were
     unnecessary.  Since the "randomize_modules" symbol was removed in Linux
     4.1, this patch has replaced the KASLR identifier with the
     "module_load_offset" symbol, which was also introduced in Linux 3.15, but
     still remains.
 .
   * Improvement of the ARM64 "bt -f" display such that in most cases, each
     stack frame level delimiter will be set to the stack address location
     containing the old FP and old LR pair.
 .
   * Fix for the introduction of ARM64 support for 64K pages with 3-level page
     tables in crash-7.1.5, which fails to translate user space virtual
     addresses.  Without the patch, "vtop <user-space address>" fails to
     translate all user-space addresses, and any command that needs to either
     translate or read user-space memory, such as "vm -p", "ps -a", and "rd -u"
     will fail.
 .
   * Enhancement of the error message generated by the "tree -t radix" option
     when a duplicate entry is encountered.  Without the patch, the error
     message shows the address of the radix_tree_node that contains the
     duplicate entry, for example, "tree: duplicate tree entry:
     <radix_tree_node>".  It has been changed to also display the
     radix_tree_node.slots[] array index and the duplicate entry value, for
     example, "tree: duplicate tree entry: radix_tree_node: <radix_tree_node>
     slots[<index>]: <entry>".
 .
   * Introduction of a new "bt -v" option that checks the kernel stack of all
     tasks for evidence of stack overflows.  It does so by verifying the
     thread_info.task address, ensuring the thread_info.cpu value is a valid
     cpu number, and checking the end of the stack for the STACK_END_MAGIC
     value.
 .
   * Fix to recognize a kernel thread that has user space virtual memory
     attached to it.  While kernel threads typically do not have an mm_struct
     referencing a user-space virtual address space, they can either
     temporarily reference one for a user-space copy operation, or in the case
     of KVM "vhost" kernel threads, keep a reference to the user space of the
     "quem-kvm" task that created them.  Without the patch, they will be
     mistaken for user tasks; the "bt" command will display an invalid
     kernel-entry exception frame that indicates "[exception RIP: unknown or
     invalid address]", the "ps" command will not enclose the command name with
     brackets, and the "ps -[uk]" and "foreach [user|kernel]" options will show
     the kernel thread as a user task.
 .
   * Fix for the "bt -[eE]" options on ARM64 to recognize kernel exception
     frames in VHE enabled systems, in which the kernel runs in EL2.
 .
   * Fix for the extensions/trace.c extension module to account for the Linux
     4.7 kernel commit dcb0b5575d24 that changed the bit index for the
     TRACE_EVENT_FL_TRACEPOINT flag.  Without the patch, the "extend" command
     fails to load the trace.so module, with the error message "extend:
     /path/to/crash/extensions/trace.so: no commands registered: shared object
     unloaded".  The patch reads the flag's enum value dynamically instead of
     using a hard-coded value.
 .
   * Incorporated Takahiro Akashi's alternative backtrace method as a "bt"
     option, which can be accessed using "bt -o", and where "bt -O" will toggle
     the original and optional methods as the default.  The original backtrace
     method has adopted two changes/features from the optional method:
      (1) ORIG_X0 and SYSCALLNO registers are not displayed in kernel
          exception frames.
      (2) stackframe entry text locations are modified to be the PC
          address of the branch instruction instead of the subsequent
          "return" PC address contained in the stackframe link register.
    Accordingly, these are the essential differences between the original and
    optional methods:
      (1) optional: the backtrace will start with the IPI exception frame
          located on the process stack.
      (2) original: the starting point of backtraces for the active,
          non-crashing, tasks, will continue to have crash_save_cpu()
          on the IRQ stack as the starting point.
      (3) optional: the exception entry stackframe adjusted to be located
          farther down in the IRQ stack.
      (4) optional: bt -f does not display IRQ stack memory above the
          adjusted exception entry stackframe.
      (5) optional: may display "(Next exception frame might be wrong)".
 .
   * Fix for the failure of the "sym <symbol>" option in the extremely unlikely
     case where the symbol's name string is composed entirely of hexadecimal
     characters.  For example, without the patch, "sym e820" fails with the
     error message "sym: invalid address: e820".
 .
   * Fix for the failure of the "dis <symbol>" option in the extremely unlikely
     case where the symbol's name string is composed entirely of hexadecimal
     characters.  For example, without the patch, "dis f" fails with the error
     message "dis: WARNING: f: no associated kernel symbol found" followed by
     "0xf: Cannot access memory at address 0xf".
 .
   * Fix for the X86_64 "bt -R <symbol>" option if the only reference to the
     kernel text symbol in a backtrace is contained within the "[exception RIP:
     <symbol+offset>]" line of an exception frame dump.  Without the patch, the
     reference will only be picked up if the exception RIP's hexadecimal
     address value is used.
 .
   * Fix for the ARM64 "bt -R <symbol>" option if the only reference to the
     kernel text symbol in a backtrace is contained within the "[PC: <address>
     [<symbol+offset>]" line of an exception frame dump.  Without the patch,
     the reference will only be picked up if the PC's hexadecimal address value
     is used.
 .
   * Fix for the gathering of module symbol name strings during session
     initialization.  In the unlikely case where the ordering of module symbol
     name strings does not match the order of the kernel_symbol structures, a
     faulty module symbol list entry may be created that contains a bogus name
     string.
 .
   * Fix the PERCENTAGE of total output of the "kmem -i" SWAP USED line when
     the system has no swap pages at all.  Without the patch, both the PAGES
     and TOTAL columns show values of zero, but it confusingly shows "100% of
     TOTAL SWAP", which upon first glance may seem to indicate potential memory
     pressure.
 .
   * Enhancement to determine structure member data if the member is contained
     within an anonymous structure or union.  Without the patch, it is
     necessary to parse the output of a discrete gdb "printf" command to
     determine the offset of such a structure member.
 .
   * Speed up session initialization by attempting MEMBER_OFFSET_INIT() before
     falling back to ANON_MEMBER_OFFSET_INIT() in several known cases of
     structure members that are contained within anonymous structures.
 .
   * Implemented new "list -S" and "tree -S" options that are similar to each
     command's -s option, but instead of parsing gdb output, member values are
     read directly from memory, so the command is much faster for 1-, 2-, 4-,
     and 8-byte members.
 .
   * Fix to recognize and support x86_64 Linux 4.8-rc1 and later kernels that
     are configured with CONFIG_RANDOMIZE_MEMORY, which randomizes the base
     addresses of the kernel's unity-map address (PAGE_OFFSET), and the vmalloc
     region.  Without the patch, the crash utility fails with a segmentation
     violation during session initialization on a live system, or will generate
     a number of WARNING messages followed by the fatal error message "crash:
     vmlinux and <dumpfile name> do not match!" with dumpfiles.
 .
   * Fix for Linux 4.1 commit d0a0de21f82bbc1737ea3c831f018d0c2bc6b9c2, which
     renamed the x86_64 "init_tss" per-cpu variable to "cpu_tss".  Without the
     patch, the addresses of the 4 per-cpu exception stacks cannot be
     determined, which causes backtraces that originate on any of the per-cpu
     DOUBLEFAULT, NMI, DEBUG, or MCE stacks to be truncated.
 .
   * With the introduction of radix MMU in Power ISA 3.0, there are changes in
     kernel page table management accommodating it.  This patch series makes
     appropriate changes here to work for such kernels.  Also, this series
     fixes a few bugs along the way:
 .
      ppc64: fix vtop page translation for 4K pages
      ppc64: Use kernel terminology for each level in 4-level page table
      ppc64/book3s: address changes in kernel v4.5
      ppc64/book3s: address change in page flags for PowerISA v3.0
      ppc64: use physical addresses and unfold pud for 64K page size
      ppc64/book3s: support big endian Linux page tables
 .
     The patches are needed for Linux v4.5 and later kernels on all ppc64
     hardware.
 .
   * Fix for Linux 4.8-rc1 commit 500462a9de657f86edaa102f8ab6bff7f7e43fc2, in
     which Thomas Gleixner redesigned the kernel timer mechanism to switch to a
     non-cascading wheel.  Without the patch, the "timer" command fails with
     the message "timer: zero-size memory allocation!  (called from <address>)"
 .
   * Support for PPC64/BOOK3S virtual address translation for radix MMU.  As
     both radix and hash MMU are supported in a single kernel on Power ISA 3.0
     based server processors, identify the current MMU type and set page table
     index values accordingly.  Also, in Linux 4.7 and later kernels,
     PPC64/BOOK3S uses the same masked bit values in page table entries for 4K
     and 64K page sizes.
 .
   * Change the RESIZEBUF() macro so that it will accept buffer pointers that
     are not declared as "char *" types.  Change two prior direct callers of
     resizebuf() to use RESIZEBUF(), and fix two prior users of RESIZEBUF() to
     correctly calculate the need to resize their buffers.
 .
   * Fix for the "trace.so" extension module to properly recognize Linux 3.15
     and later kernels.  In crash-7.1.6, the MEMBER_OFFSET() macro has been
     improved so that it is able to recognize members of embedded anonymous
     structures.  However, the module's manner of recognizing Linux 3.15 and
     later kernels depended upon MEMBER_OFFSET() failing to handle anonymous
     members, and therefore the improvement prevented the module from
     successfully loading.
 .
   * If a "struct" command address argument is expressed using the per-cpu
     "symbol:cpuspec" format, and the symbol is a pointer type, i.e., not the
     address of the structure, display a WARNING message.
 .
   * Exclude ARM64 kernel module linker mapping symbols like "$d" and "$x" as
     is done with 32-bit ARM.  Without the patch, a crash session may fail
     during the "gathering module symbol data" stage with a message similar to
     "crash: store_module_symbols_v2: total: 15 mcnt: 16".
 .
   * Enhancement to the ARM64 "dis" command when the kernel has enabled KASLR.
     When KASLR is enabled on ARM64, a function call between a module and the
     base kernel code will be done via a veneer (PLT) if the displacement is
     more than +/-128MB.  As a result, disassembled code will show a branch to
     the in-module veneer location instead of the in-kernel target location.
     To avoid confusion, the output of the "dis" command will translate the
     veneer location to the target location preceded by "plt:", for example,
     "<plt:printk>".
 .
   * Improvement of the "dev -d" option to display I/O statics for disks whose
     device driver uses the blk-mq interface.  Currently "dev -d" always
     displays 0 in all fields for the blk-mq disk because blk-mq does not
     increment/decrement request_list.count[2] on I/O creation and I/O
     completion.  The following values are used in blk-mq in such situations:
 .
      - I/O creation:   blk_mq_ctx.rq_dispatched[2]
      - I/O completion: blk_mq_ctx.rq_completed[2]
 .
     So, we can get the counter of in-progress I/Os as follows: in progress
     I/Os == rq_dispatched - rq_completed This patch displays the result of
     above calculation for the disk.  It determines whether the device driver
     uses blk-mq if the request_queue.mq_ops is not NULL.  The "DRV" field is
     displayed as "N/A(MQ)" if the value for in-flight in the device driver
     does not exist for blk-mq.
 .
 crash (7.1.5-4) unstable; urgency=medium
 .
   * Fix FTBFS due compiler warnings in elf64-s390.c
 .
 crash (7.1.5-3) unstable; urgency=medium
 .
   * Update to packages-arch-specific to enable arm64
 .
 crash (7.1.5-2) unstable; urgency=medium
 .
   * Forgot to close bug in the last upload (Closes: #811604)
Checksums-Sha1:
 f729d90280aff9d9a2ac18876f746a01126bc9d3 1962 crash_7.1.7-1ubuntu1.dsc
 ce3949345bd9aaab765af8daa297c2c92f9f5d13 32151661 crash_7.1.7.orig.tar.gz
 2ff0bee7fe01847b9128103c8a2c3a7dd25320df 111158 crash_7.1.7-1ubuntu1.diff.gz
Checksums-Sha256:
 3187872c66c23eda58f6a237b152943f15a420f90778048b92b1ea08cc73b333 1962 crash_7.1.7-1ubuntu1.dsc
 c4b7740ce914b0196f07a9a8b8d35a6e698dd72a9f86f0f8328a579bdc7015ae 32151661 crash_7.1.7.orig.tar.gz
 42a8d24358d898947369c40abf5bdf20860c54cedf1567155438b912147a08b5 111158 crash_7.1.7-1ubuntu1.diff.gz
Files:
 38edc197ac983ecda11e4c25adf604ed 1962 utils optional crash_7.1.7-1ubuntu1.dsc
 08990e1d242faaaa11e7fbb6386f28e2 32151661 utils optional crash_7.1.7.orig.tar.gz
 d7534c143fd91b71353bd1867de4a01d 111158 utils optional crash_7.1.7-1ubuntu1.diff.gz
Original-Maintainer: Troy Heber <troyh at debian.org>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBCAAGBQJYf4kQAAoJEFZStL2qfwOtjW8P/A0pHtWHHmX+3XMIMDYRAmg1
ZbL1JQw6XKoSqQSg/teXZT78oPdmN9JLdskwzEKzYEpluokFaSDUphq+HicPyyP5
i8PtWTECbJbiUR7kCHeZwD95mhsCUwk9FKs1HkkkCZzpy1PiHl5mtb1RAtGWlXbM
6VsetXpavl/03s40BGqeMf9NT3dakDdUjKetvgW81XUdlIBHV/unF10EeDwKeKgd
GoEA0Iw4f5z/g+lEE6bta0t2NYm1O8xGvw4N/GsZ2pbopJF4us8PQzCQwS5jmM+Q
BqonbADyuYK62IqxoIKChbxELM+6tBjvd82O7q2HsiGVbayAN6TI3W4I2Mi3DxWA
KblUCv1zRfSSJBP3YOxz89bPGnO9HtzHDC0em37Ehv501a3jgONyJhBXncE82ud7
xcPY8BWovoG8uwfFnw6NJ/hf/yCrIJEjonK31cpXj2IbMmoUo2YtJx+bPjA9mBju
gKPa8UXtbjuvBqJv2bdt2+YVilo1r9yXTprdh5jJvX+VBnwR7W/7pgxydf1ab9ZP
Rllxy9ZjfrmnM/f8MwQQ7E3VZpESctz70JRs0BcOGbjVad1qITTpdmsUnyr2v5tH
1LHaXgxF2oLXCPg2Q/8FRpwLPo3vqltLAs+r31+fj4gzD1hvG8uhME9yb46jJmd5
TmM/mhXBi14UwLyKbWT7
=DB2Y
-----END PGP SIGNATURE-----


More information about the Zesty-changes mailing list