[ubuntu/xenial-updates] crash 7.2.3+real-1~16.04.1 (Accepted)

Łukasz Zemczak lukasz.zemczak at canonical.com
Thu Sep 6 09:21:31 UTC 2018


crash (7.2.3+real-1~16.04.1) xenial; urgency=medium

  * Backport to xenial. LP: #1746088
    - Build-Depends on debhelper 9.

crash (7.2.3+real-1) unstable; urgency=medium

  * Revert wget addition and re-include embedded gdb (Closes: #901863)

crash (7.2.3-2) unstable; urgency=medium

  * Add wget as a builddep

crash (7.2.3-1) unstable; urgency=medium

  * Fix for a crash-7.2.2 regression that may cause the "mount" command to
    generate a segmentation violation.  The bug is dependent upon the compiler
    version used to build the crash utility, where a buffer overrun is not
    seen with more recent versions of gcc, which hide the bug due to a
    different stack layout of a function's local variables.

  * Fix for a second crash-7.2.2 buffer overrun regression that may cause the
    "rd -S" option to generate a segmentation violation if a displayed memory
    location contains a slab object address.

  * Fix for a third, highly unlikely, crash-7.2.2 buffer overrun regression,
    that could potentially occur during session initialization.

crash (7.2.2-1) UNRELEASED; urgency=medium

  * Fix to support Linux 4.16-rc1 and later ARM64 kernels, which fail during
    session initialization with the error message "crash: cannot determine
    page size".  The failure to determine the page size is due to the
    combination of the following kernel commits: - Linux 4.6 commit
    6ad1fe5d9077a1ab40bf74b61994d2e770b00b14 arm64: avoid R_AARCH64_ABS64
    relocations for Image header fields - Linux 4.10 commit
    4b65a5db362783ab4b04ca1c1d2ad70ed9b0ba2a arm64: Introduce
    uaccess_{disable,enable} functionality based on TTBR0_EL1 - Linux 4.16
    commit 1e1b8c04fa3451e2b7190930adae43c95f0fae31 arm64: entry: Move the
    trampoline to be before PAN

  * Fix the search for the booted kernel on a live system to prevent selecting
    the unusable "vmlinux.o" file found in private build directories.  Without
    the patch, the non-executable vmlinux.o file may be selected, and the
    resulting fatal error message indicates a somewhat misleading "crash:
    cannot resolve _stext".

  * Implemented a new "ps -A" option that restricts the task output to just
    the active tasks on each cpu.

  * As the first step in optimizing the is_page_ptr() function, save the
    maximum SPARSEMEM section number during initialization, and use it as the
    topmost delimeter in subsequent mem_section searches.  Also allow for
    per-architecture machdep->is_page_ptr() plugin functions.

  * Implemented the x86_64 machdep->is_page_ptr() plugin function.  If the
    kernel is configured with CONFIG_SPARSEMEM_VMEMMAP, the plugin function
    optimizes the mem_section search, reducing the computation effort and time
    consumed by commands that repeatedly call the is_page_ptr() function on
    large-memory systems.

  * Fixes for 32-bit X86 "bt" command on kernels that have been compiled with
    retpoline gcc support.  Without the patch, backtraces may fail with the
    error message "bt: cannot resolve stack trace", followed by the text
    symbols found on the stack and possible exception frames.

  * Fix the "help foreach" argument list to include the new "gleader" task
    qualifier option that was added in version 7.1.2.

  * VMware VMSS dumpfiles contain the state of each vCPU at the time when the
    VM was suspended.  This patch enables crash to read the relevant registers
    from each vCPU state for use as the starting hooks by the "bt" command.
    Also, support for "help -[D|n]" to display dumpfile contents, and "help
    -r" to display vCPU register sets has been implemented.  This is also the
    first step towards implementing automatic KASLR offset calculations for
    VMSS dumpfiles.

  * Commit 45b74b89530d611b3fa95a1041e158fbb865fa84 added support for
    calculating phys_base and the mapped kernel offset for KASLR-enabled
    kernels on SADUMP dumpfiles by using a technique developed by Takao Indoh.
    Originally, the patchset included support for kdumps, but this was dropped
    in v2, as it was deemed unnecessary due to the upstream implementation of
    the "vmcoreinfo device" in QEMU.  However, there are still several reasons
    for which the vmcoreinfo device may not be present at the time when a
    memory dump is taken from a VM, ranging from a host running older
    QEMU/libvirt versions, to misconfigured VMs or environments running
    Hypervisors that doesn't support this device.  This patchset generalizes
    the KASLR-related functions from sadump.c and moves them to
    kaslr_helper.c, and makes kdump analysis fall back to KASLR offset
    calculation if vmcoreinfo data is missing.

  * Fix for the "bt" command on 4.16 and later kernels size in which the
    "thread_union" data structure is not contained in the vmlinux file's
    debuginfo data.  Without the patch, the kernel stack size is not
    calculated correctly, and defaults to 8K.  As a result "bt" fails with the
    message "bt: invalid RSP: <address> bt->stackbase/stacktop:
    <address>/<address> cpu: <number>".

  * Fix for the x86_64 "bt" command for kernels that are configured with
    CONFIG_FRAME_POINTER.  Without the patch, the per-text-return-address
    framesize cache may contain invalid entries for functions that have an
    "and $0xfffffffffffffff0,%rsp" instruction in their prologue, which aligns
    the stack on a 16-byte boundary; therefore any cached framesize for a
    text-return-address in such a function may be incorrect depending upon the
    alignment of the stack address of a calling function.  If an invalid
    cached framesize is utilized by "bt", the backtrace may skip over several
    frames, or may display one or more invalid (stale) frames.  The patch
    introduces a new cache that contains functions for which framesize values
    should not be cached.

  * Speed up the "bt" command by avoiding the text value cache that was put in
    place many years ago when the crash utility supported the analysis of
    remote dumpfiles using the deprecated "crash daemon" running on the remote
    host.  The performance improvement will be most noticable when running the
    first instance of "foreach bt", where there would often be a "hitch" when
    it was determining the framesize of kernel module text return addresses.

  * Optimization of the crash startup time and "ps" command processing time
    when analyzing dumpfiles/systems with extremely large task counts.  For
    example, running with a dumpfile containing over a million tasks, startup
    time and "ps" processing time was reduced from 90 minutes to less then 40
    seconds.

  * Speed up the "ps -r" option by stashing the length of the task_struct.rlim
    or signal_struct.rlim array in the internal array_table[].  Without the
    patch, the length of the array is determined by a call to the embedded gdb
    module for each task, and as a result, the command takes a minute or more
    per 1000 tasks.  With the patch applied, it only takes about 0.5 seconds
    per 1000 tasks.

  * Added a new "tree -l" option for the rbtree display, which dumps the tree
    sorted in linear order, starting with the leftmost node and progressing to
    the right.  Also, if a corrupted rb_node pointer is encountered, do not
    fail immediately, but rather display the rb_node address and the corrupt
    pointer and continue.

  * Display a fatal error message if the "tree -l" option is attempted with
    radix trees.  Without the patch, the option would be silently ignored.

  * Introduction of a new "bpf" command that displays information about loaded
    eBFP (extended Berkeley Packet Filter) programs and maps.  Because of its
    upstream fluidity, the capabilities of this command will be an ongoing
    task.  In its initial form, the command displays the addresses, basic
    information, and key data structures of eBPF programs and maps.  It also
    translates the bytecode, and disassembles the jited code, of loaded eBPF
    programs.

  * Fixes to address several gcc-8.0.1 compiler warnings that are generated
    when building with "make warn".  The warnings are all false alarm messages
    of type [-Wformat-overflow=], [-Wformat-truncation=] and
    [-Wstringop-truncation]; the affected files are extensions.c, task.c,
    kernel.c, memory.c, remote.c, symbols.c, filesys.c and xen_hyper.c.

  * Fix for the "ps -a" option for a user task that has utilized
    "prctl(PR_SET_MM, ...)" to self-modify its memory map such that the stack
    locations of its command line arguments and environment variables such are
    not contiguous.  Without the patch, the command may fail with a dump of
    the crash utility's internal buffer usage statistics followed by "ps:
    cannot allocate any more memory!".

  * Fix for a compilation error on ARM64.  Without the patch, the compilation
    of the new bpf.c file fails with the error message "bpf.c:881:18: error:
    conflicting types for 'u64'"

  * Fix for an s390x session initialization-time warning that indicates
    "WARNING: cannot determine MAX_PHYSMEM_BITS" on Linux 4.15 and later
    kernels containing commit 83e3c48729d9ebb7af5a31a504f3fd6aff0348c4, which
    changed the data type of "mem_section" from an array to a pointer.
    Without the patch, the s390x manner of determining MAX_PHYSMEM_BITS fails
    because it presumes that "mem_section" is an array, and as a result,
    displays the warning message.

  * Fix for the determination of the ARM64 phys_offset value when running live
    against /proc/kcore.  Without the patch, the message "WARNING: cannot
    access vmalloc'd module memory" may be displayed during session
    initialization, and vmalloc/module memory will be unaccessible.  (It
    should be noted that at the time of this patch, the upstream version of
    /proc/kcore does not work correctly for ARM64, because PT_LOAD segments
    for unity-mapped blocks of physical are not generated.)

  * For live system analysis, if both "/dev/mem" and the "/dev/crash" memory
    driver do not exist, try to use "/proc/kcore".  Without the patch, the
    session fails immediately with the error message "crash: /dev/mem: No such
    file or directory".

  * Fix, and an update, for the "ipcs" command.  The fix addresses an error
    where IPCS entries are not displayed because of a faulty read of the
    "deleted" member of the embedded "kern_ipc_perm" data structure.  The
    "deleted" member was being read as a 4-byte integer, but since it is
    declared as a "bool" type, only the lowest byte gets set to 1 or 0.  Since
    the structure is not zeroed-out when allocated, stale data may be left in
    the upper 3 bytes, and the IPCS entry gets rejected.  The update is
    required for Linux 4.11 and greater kernels, which reimplemented the IDR
    facility to use radix trees in kernel commit
    0a835c4f090af2c76fc2932c539c3b32fd21fbbb, titled "Reimplement IDR and IDA
    using the radix tree".  Without the patch, if any IPCS entry exists, the
    command would fail with the message "ipcs: invalid structure member
    offset: idr_top"

  * Second stage of the new "bpf" command.  This patch adds additional
    per-program and per-map data for the "bpf -p ID" and "bpf -m ID" options,
    containing data items shown by the "bpftool prog list" and "bpftool map
    list" options; new "bpf -P" and "bpf -M" options have been added that dump
    the extra data for all loaded programs or tasks.

  * Fix for a compilation error of the new "bpf.c" file when building on older
    host systems where CLOCK_BOOTTIME does not exist.

  * Fix for infrequent failures of the x86 "bt" command to handle cases where
    a user space task with "resume_userspace" or "entry_INT80_32" at the top
    of the stack, or which was interrupted by the crash NMI while handling a
    timer interrupt.  Without the patch, the backtrace would be proceeded with
    the error message "bt: cannot resolve stack trace", and then dump the text
    symbols found on the stack and all possible exception frames.

  * Trivial formatting fix to "bpf" help page.

  * Fix the "bpf" command display on Linux 4.17-rc1 and later kernels, which
    contain two new program types, BPF_PROG_TYPE_RAW_TRACEPOINT and
    BPF_PROG_TYPE_CGROUP_SOCK_ADDR.  Without the patch, the dynamic header
    string created for bpf programs overran into the bpf map header, creating
    one long combined header string.

  * Updates for the presumption that system call names begin with "sys_".  In
    Linux 4.17, x86_64 system calls may begin with "__x64_sys", where, for
    example, "sys_read" has been replaced by "__x64_sys_read".

crash (7.2.1-2) unstable; urgency=medium

  * Do not git clone eppic extension. (Closes: #898707), from Thadeu Lima de
    Souza Cascardo <cascardo at debian.org>
  * Remove generated files: CFLAGS.extra LDFLAGS.extra extensions/defs.h, from
    Thadeu Lima de Souza Cascardo <cascardo at debian.org>

crash (7.2.1-1) unstable; urgency=medium

  * New upstream (closes: #890394)

  * Fix for the "runq" command on Linux 4.14 and later kernels that contain
    commit cd9e61ed1eebbcd5dfad59475d41ec58d9b64b6a, titled "rbtree: cache
    leftmost node internally".  Without the patch, the command fails with the
    error message "runq: invalid structure member offset: cfs_rq_rb_leftmost".

  * Fix to prevent a useless message during session inialization.  Without the
    patch, if the highest possible node bit in the node_states[N_ONLINE]
    multi-word bitmask is set, then a message such as "crash:
    next_online_node: 256 is too large!" will be displayed.

  * Additional fixes for the ARM64 "bt" command for Linux 4.14 kernels.  The
    patch corrects the contents of in-kernel exception frame register dumps,
    and properly transitions the backtrace from the IRQ stack to the process
    stack.

  * Implemented a new "search -T" option, which is identical to the "search
    -t" option, except that the search is restricted to the kernel stacks of
    active tasks.

  * Removal of the ARM64 "bt -o" option for Linux 4.14 and later kernels,
    along with several cleanups/readability improvements.

  * Fix for support of KASLR enabled kernels captured by the SADUMP dumpfile
    facility. SADUMP dumpfile headers do not contain phys_base or VMCOREINFO
    notes, so without this patch, the crash session fails during
    initialization with the message "crash: seek error: kernel virtual
    address: <address>  type: "page_offset_base".  This patch calculates the
    phys_base value and the KASLR offset using the IDTR and CR3 registers from
    the dumpfile header.

  * Implemented a new "ps -y policy" option to filter the task display by
    scheduling policy.  Applicable to both standalone ps invocation as well as
    via foreach.

  * Fix for the "kmem -[sS]" options on Linux 4.14 and later kernels that
    contain commit 2482ddec670fb83717d129012bc558777cb159f7, titled "mm: add
    SLUB free list pointer obfuscation".  Without the patch, there will
    numerous error messages of the type "kmem: <cache name> slab: <address>
    invalid freepointer: <obfuscated address>" if the kernel is configured
    with CONFIG_SLAB_FREELIST_HARDENED.

  * Fix for the validation of the bits located in the least significant bits of
    mem_section.section_mem_map pointers.  Without the patch, the validation
    functions always returned valid, due to a coding error found by clang.
    However, it was never really a problem because it is extremely unlikely
    that an existing mem_section would ever be invalid.

  * Fix for the x86_64 kernel virtual address to physical address translation
    mechanism.  Without the patch, when verifying that the PAGE_PRESENT bit is
    set in the top-level page table, it would always test positively, and the
    translation would continue parsing the remainder of the page tables.  This
    would virtually never be a problem in practice because if the top-level
    page table entry existed, its PAGE_PRESENT bit would be set.

  * Removed a check for a negative block_size value which is always a
    non-negative unsigned value in the SADUMP header parsing function.

  * Removed a check for an impossible negative value when calculating the
    beginning address when applying the context value specified by the "search
    -x <count>" option.

  * Implemented a new "timer -C <cpu-specifier>" option that restricts the
    timer or hrtimer output to the timer queue data associated with one or
    more cpus.  For multiple cpus, the cpu-specifier uses the standard comma
    or dash separated list format.

  * Fix for a "ps -l" regression introduced by the new "ps -y" option
    introduced above.  Without the patch, the -l option generates a
    segmentation violation if not accompanied by a -C cpu specifier option.

  * Fix for the "kmem -i" and "kmem -V" options in Linux 4.8 and later kernels
    containing commit 75ef7184053989118d3814c558a9af62e7376a58, titled "mm,
    vmstat: add infrastructure for per-node vmstats".  Without the patch, the
    CACHED line of "kmem -i" shows 0, and the VM_STAT section of "kmem -V" is
    missing entirely.

  * Fix for Linux 4.11 and later kernels that contain kernel commit
    4b3ef9daa4fc0bba742a79faecb17fdaaead083b, titled "mm/swap: split swap
    cache into 64MB trunks".  Without the patch, the CACHED line of "kmem -i"
    may show nonsensical data.

  * Implemented a new "dev -D" option that is the same as "dev -d", but
    filters out the display of disks that have no I/O in progress.

  * If a line number request for a module text address initially fails, force
    the embedded gdb module to complete its two-stage strategy used for
    reading debuginfo symbol tables from module object files, and then retry
    the line number extraction.  This automatically does what the "mod -r" or
    "crash --readnow" options accomplish.

  * Update for support of Linux 4.12 and later PPC64 kernels where the hash
    page table geometry accommodates a larger virtual address range.  Without
    the patch, the virtual-to-physical translation of user space virtual
    addresses by "vm -p", "vtop", and "rd -u" may generate an invalid
    translation or otherwise fail.

  * Implemented a new "runq -T" option that displays the time lag of each CPU
    relative to the most recent runqueue timestamp.

  * Fix to support Linux 4.15 and later kernels that contain kernel commit
    e8cfbc245e24887e3c30235f71e9e9405e0cfc39, titled "pid: remove pidhash".
    The kernel's traditional usage of a pid_hash[] array to store PIDs has
    been replaced by an IDR radix tree, requiring a new crash plug-in function
    to gather the system's task set.  Without the patch, the crash session
    fails during initialization with the error message "crash: cannot resolve
    init_task_union".

  * Fix for the "net" command when the network device listing has an unusually
    large number of IP addresses.  In that case, without the patch, the
    command may generate a segmentation violation.

  * Fix for Linux 4.15 and later kernels that are configured with
    CONFIG_SPARSEMEM_EXTREME, and that contain kernel commit
    83e3c48729d9ebb7af5a31a504f3fd6aff0348c4, titled "mm/sparsemem: Allocate
    mem_section at runtime for CONFIG_SPARSEMEM_EXTREME=y".  Without the
    patch, kernels configured with SPARSEMEM_EXTREME have changed the data
    type of "mem_section" from an array to a pointer, leading to errors in
    commands such as "kmem -p", "kmem -n", "kmem -s", and any other command
    that translates a physical address to its page struct address.

  * With the latest PPC64 NMI IPI changes, crash_ipi_callback is found
    multiple times on the stack of active non-panic tasks.  Ensure that the
    symbol reference relates to an actual backtrace stack frame.

  * Update the starting virtual address of vmalloc space for kernels
    configured with CONFIG_X86_5LEVEL.

  * Update the X86_64 VSYSCALL_END address to reflect that it only contains 1
    page.

  * Prevent the X86_64 FILL_PML() macro from updating the internal
    machdep->machspec->last_pml4_read address every time a vmalloc'd kernel
    virtual address is translated.

  * Fix for the "bt" command in x86_64 kernels that contain, or have backports
    of, kernel commit 4950d6d48a0c43cc61d0bbb76fb10e0214b79c66, titled
    "x86/dumpstack: Remove 64-byte gap at end of irq stack".  Without the
    patch, backtraces fail to transition from the IRQ stack back to the
    process stack, showing an error message such as "bt: cannot transition
    exception stack to IRQ stack to current process stack".

  * Initial pass for support of kernel page table isolation.  The x86_64 "bt"
    command may indicate "bt: cannot transition from exception stack to
    current process stack" if the crash callback NMI occurred while an active
    task was running on the new entry trampoline stack.  This has only been
    tested on the RHEL7 backport of the upstream patch because as of this
    commit, crash does not run on 4.15-rc kernels.  Further changes may be
    required for upstream kernels, and distributions that implement the kernel
    changes differently than upstream.

  * Fix for the "bt" command and the "ps -s" option for zombie tasks whose
    kernel stacks have been freed/detached.  Without the patch, the "bt"
    command indicates "bt: invalid kernel virtual address: 0 type: stack
    contents" and "bt: read of stack at 0 failed"; it will be changed to
    display "(no stack)".  The "ps -s" option would fail prematurely upon
    reaching such a task, indicating "ps: invalid kernel virtual address: 0
    type: stack contents" and "ps: read of stack at 0 failed".

  * Fix for running on live systems on 4.15-rc2 and later kernels that are
    configured with CONFIG_RANDOMIZE_BASE and contain kernel commit
    668533dc0764b30c9dd2baf3ca800156f688326b, titled "kallsyms: take advantage
    of the new '%px' format".  Without the patch, a live crash session does
    not show the "WARNING: kernel relocated ..." message expected with KASLR,
    and then displays the message "crash: cannot set context for pid: <pid>"
    prior to generating a SIGSEGV.

  * Fix for 4.15-rc5 and later x86_64 kernels that contain kernel commit
    c482feefe1aeb150156248ba0fd3e029bc886605, titled "x86/entry/64: Make
    cpu_entry_area.tss read-only".  Without the patch, the addresses and sizes
    of the x86_64 exception stacks cannot be determined; therefore if a
    backtrace starts on one of the exception stacks, then the "bt" command
    will fail.

  * Additional fix for support of KASLR enabled kernels captured by the SADUMP
    dumpfile facility, where this patch fixes a problem when Page Table
    Isolation(PTI) is enabled.  When PTI is enabled, bit 12 of CR3 register is
    used to split user space and kernel space.  Also bit 11:0 is used for
    Process Context IDentifiers(PCID).  To open an SADUMP dumpfile, the value
    of CR3 is used to calculate KASLR offset and phys_base; this patch masks
    the CR3 register value correctly for a PTI enabled kernel.

  * Second phase of future support for x86_64 5-level page tables.  This patch
    is a cleanup/collaboration of the original logic used by the various vtop
    functions, where several new common functions have been added for
    extracting page table entries from PGD, P4D, PUD, PMD and PTE pages.  The
    usage of the former PML4 and UPML pages have been replaced with the use of
    the common PGD page, and use the PUD page in 4-level page table
    translation.  Support for 5-level page tables has been incorporated into
    the the existing x86_64_kvtop() and x86_64_uvtop_level4() functions.
    Backwards compatibility for older legacy kernels has been maintained.  The
    third phase of support will automatically detect whether the kernel
    proper, and whether an individual user task, is utilizing 5-level page
    tables.  This patch enables support for kernel-only 5-level page tables by
    entering the command line option "--machdep vm=5level".

  * Xen commit 615588563e99a23aaf37037c3fee0c413b051f4d (Xen 4.0.0.) extended
    the direct mapping to 5 TB.  This area was previously reserved for future
    use, so it is OK to simply change the upper bound unconditionally.

  * Add a new "foreach gleader" qualifier option, restricting the output to
    user-space tasks that are thread group leaders.

  * Since Xen commit 666aca08175b ("sched: use the auto-generated list of
    schedulers") crash cannot open Xen vmcores because the "schedulers" symbol
    no longer exists.  Xen 4.7 implemented schedulers as its own section in
    "xen/arch/x86/xen.lds.S", delimited by the two symbols
    "__start_schedulers_array" and "__end_schedulers_array".  Without the
    patch, the crash session fails during initialization with the error
    message "crash: cannot resolve schedulers"

  * Fix the sample crash.ko memory driver to prevent an s390X kernel
    addressing exception.  Legitimate pages of RAM that successfully pass the
    page_is_ram() and pfn_valid() verifier functions may not be provided by
    the s390x hypervisor, and the memcpy() from the non-existent memory to the
    bounce buffer panics the kernel.  The patch replaces the the memcpy() call
    with probe_kernel_read().

  * Fix for the ARM64 "bt" command running against Linux 4.14 and later
    kernels.  Without the patch, the backtraces of the active tasks in a
    kdump-generated dumpfile are truncated.  Without the patch, the panic task
    will just show the "crash_kexec" frame and the kernel-entry user-space
    exception frame; the non-panic tasks will show their backtraces starting
    from the stackframe addresses captured in the per-cpu NT_PRSTATUS notes,
    and will not display the exception frame generated by the NMI callback,
    nor any stackframes on the IRQ stack.

  * Fix for the ARM64 "bt" command in kernels that contain commit
    30d88c0e3ace625a92eead9ca0ad94093a8f59fe, titled "arm64: entry: Apply BP
    hardening for suspicious interrupts from EL0".  Without the patch, there
    may be invalid kernel kernel exception frames displayed on an active
    task's kernel stack, often below a stackframe of the
    "do_el0_ia_bp_hardening" function; the address translation of the PC and
    LR values in the the bogus exception frame will display "[unknown or
    invalid address]".

crash (7.2.0-1) unstable; urgency=medium

  * New upstream (closes: #884464)

  * Fix for the "snap.so" extension module to pass the KASLR relocation offset
    value in the ELF header for x86_64 kernels that are compiled with
    CONFIG_RANDOMIZE_BASE.  Without the patch, it is necessary to use the
    "--kaslr=<offset>" command line option, or the session fails with the
    message "WARNING: cannot read linux_banner string", followed by "crash:
    vmlinux and vmcore do not match!".

  * The native gdb "disassemble" command fails if the kernel has been compiled
    with CONFIG_RANDOMIZE_BASE because the embedded gdb module still operates
    under the assumption that the (non-relocated) text locations in the
    vmlinux file are correct.  The error message that is issued is somewhat
    confusing, indicating "No function contains specified address".  This
    patch simply clarifies the error message to indicate "crash: the gdb
    "disassemble" command is prohibited because the kernel text was relocated
    by KASLR; use the crash "dis" command instead."

  * Fix for the "mach -m" command in Linux 4.9 and later kernels that contain
    commit 475339684ef19e46f4702e2d185a869a5c454688, titled "x86/e820: Prepare
    e280 code for switch to dynamic storage", in which the "e820" symbol was
    changed from a static e820map structure to a pointer to an e820map
    structure.  Without the patch, the command either displays just the
    header, or the header with several nonsensical entries.

  * Fix for Linux 4.10 and later kdump dumpfiles, or kernels that have
    backported commit 401721ecd1dcb0a428aa5d6832ee05ffbdbffbbe, titled "kexec:
    export the value of phys_base instead of symbol address".  Without the
    patch, if the x86_64 "phys_base" value in the VMCOREINFO note is a
    negative decimal number, the crash session fails during session
    intialization with a "page excluded" or "seek error" when reading
    "page_offset_base".

  * Fix for the PPC64 "pte" command.  Without the patch, if the target PTE
    references a present page, the physical address is incorrect.

  * Fix for a 32-bit MIPS compilation error if glibc-2.25 or later has been
    installed on the host build machine.  Without the patch, the build fails
    with the error message "mips-linux-nat.c:157:1: error: conflicting types
    for 'ps_get_thread_area'".

  * Fix for the validity check of S390X virtual addresses for 5-level page
    tables where user space memory is mapped above 8 Petabytes.  Without the
    patch, "rd -u" fails and indicates "invalid user virtual address", and
    "vtop -u" indicates that the address is "(not mapped)".

  * Crash 7.1.5 commit c3413456599161cabc4e910a0ae91dfe5eec3c21 (xen: Add
    support for dom0 with Linux kernel 3.19 and newer) from Daniel Kiper
    implemented support for Xen dom0 vmcores after Linux 3.19 kernel commit
    054954eb051f35e74b75a566a96fe756015352c8 (xen: switch to linear virtual
    mapped sparse p2m list).  This patch can be deemed subsequent to Daniel's
    patch, and implements support Xen PV domU dumpfiles for Linux 3.19 and
    later kernels.

  * Fix for the "dis" command to detect duplicate symbols in the case of a
    "symbol+offset" argument where the duplicates are not contiguous in the
    symbol list.  Without the patch, the first of multiple symbol instances is
    used in the address evaluation.  With the patch, the command will fail
    with the error message "dis: <symbol+offset>: duplicate text symbols
    found:", followed by a list of the duplicate symbols, and their file and
    line numbers if available.

  * Enhancement to the error reporting mechanism for the "kmem -[sS]" options.
    When a fatal error is encountered while gathering basic CONFIG_SLUB
    statistics, it is possible that the slab cache name is not displayed in
    the error message, and the line containing the slab cache name, address,
    etc., is not displayed at all.  With this patch, an extra error message
    indicating "kmem: <cache-name>: cannot gather relevant slab data" will be
    displayed under the fatal error message; and under that, the CACHE
    address, cache NAME, OBJSIZE, and SSIZE columns will be displayed, but
    with "?" under the ALLOCATED, TOTAL, and SLABS columns.

  * Fix to prevent the "tree -t radix" option from failing when it encounters
    duplicate entries in a radix_tree_node[slots] array.  Without the patch,
    if a duplicate slot entry is found, the command fails with the message
    "tree: duplicate tree entry: radix_tree_node: <node address>
    slots[<index>]: <entry>\n".  (The error can be prevented if the command is
    preceded by "set hash off".)  However, certain radix trees contain
    duplicate entries by design, such as the "pgmap_radix" radix tree, in
    which a radix_tree_node may contain multiple instances of the same
    page_map structure.  With the patch, checks will only be made for
    duplicate radix_tree_node structures.

  * First phase of future support for x86_64 5-level page tables.  New sets of
    virtual memory offsets have been #define'd and helper macros and
    placeholder functions for the p4d page tables have been added.  The only
    functional changes with this patchset are dynamically-set PGDIR_SHIFT and
    PHYSICAL_MASK_SHIFT values that are based upon the kernel configuration.

  * Fix for a build failure.  Without the patch, if the build is done by a
    user whose username cannot be determined from the user ID number, the
    build fails immediately with a segmentation fault.

  * Fix for Linux 4.13-rc0 commit 7fd8329ba502ef76dd91db561c7aed696b2c7720
    "x86/boot/64: Rename init_level4_pgt and early_level4_pgt".  Without the
    patch, the crash session fails during initialization with the error
    message "crash: cannot resolve "init_level4_pgt".

  * The internal "build_data" string contains the compile-time date, the user
    id of the builder, and the build machine hostname, and is viewable by the
    "crash --buildinfo" command line option or by the "help -B" option during
    runtime.  This patch replaces that string data with "reproducible build"
    if the SOURCE_DATE_EPOCH environment variable contains a value string when
    the crash binary is compiled.

  * Fix for Linux 4.13-rc1 commit 2d070eab2e8270c8a84d480bb91e4f739315f03d
    "mm: consider zone which is not fully populated to have holes".  Without
    the patch, SPARSEMEM page struct addresses are incorrectly calculated
    because a new section state, and an associated flag bit, has been added to
    the low bits of the mem_section.section_mem_map address; the extra bit is
    erroneously passed back as part of the section_mem_map and resultant page
    struct address, leading to errors in commands such as "kmem -p", "kmem
    -s", "kmem -n", and any other command that translates a physical address
    to its page struct address.

  * Enhancement to the S390X "vtop" command to display page table walk
    information, adding output showing the following page table contents:

       "Region-First-Table Entry" (RFTE)
       "Region-Second-Table Entry" (RSTE)
       "Region-Third-Table Entry" (RTTE)
       "Segment Table Entry" (STE)
       "Page Table Entry" (PTE)
       "Read address of page" (PAGE)

    Depending on the size of the address space, the page tables can start at
    different levels.  For example:

      crash> vtop 3ff8000c000
      VIRTUAL           PHYSICAL
      3ff8000c000       2e3832000

      PAGE DIRECTORY: 0000000000aaa000
       RTTE: 0000000000aadff8 => 00000002e3c00007
        STE: 00000002e3c00000 => 00000002e3df7000
        PTE: 00000002e3df7060 => 00000002e383203d
       PAGE: 00000002e3832000

            PAGE      PHYSICAL     MAPPING      INDEX CNT FLAGS
      3d10b8e0c80    2e3832000               0       0  1 7fffc0000000000


  * Fix the s390dbf time stamps for S390X kernel versions 4.11 and 4.14.  With
    kernel commit ea417aa8a38bc7db ("s390/debug: make debug event time stamps
    relative to the boot TOD clock") for s390dbf time is stored relative to
    the kernel boot time.  In order to still show absolute time since 1970 we
    have to detect those kernels and re-add the boot time before printing the
    records.  We can use the tod_to_timeval() symbol to check for those
    kernels because the patch has removed the symbol.  With kernel commit
    6e2ef5e4f6cc5734 ("s390/time: add support for the TOD clock epoch
    extension") the symbol name for storing the boot time has changed from
    "sched_clock_base_cc" to "tod_clock_base".  This commit is currently on
    the s390 features branch and will be integrated in Linux 4.14.

  * Further enhancement to the S390X "vtop" command to translate the binary
    values of the hardware flags for region, segment and page table entries.
    For example:

      crash> vtop -u 0x60000000000000 VIRTUAL           PHYSICAL
      60000000000000    5b50a000

      PAGE DIRECTORY: 000000005cea0000 RFTE: 000000005cea0018 =>
      000000006612400f (flags = 00f) flags in binary : P=0; TF=00; I=0; TT=11;
      TL=11 RSTE: 0000000066124000 => 000000005d91800b (flags = 00b) flags in
      binary : P=0; TF=00; I=0; TT=10; TL=11 RTTE: 000000005d918000 =>
      000000006615c007 (flags = 007) flags in binary : FC=0; P=0; TF=00; I=0;
      CR=0; TT=01; TL=11 STE: 000000006615c000 => 000000005ce48800 (flags =
      800) flags in binary : FC=0; P=0; I=0; CS=0; TT=00 PTE: 000000005ce48800
      => 000000005b50a03f (flags = 03f) flags in binary : I=0; P=0 PAGE:
      000000005b50a000

    or for large pages:

      crash> vtop -k 0x3d100000000 VIRTUAL           PHYSICAL 3d100000000
      77c00000

      PAGE DIRECTORY: 0000000001210000 RTTE: 0000000001213d10 =>
      0000000077dc4007 (flags = 007) flags in binary : FC=0; P=0; TF=00; I=0;
      CR=0; TT=01; TL=11 STE: 0000000077dc4000 => 0000000077c03403 (flags =
      03403) flags in binary : AV=0, ACC=0011; F=0; FC=1; P=0; I=0; CS=0;
      TT=00


  * PPC64 kernel commit 2f18d533757da3899f4bedab0b2c051b080079dc lowered the
    max real address to 53 bits.  Without this patch, the warning message
    "WARNING: cannot access vmalloc'd module memory" appears during
    initialization, and any command that attempts to read a vmalloc'd kernel
    virtual address will fail and display "read error" messages.

  * Display the KASLR relocation value warning message whenever it is in use.
    Without the patch, the message may not get displayed if the --kaslr option
    is used, or if the dumpfile is a vmcore generated by the current snap.so
    extension module, which now exports the relocation value in the header.

  * Fix to prevent an initialization-time failure when running a live session
    on a host system that does not have a "/usr/src" directory.  Without the
    patch, the session fails with the message "*** Error in 'crash': free():
    invalid pointer: <address> ***".  (Lei Chen)

  * Fix for the ARM64 "bt" command's display of the user mode exception frame
    at the top of the stack in Linux 4.7 and later kernels.  Without the
    patch, the contents of the user mode exception frame are invalid due to
    the miscalculation of the starting address of the pt_regs structure on the
    kernel stack.

  * Integrated support for usage of the Linux 4.14 ORC unwinder by the x86_64
    "bt" command.  Kernels configured with CONFIG_ORC_UNWINDER contain
    .orc_unwind and .orc_unwind_ip sections that can be queried to determine
    the stack frame size of any text address within a kernel function.  For
    kernels not configured with CONFIG_FRAME_POINTER, the crash utility does
    frame size calculation by disassembling a function from its beginning to
    the specified text address, counting the push, pop, and add/sub rsp
    instructions, accounting for retq instructions that occur in the middle of
    a function.  With this patch, access to the new ORC sections has been
    plugged into the existing frame size calculator, resulting in a more
    efficient and accurate manner of determining frame sizes, and as a result,
    more accurate backtraces.

  * Fix for the ARM64 "bt" command when run against Linux 4.14-rc1.  Without
    the patch, a message indicating "crash: builtin stackframe.sp offset
    incorrect!" is issued during session initialization, and the "bt" command
    fails with the error message "bt: invalid structure member offset:
    task_struct_thread_context_sp".

  * For for the "task -R <member>" option on Linux 4.13 and later kernels
    where the task_struct contains a "randomized_struct_fields_start" to
    "randomized_struct_fields_end" section.  Without the patch, a member
    argument that is inside the randomized section is not found.

  * Fix for the "snap.so" extension module to pass the value of the ARM64
    "kimage_voffset" value in the ELF header.  Without the patch, it is
    necessary to use the "--machdep kvimage_offset=<value>" command line
    option, or the session fails with the message "crash: vmlinux and vmcore
    do not match!".

crash (7.1.9-1) unstable; urgency=medium

  * Patch from Balint Reczey <rbalint at ubuntu.com>: Build crash on all Linux
    architectures (Closes: #763856, #757450)

  * Patch from Balint Reczey <rbalint at ubuntu.com>: Continuous integration
    tests can fail due to missing packages for the running kernel and missing
    *-updates packages (Closes: #869367)

  * Fixes to address three gcc-7.0.1 compiler warnings that are generated when
    building with "make warn".  The warning types are "[-Wnonnull]" in
    filesys.c, and "[-Wformat-overflow=]" in kernel.c and cmdline.c.

  * Fix for the PPC64 "mach -o" option to update the OPAL console buffer size
    from 256K to 1MB, based upon the latest skiboot firmware source.

  * Fix for the "mod -[sS]" option to prevent the erroneous reassignment of
    one or more symbol values of a kernel module.  Without the patch, when
    loading a kernel module, a message may indicate "mod: <module>: last
    symbol: <symbol> is not _MODULE_END_<module>?" may be displayed, and one
    or more symbols may be reassigned an incorrect symbol value.  If none of
    the erroneous symbol value reassignments are beyond the end of the
    module's address space, then there will be no message.

  * Linux 4.10 commit 401721ecd1dcb0a428aa5d6832ee05ffbdbffbbe finally exports
    the x86_64 "phys_base" value in the VMCOREINFO note, so utilize it
    whenever it exists.

  * Implemented a new "log -a" option that dumps the audit logs remaining in
    kernel audit buffers that have not been copied out to the user-space audit
    daemon.

  * Fix for the "kmem <address>" option and the "search" command in x86_64
    kernels that contain, or have backports of, kernel commit
    7c1da8d0d046174a4188b5729d7579abf3d29427, titled "crypto: sha - SHA1
    transform x86_64 AVX2", which introduced an "_end" text symbol.  Without
    the patch, if a base kernel symbol address that is larger than the "_end"
    text symbol is passed to "kmem <address>", its symbol/filename information
    will not be displayed.  Also, when the "search" command scans the
    __START_KERNEL_map region that contains kernel text and static data, the
    search will be truncated to stop at the "_end" text symbol address.

  * Enhancement for the determination of the ARM64 "kimage_voffset" value in
    Linux 4.6 and later kernels if an ELF format dumpfile does not contain its
    value in a VMCOREINFO note, or when running against live systems using
    /dev/mem, /proc/kcore, or an older version of /dev/crash.

  * Optimization of the "kmem -f <address>" and "kmem <r;address>" options to
    significantly reduce the amount of time to complete the buddy allocator
    free-list scan for the target address.  On very large memory systems, the
    patch may reduce the time spent by several orders of magnitude.

  * Fix for a compilation error if glibc-2.25 or later has been installed on
    the host build machine.  Without the patch, the build fails with the error
    message "amd64-linux-nat.c:496:1: error: conflicting types for
    'ps_get_thread_area'".

  * Fix for the "list -[hH]" options if a list_head.next pointer is
    encountered that contains an invalid NULL pointer.  Without the patch, the
    "list -[hH]" options would complete/continue as if the NULL were a
    legitimate end-of-list indicator, and no error would be reported.

  * Provide basic Huge Page usage as part of "kmem -i" output, showing the
    total amount of memory allocated for huge pages, and the amount of the
    total that is free.

  * Fix for the determination of the x86_64 "phys_base" value when it is not
    passed in the VMCOREINFO data of ELF vmcores.  Without the patch, it is
    possible that the base address of the vmalloc region is unknown and
    initialized to an incorrect default address during the very early stages
    of initialization, which causes the parsing of the PT_LOAD segments for
    the START_KERNEL_map region to fail.

  * Fix for the "dis" command to detect duplicate symbols in the case of a
    "symbol+offset" argument where the duplicates are contiguous in the symbol
    list.  In addition, reject "symbol+offset" arguments if the resultant
    address goes beyond the end of the function.

  * Fix for the "set scope" option if the kernel was configured with
    CONFIG_RANDOMIZE_BASE.  Without the patch, the command fails with the
    message "set: gdb cannot find text block for address: <symbol>".  This
    also affects extension modules that call gdb_set_crash_scope() when
    running with KASLR kernels.

  * Fix for the extensions/trace.c extension module to account for Linux 4.7
    kernel commit 9b94a8fba501f38368aef6ac1b30e7335252a220, which changed the
    ring_buffer_per_cpu.nr_pages member from an int to a long.  Without the
    patch, the trace.so extension module fails to load on big-endian machines,
    indicating "extend: Num of pages is less than 0".

  * Fix for the extensions/trace.c extension module when running on the ppc64
    architecture.  Without the patch, the trace.so extension module fails to
    load, indicating "extend: invalid text address: ring_buffer_read".  On the
    ppc64 architecture, the text symbol is ".ring_buffer_read".

  * Fix for the ARM64 "bt" command.  Without the patch, the backtrace of a
    non-panicking active task generates a segmentation violation when
    analyzing Android 4.4-based dumpfiles.

crash (7.1.8-2) unstable; urgency=medium

  * Enable lzo and snappy compression (Closes: #860319)

crash (7.1.8-1) unstable; urgency=medium

  * New upstream 7.1.8  (Closes: #851882)

  * Accepted patch from Chris J Arges <chris.j.arges at canonical.com> to fix
    autopkgtest failures (Closes: #788239)

  * Builds with gcc 7 (Closes: #853357)

  * Fix for Linux 4.6 commit b03a017bebc403d40aa53a092e79b3020786537d, which
    introduced the new slab management type OBJFREELIST_SLAB.  In this mode,
    the freelist can be an object, and if the slab is full, there is no
    freelist.  On the next free, an object is recycled to be used as the
    freelist but not cleaned-up.  This patch will go through only known freed
    objects, and will prevent "kmem -S" errors that indicate "invalid/corrupt
    freelist entry" on kernels configured with CONFIG_SLAB.

  * Fix for the initialization-time loading of kernel module symbols if the
    kernel crashed while running a module's initcall.  Without the patch, the
    crash session fails during initialation with a message similar to "crash:
    store_module_symbols_v2: total: 7 mcnt: 8".

  * Fix for a segmentation violation during session inialization when running
    against a 32-bit MIPS ELF kdump or compressed kdump if a per-cpu
    NT_PRSTATUS note cannot be gathered from the dumpfile header.  Without the
    the patch, a segmentation violation occurs after the message "WARNING:
    cannot find NT_PRSTATUS note for cpu: <number>" is displayed.

  * The 32-bit MIPS PGD_ORDER() macro expects __PGD_ORDER to be signed, which
    it isn't now since the internal machdep->pagesize is unsigned.  Without
    this patch, module loading fails during initialization on a kernel that
    has a page size of 16KB, with messages that indicate "please wait...
    (gathering module symbol data)" followed by "crash: invalid size request:
    0  type: pgd page".

  * For ARM64 dumpfiles with VMCOREINFO, verify the new "VA_BITS" number
    against the calculated number.

  * Fix for the ARM64 "bt" command in Linux 4.10 and later kernels that are
    configured with CONFIG_THREAD_INFO_IN_TASK.  Without the patch, the "bt"
    command will fail for active tasks in dumpfiles that were generated by the
    kdump facility.

  * Fix for Linux 4.10 commit 7fd8329ba502ef76dd91db561c7aed696b2c7720
    "taint/module: Clean up global and module taint flags handling".  Without
    the patch, when running against Linux 4.10-rc1 and later kernels, the
    crash utility fails during session initialization with the message "crash:
    invalid structure size: tnt".

  * Fix for support of /proc/kcore as the live memory source in Linux 4.8 and
    later x86_64 kernels configured with CONFIG_RANDOMIZE_BASE, which
    randomizes the unity-mapping PAGE_OFFSET value.  Without the patch, the
    crash session fails during session initialization with the error message
    "crash: seek error: kernel virtual address: <address> type:
    page_offset_base".

  * Update to the module taint flags handling patch above to account for the
    change in size of the module.taints flag from an int to a long, while
    allowing for a kernel backport that keeps it as an int.

  * Prepare for the kernel's "taint_flag.true" and "taint_flag.false" member
    names to be changed to "c_true" and "c_false", which fixes build problems
    when an out-of-tree module defines "true" or "false".

  * Prevent the livepatch taint flag check during the system banner display
    from generating a fatal session-killing error if relevant kernel symbol
    names or data structures change in the future (again).

  * Fix for the PPC64 "bt" command for non-panicking active tasks in
    FADUMP-generated dumpfiles (Firmware Assisted Dump facility).  Without the
    patch, backtraces of those tasks may be of the form "#0 [c0000000700b3a90]
    (null) at c0000000700b3b50  (unreliable)".  This patch uses and displays
    the ptregs register set saved in the dumpfile header for the non-panicking
    active tasks.

  * Fix for a possible segmentation violation when analyzing Linux 4.6 and
    earlier x86_64 kernels configured with CONFIG_RANDOMIZE_BASE.  A
    segmentation violation may occur during session initialization, just after
    the patching of the gdb minimal_symbol values message, depending upon the
    value of KERNEL_IMAGE_SIZE, which was variable in the earlier KASLR
    kernels.  This patch sets the KERNEL_IMAGE_SIZE default value to 1GB for
    those earlier kernels, and also adds a new "--machdep
    kernel_image_size=<value>" option that can be used to override the default
    KERNEL_IMAGE_SIZE value if necessary.

  * Fix the bracketing of the x86_64 FILL_PML4() macro.

  * Fix for the "tree -t radix", "irq", and "files -p" command options in
    Linux 4.6 and later kernels due to upstream changes in the radix tree
    facility.  Without the patch, the commands will fail with the message
    "radix trees do not exist or have changed their format".

  * Fix for the "trace.c" extension module.  The kernel buffer referenced by
    "max_tr_ring_buffer" is not available in all configurations of the kernel
    so the unitialized max_tr_ring_buffer variable should not be used.  A
    similar check existed previously before the recent rework of the trace
    extension module to support multiple buffers.

  * Clarification in the display of CONFIG_SLUB object addresses that are
    displayed by the "kmem" command when SLAB_RED_ZONE has been enabled.  By
    default, CONFIG_SLUB object addresses that are displayed by the "kmem"
    command will  point to the SLAB_RED_ZONE padding inserted at the beginning
    of the object.  As an alternative, a new "redzone" environment variable
    has been addedd that can be toggled on or off.  If "set redzone off" is
    entered, the object addresses will point to the address that gets returned
    to the allocator.

  * Fix for the "CURRENT" value displayed by the "timer -r" command.  Without
    the patch, if the target machine has been up for a long enough time, an
    arithmetic overflow will occur and the time value displayed will be
    incorrect.

  * Fix for 32-bit X86 kernels configured with CONFIG_RANDOMIZE_BASE.  Without
    the patch, an invalid kernel PAGE_OFFSET value is calculated and as a
    result the session fails during session initialization just after the
    patching of the gdb minimal_symbol values message, showing the warning
    message "WARNING: cannot read linux_banner string", followed by "crash:
    /vmlinux and /dev/crash do not match!".  This patch also adds a new
    "--machdep page_offset=<value>" option that can be used if the
    CONFIG_PAGE_OFFSET value is not the default address of 0xc0000000.

  * Introduction of a new PPC64-only "mach -o" option that dumps the OPAL
    "Open Power Abstraction Layer" console buffer.

  * Fix for the "bt" command on Linux 4.9 and later 32-bit X86 kernels
    containing kernel commit 0100301bfdf56a2a370c7157b5ab0fbf9313e1cd, subject
    "sched/x86: Rewrite the switch_to() code".  Without the patch, backtraces
    for inactive (sleeping) tasks fail with the message "bt: invalid structure
    member offset: task_struct_thread_eip".

  * Fix for a "[-Wmisleading-indentation]" compiler warning and the associated
    bug that is generated by lkcd_x86_trace.c when building 32-bit X86 with
    "make warn" with gcc-6.3.1.

  * Fix for an invalid "bt" warning on a 32-bit X86 idle/swapper task.
    Without the patch, the backtrace displays the "cannot resolve stack trace"
    warning, dumps the backtrace, and then the text symbols:

	     crash> bt PID: 0      TASK: f0962180  CPU: 6   COMMAND:
	     "swapper/6" bt: cannot resolve stack trace: #0 [f095ff1c]
	     __schedule at c0b6ef8d #1 [f095ff58] schedule at c0b6f4a9 #2
	     [f095ff64] schedule_preempt_disabled at c0b6f728 #3 [f095ff6c]
	     cpu_startup_entry at c04b0310 #4 [f095ff94] start_secondary at
	     c04468c0 bt: text symbols on stack: [f095ff1c] __schedule at
	     c0b6ef8d [f095ff58] schedule at c0b6f4ae [f095ff64]
	     schedule_preempt_disabled at c0b6f72d [f095ff6c]
	     cpu_startup_entry at c04b0315 [f095ff94] start_secondary at
	     c04468c5 crash>

	   The backtrace shown is actually correct.

  * Another fix for a similar "bt: cannot resolve stack trace" warning on a
    32-bit X86 idle/swapper task, but when running on cpu 0.

  * Remove two one-time warning messages that are displayed when running the
    "bt" command on Linux 4.2 and later 32-bit X86 kernels.  Without the
    patch, the first "bt" command that is executed will be preceded by "bt:
    WARNING: "system_call" symbol does not exist", followed by "bt: WARNING:
    neither "ret_from_sys_call" nor "syscall_badsys" symbols exist".

  * Fix for Linux 3.15 and later 32-bit X86 kernels containing kernel commit
    198d208df4371734ac4728f69cb585c284d20a15, titled "x86: Keep thread_info on
    thread stack in x86_32".  Without the patch, incorrect addresses of each
    per-cpu hardirq_stack and softirq_stack were saved for usage by the "bt"
    command.

  * Additional fix for Linux 3.15 and later 32-bit X86 kernels containing
    kernel commit 198d208df4371734ac4728f69cb585c284d20a15, titled "x86: Keep
    thread_info on thread stack in x86_32".  The patch fixes the stack
    transition symbol from "handle_IRQ" to "handle_irq" for usage by the "bt"
    command.

  * Fix for 32-bit X86 kernels to determine the active task in a dumpfile in
    the situation where the task was running on its soft IRQ stack, took a
    hard IRQ, and then the system crashed while it was running on its hard IRQ
    stack.

  * Allow the "--kaslr=<offset>" and/or "--kaslr=auto" command line options to
    be used with the 32-bit X86 architecture.

  * Removed -Werror from the bfd and opcode library builds.

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)

crash (7.1.5-1) unstable; urgency=medium

  * New upstream 7.1.5  (Closes: #817798):

  * 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.

  * 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.

  * 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.

  * 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.

  * 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.

  * 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".

  * 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".

  * 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.

  * 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.

  * 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.

  * 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.

  * 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.

  * Configure the embedded gdb module with "--disable-sim" in order to bypass
    the unnecessary build of the libsim.a library.

  * 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.

  * 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.

  * 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".

  * 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".

  * 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.

  * 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.

  * 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.

  * 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

  * 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.

  * 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.

  * 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.

  * 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.

  * 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".

  * 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".

  * 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.

  * 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.

  * 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.

  * When reading a task's task_struct.flags field, check for its size, which
    was changed from an unsigned long to an unsigned int.

  * 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.

  * Account for the Linux 3.17 increase of the ARM64 MAX_PHYSMEM_BITS
    definition from 40 to 48.

Date: 2018-07-20 09:16:09.063924+00:00
Changed-By: Thadeu Lima de Souza Cascardo <thadeu.cascardo at canonical.com>
Maintainer: Troy Heber <troyh at debian.org>
Signed-By: Łukasz Zemczak <lukasz.zemczak at canonical.com>
https://launchpad.net/ubuntu/+source/crash/7.2.3+real-1~16.04.1
-------------- next part --------------
Sorry, changesfile not available.


More information about the Xenial-changes mailing list