Crash changelog

unreleased

  • 2026-11-10 Rui Yang doc: credit the RST conversion

  • 2026-11-10 Rui Yang website: add Debian, Ubuntu and openSUSE build links

  • 2026-11-09 Rui Yang website: note that the documentation may be out of sync

  • 2026-11-09 Rui Yang website: generate the changelog from the git log

  • 2026-11-09 Rui Yang website: add release downloads and changelog links

  • 2026-11-09 Rui Yang website: add the contribution guidelines link and reorder the navigation

  • 2026-11-09 Rui Yang website: generate the command help as Sphinx pages

  • 2026-11-09 Rui Yang website: convert the extensions and maintenance pages to RST

  • 2026-11-09 Rui Yang website: declutter the landing page

  • 2026-11-09 Rui Yang ci: add the website workflow

  • 2026-11-09 Rui Yang website: build the docs and command help into _site

  • 2026-09-19 Rui Yang build: remove doc/output from "make clean"

  • 2026-09-19 Rui Yang doc: convert the crash whitepaper to reStructuredText and add make doc

  • 2026-10-30 Curu Wong netdump: do not close fd prematurely in proc_kcore_init()

  • 2026-10-24 Dave Young tools: fix a 32-bit stack overwrite in percpu_counter_sum_positive()

  • 2026-10-24 Dave Young x86: check the __ia32_sys_* symbols for frame pointers

  • 2026-10-21 Dave Young kernel: don't confuse KALLSYMS_V2 with KMOD_V2

  • 2026-10-21 Dave Young arm64: fix phys_offset for a negative memstart_addr

  • 2026-10-27 Tao Liu remote.c: Add return value check of recv() to prevent unintentional loop

  • 2026-10-25 Dave Young ci: pick the arch from a dropdown when dispatching a group

  • 2026-10-25 Dave Young Remove the pr closer workflow

  • 2026-10-25 Dave Young ci: add the secondary arch group and a manual all-arches workflow

  • 2026-10-25 Dave Young ci: build the primary arches on ubuntu-26.04 through a reusable workflow

  • 2026-10-25 Dave Young build: allow cross compiling for loongarch64 and powerpc64le

  • 2026-10-07 Alexandr Boyko arm64: support an X86_64 target on an ARM64 host

  • 2026-10-06 Dave Young build: recover from an interrupted embedded-gdb configure

  • 2026-10-06 Dave Young README: document the new cleanup and packaging targets

  • 2026-10-06 Dave Young build: add a "make help" target

  • 2026-10-06 Dave Young build: make README a static source file

  • 2026-10-06 Dave Young build: remove the redundant tar target

  • 2026-10-06 Dave Young build: add a separate srpm target, release only builds the tarball

  • 2026-10-10 Dave Young build: remove the unconfig target

  • 2026-10-06 Dave Young build: write the configure variables to Makefile.inc

  • 2026-10-03 Dave Young build: don't build the unused libctf and libbacktrace libraries

  • 2026-10-03 Dave Young build: don't build the embedded gdb TUI

  • 2026-10-03 Dave Young build: make debug information optional, off by default

  • 2026-10-06 Dave Young build: remove the unused gdb_files, glink, name and ref targets

  • 2026-09-30 Tao Liu qemu-load.c: validate name length

  • 2026-09-30 Tao Liu netdump.c: validate ELF note name size

  • 2026-09-07 Tao Liu vmware_vmss.c: validate group offsets before fseek

  • 2026-09-07 Tao Liu netdump.c: validate sh_info value before use

  • 2026-09-18 chenhaixiang (A) arm64: move irq/overflow/stackframe init to POST_VM phase

  • 2026-09-10 Dave Young Mark start of 9.0.4 development phase with version 9.0.3++

9.0.3

  • 2026-09-10 Dave Young crash-9.0.2 -> crash-9.0.3

  • 2026-09-09 Dave Young update example nvr in README

  • 2026-09-09 Dave Young rename .rh_rpm_package to crash-release

  • 2026-09-09 Dave Young Remove dead code of "BASELEVEL_REVISION"

  • 2026-07-29 Tao Liu Prevent out-of-bounds access of note_buf

  • 2026-08-30 Dave Young loongarch64: enable kaslr offset calculation

  • 2026-08-30 Dave Young loongarch64: fix SECTION_SIZE_BITS value

  • 2026-08-11 Huang Shijie task: show the NUMA information in task_cpu

  • 2026-08-11 Huang Shijie add cpu_to_nid function

  • 2026-07-24 yuandong riscv64: support leaf PTEs in page table walks

  • 2026-08-14 Jiri Slaby symbols: use non-debug BFD to retrieve .rodata

  • 2026-08-14 Ruirui Yang Refactor kernel version checking code

  • 2026-07-24 Kazuhito Hagio Fix "kmem [-s]" command on Linux 7.1 and later

  • 2026-07-23 Kazuhito Hagio Fix compound_head() and "bt -F" option on Linux 7.1 and later

  • 2026-08-10 Rui Qi symbols: optimize symval_hash_init with O(1) tail insertion

  • 2026-08-04 Tao Liu x86_64: Make ORC_REG_SP and ORC_REG_PREV_SP independent from kernel version

  • 2026-07-08 Kazuhito Hagio Fix "runq -g" option to display task_group name on Linux 6.15 and later

  • 2026-07-08 Kazuhito Hagio Fix failure of "runq -g" option on Linux 7.2 and later kernels

  • 2026-07-04 Aaron Tomlin task: Introduce -Y option to ps command to display scheduling policy and priority

  • 2026-07-04 Aaron Tomlin task: Introduce -I option to ps command to exclude idle tasks

  • 2026-06-22 Rui Qi riscv64: Add get_kvaddr_ranges callback for kernel address ranges

  • 2026-06-22 Rui Qi riscv64: Guard verbose output in vtop page table walk functions

  • 2026-06-22 Rui Qi riscv64: Set VMEMMAP flag to fix spurious mem_map[] warnings

  • 2026-06-16 Ming Wang LoongArch64: print exception registers only with bt -f

  • 2026-06-16 Ming Wang LoongArch64: avoid replacing a valid RA with stack noise

  • 2026-06-16 Ming Wang LoongArch64: unwind dumpfile active tasks from IRQ stacks

  • 2026-06-16 Ming Wang LoongArch64: add initial ORC unwinder support

  • 2026-06-16 Ming Wang LoongArch64: resolve relocated exception vector addresses

  • 2026-06-16 Ming Wang LoongArch64: print exception return address as ERA

  • 2026-06-04 Ming Wang LoongArch64: Add dummy eframe_search to avoid bt -e segfault

  • 2026-06-04 Ming Wang LoongArch64: Fix stack frame loop bounds for exception frames

  • 2026-06-04 Ming Wang LoongArch64: Support backtracing across exception boundaries

  • 2026-06-04 Ming Wang LoongArch64: Fix pt_regs initialization for active tasks

  • 2026-06-04 Ming Wang LoongArch64: Fix CPU registers reading from dump notes

  • 2026-06-03 Kazuhito Hagio Fix "swap" command on Linux 7.1 and later

  • 2026-06-03 Kazuhito Hagio Fix "kmem -i" option to display swap usage on Linux 6.18 and later

  • 2026-06-01 Kazuhito Hagio x86_64: Fix "bt" command to use correct ORC register values on Linux 7.1 and later

  • 2026-05-29 Kazuhito Hagio x86_64: Fix "bt" command for noreturn functions

  • 2026-05-18 Huang Shijie add "files -n" command for an inode

  • 2026-05-18 Huang Shijie xarray: add large folio support

  • 2026-05-18 Huang Shijie add folio_order function

  • 2026-04-28 Alexander Egorenkov symbols: Add support for mod symtab with combined GPL and non-GPL symbols

  • 2026-05-07 Aureau, Georges (Kernel Tools ERT) Fix get_xtime() for kernel 6.13 and higher

  • 2026-05-06 Rui Qi RISCV64: add mapping symbol filter in riscv64_verify_symbol

  • 2026-05-06 Rui Qi symbols: optimize symname_hash with larger table and FNV-1a hash

  • 2026-04-29 Rui Qi RISCV64: fix pmd address calculation in riscv64_vtop_4level_4k

  • 2026-04-01 lipengfei28 arm64: fix gdb register feeding for exception frames and stack switching

  • 2026-05-06 Lucas Oakley Fix unwinding with 32k stacks in ppc64le

  • 2026-04-16 Kazuhito Hagio Fix wrong detection of "[LIVEPATCH]" on old kernels

  • 2026-04-06 Austin Kim RISCV64: introduce riscv64_VTOP() and riscv64_PTOV()

  • 2026-04-24 Tao Liu Mark start of 9.0.3 development phase with version 9.0.2++

9.0.2

  • 2026-04-24 Tao Liu crash-9.0.1 -> crash-9.0.2

  • 2026-03-23 Bruno Faccini fix eheader overflow

  • 2026-03-31 Austin Kim RISC-V: improve error message for search command failure

  • 2026-03-12 Petr Tesařík Fix cross-compilation of eppic.so and snapper.so

  • 2026-02-13 Lianbo Jiang Fix for "help -r/-D" to display register values and notes[]

  • 2026-02-24 Shivang Upadhyay Reapply "vmcoreinfo: read vmcoreinfo using 'vmcoreinfo_data' when unavailable in elf note"

  • 2026-02-11 neilfsun Fix file redirection not working for external commands in input files

  • 2026-02-11 neilfsun Fix pipe parsing to correctly handle quotes

  • 2026-02-16 Mikhail Zaslonko memory: Handle crash failure in linux-next caused by struct kmem_cache changes

  • 2025-12-04 neilfsun Fix external command output not redirected to pipe

  • 2025-12-04 neilfsun Fix prompt output interfering with piped commands in input files

  • 2025-12-03 neilfsun Ensure all child processes are properly cleaned up in restore_ifile_sanity

  • 2025-12-23 Motomasa Suzuki sys: Display livepatch transition status in KERNEL line

  • 2026-01-19 stalexan@redhat.com maple_tree: add support for maple_tree.c output to respect the global radix and per-command -x/d flags

  • 2026-01-15 Lianbo Jiang Fix for "mod -S" causes symbols to be incorrect

  • 2026-01-13 Austin Kim RISCV64: fix wrong information of P4D, PUD, PMD and PTE - SA57(4K page)

  • 2026-01-13 Austin Kim RISCV64: fix wrong information of PUD, PMD and PTE - SA48(4K page)

  • 2025-12-17 Luis Galdos bpf: improve for-loop when searching for used_maps

  • 2025-12-15 Tao Liu Resolve BLK_MQ_F_TAG_HCTX_SHARED at runtime

  • 2025-12-11 Chenghao Duan Loongarch: update the NR_CPUS to 2048

  • 2025-12-08 Munehisa Kamata Add a command line option to retrieve build-id

  • 2025-12-13 Shivang Upadhyay Doc: add manual and help entry for --max-malloc-bufs option

  • 2025-12-08 Shivang Upadhyay make the MAX_MALLOC_BUFS customizable

  • 2025-12-05 Guanyou.Chen arm64: Fix "vtop" command to display swap information on Linux 6.10 and later

  • 2025-12-05 Guanyou.Chen arm64: Fix "vtop" command to display swap information on Linux 6.10 and later

  • 2025-11-05 Dominique Martinet Fix typo: uncompess -> uncompress

  • 2025-11-18 HAGIO KAZUHITO(萩尾 一仁) Fix "timer -r" option on Linux 6.18 and later kernels

  • 2025-11-20 Tao Liu Mark start of 9.0.2 development phase with version 9.0.1++

9.0.1

  • 2025-11-20 Tao Liu crash-9.0.0 -> crash-9.0.1

  • 2025-11-19 Tao Liu Add blk_mq_tag_set shared_tags check

  • 2025-11-19 Tao Liu Revert "vmcoreinfo: read vmcoreinfo using 'vmcoreinfo_data' when unavailable in elf note"

  • 2025-11-11 Mikhail Zaslonko s390x: Add basic 'bt -e' support for s390x

  • 2025-11-11 Mikhail Zaslonko s390x: Expand bt output with PSW mode and pt_regs address

  • 2025-11-04 Tao Liu gdb: set req->typecode when type resolvation success

  • 2025-11-13 Tao Liu Revert "eppic.patch: Add customized functions to eppic"

  • 2025-10-28 Lianbo Jiang Fix for "set" command failure

  • 2025-09-18 Aditya Gupta vmcoreinfo: read vmcoreinfo using 'vmcoreinfo_data' when unavailable in elf note

  • 2025-10-28 Tao Liu eppic.patch: Add customized functions to eppic

  • 2025-10-28 Tao Liu extensions: Search all possible paths

  • 2025-10-22 Austin Kim RISCV64: fix wrong information of PMD and PTE - SA39(4K page) support

  • 2025-10-27 Mikhail Zaslonko s390x: Always perform kernel address translation in vtop verbose mode.

  • 2025-10-27 Mikhail Zaslonko s390x: Remove redundant vmalloc_start check from s390x_kvtop()

  • 2025-10-27 Mikhail Zaslonko s390x: Add non-zero vmalloc_start check to s390x_vr_IS_VMALLOC_ADDR()

  • 2025-10-24 Tao Liu bpf: Implement ringbuf_map memory usage calculation

  • 2025-10-07 Tao Liu Fix the misleading uncompress error message

  • 2025-10-24 Lianbo Jiang Add "log -R" to display human readable Rust symbol name

  • 2025-09-30 Aureau, Georges (Kernel Tools ERT) Fix "mount" MNT_CURSOR entries (kernels 5.8-6.7)

  • 2025-09-30 Aureau, Georges (Kernel Tools ERT) Fix "mount <address>" fail when "super_block.s_files" unavaliable

  • 2025-09-23 Aureau, Georges (Kernel Tools ERT) Fix get_pathname() not handling stacked mounts

  • 2025-09-18 jianyun.gao Optimize extensions's compiler from gcc to $(CC)

  • 2025-09-16 Lianbo Jiang Fix for log command printed a couple of empty lines

  • 2025-09-15 Lianbo Jiang Fix a compilation error on the old gcc version 8.5.0

  • 2025-09-08 Lianbo Jiang Enable resolving mangled Rust symbol in lockless ring buffer

  • 2025-08-27 Lianbo Jiang Enable demangling a mangled Rust support

  • 2025-08-27 Lianbo Jiang Add a rustfilt command to demangle a mangled Rust symbol

  • 2025-09-05 Lianbo Jiang Fix the segfault issue caused by "dis -s" command

  • 2025-08-30 Ajay Kaher vmware_guestdump: support segment registers

  • 2025-08-30 Ajay Kaher vmware_vmss: support segment registers

  • 2025-08-29 Austin Kim RISCV64: Add 'PAGE DIRECTORY' property to the 'vtop' command

  • 2025-07-31 Pnina Feder Support running on X86_64 with RISCV target

  • 2025-06-27 Tao Liu Add blk_mq shared tags support for dev -d/-D

  • 2025-07-21 Shivang Upadhyay gdb: Disable DT_DEBUG lookup by GDB inside the vmcore

  • 2025-06-09 Ming Wang Fix crash initialization failure on LoongArch with recent GDB versions

  • 2025-07-08 Tao Liu gdb: Fix a regression for eppic extension on gdb-16.2

  • 2025-07-18 Charles Haithcock doc: Update requirements for building on Fedora

  • 2025-07-09 Tao Liu x86_64: filter unwanted warning message for "bt -T" cmd

  • 2025-06-17 k-hagio-ab@nec.com Fix "kmem -p" option on Linux 6.16-rc1 and later kernels

  • 2025-06-11 Lianbo Jiang Fix the issue of "page excluded" messages flooding

  • 2025-06-25 Tao Liu ppc64: Add gdb multi-stack unwind support

  • 2025-06-25 Tao Liu arm64: Add gdb multi-stack unwind support

  • 2025-06-25 Tao Liu x86_64: Add gdb multi-stack unwind support

  • 2025-06-25 Tao Liu Call cmd_bt silently after "set pid"

  • 2025-06-25 Tao Liu Add multi-threads support in crash target

  • 2025-05-02 Stephen Brennan Fix incorrect task state during exit

  • 2025-04-30 Alexey Makhalov vmware_guestdump: Version 7 support

  • 2025-05-20 Lianbo Jiang CI: enable ci-test with Testing Farm as github action

  • 2025-05-16 Lianbo Jiang Mark start of 9.0.1 development phase with version 9.0.0++

9.0.0

  • 2025-04-25 Lianbo Jiang crash-8.0.6 -> crash-9.0.0

  • 2025-04-24 Tao Liu Fix a regression of "help -r" which fail to print regs

  • 2025-04-23 Kazuhito Hagio Fix "log -c" option on Linux 6.14 and later kernels

  • 2025-04-03 Stephen Brennan Fix bad relocations when module sh_addr is nonzero

  • 2025-04-01 Stephen Brennan Fix module section load address when sh_addr != 0

  • 2025-04-01 Austin Kim RISCV64: Add more system properties to the 'mach' command

  • 2025-02-26 Tao Liu symbols: redetermine the end of kernel range for in_ksymbol_range

  • 2025-03-28 Lianbo Jiang Add a PR closer

  • 2024-10-11 Wang Guanghui Prevent double-free strbuf when nsyms is 0

  • 2025-02-18 Wolfgang Frisch extensions/Makefile: eliminate race condition

  • 2024-02-06 Ngai-Mint Kwan Doc: correct spelling under "help list"

  • 2024-07-12 Shengjing Zhu Makefile: Pass CFLAGS when building extensions

  • 2025-02-19 Lianbo Jiang Add ci-build.yml

  • 2025-03-12 Lianbo Jiang Add cross compilation support

  • 2025-03-12 Lianbo Jiang gdb:disable building gdbserver in crash-utility

  • 2025-02-18 Lianbo Jiang sparc64: fix build failure

  • 2025-03-19 Lianbo Jiang .gitignore: add gdb-16.2 directory

  • 2025-03-07 Lianbo Jiang Update to gdb 16.2

  • 2025-02-24 Tao Liu Fix the failing of cmd "runq -g" for v6.14-rc1 kernel

  • 2025-02-24 Tao Liu Fix the failing of cmd "files" for v6.14-rc1 kernel

  • 2025-01-24 Lianbo Jiang Fix build failure on 32bit machine(i686)

  • 2025-01-24 Lianbo Jiang tools.c: do not use keywords 'nullptr' as a variable in code

  • 2025-01-24 Lianbo Jiang Fix build failure in readline lib

  • 2025-01-24 Tao Liu x86_64: Fix 'bt -S/-I' segfault issue

  • 2024-12-25 Guanyou.Chen arm64: add pac mask to better support gdb stack unwind

  • 2025-01-03 Lucas Oakley Fix misleading CPU count in display_sys_stats()

  • 2025-01-08 Aureau, Georges (Kernel Tools ERT) Enhance "kmem -i[=shared]" to display(or not) shared pages

  • 2025-01-08 qiwu.chen@transsion.com kmem: fix the determination of slab page due to invalid page_type

  • 2025-01-07 Kazuhito Hagio Fix "net -a" option on Linux 6.13 and later kernels

  • 2025-01-06 yeping.zheng Doc: add compilation requirements note in README

  • 2024-12-14 Lucas Oakley Fix incorrect 'bt -v' output suggesting overflow

  • 2024-12-10 Hou Wenlong x86_64: Mark #VC stack unavailable when CONFIG_AMD_MEM_ENCRYPT is not set

  • 2024-11-06 Guanyou.Chen arm64: add cpu context registers to better support gdb stack unwind

  • 2024-11-01 Guanyou Chen Fix for "help -r" segfault in case of ramdump

  • 2024-12-05 Kazuhito Hagio Fix infinite loop during module symbols initialization

  • 2024-12-10 Lianbo Jiang Mark start of 8.0.7 development phase with version 8.0.6++

8.0.6

  • 2024-11-12 Lianbo Jiang crash-8.0.5 -> crash-8.0.6

  • 2024-10-29 Austin Kim Fix for 'sys' to properly display the PANIC message

  • 2024-11-05 Tao Liu Doc: add doc to state that the --log option is deprecated

  • 2024-09-04 Tao Liu arm64: Add gdb stack unwind support

  • 2024-09-04 Tao Liu x86_64: Add gdb stack unwind support

  • 2024-09-04 Aditya Gupta ppc64: Add gdb stack unwind support

  • 2024-09-04 Tao Liu Preparing for gdb stack unwind support

  • 2024-09-04 Alexey Makhalov vmware_guestdump: Various format versions support

  • 2024-09-04 Tao Liu x86_64: Fix invalid input "=>" for bt command

  • 2024-09-04 Tao Liu Fix cpumask_t recursive dependence issue

  • 2024-08-30 chenguanyou Revert "arm64: section_size_bits compatible with macro definitions"

  • 2024-09-22 Li XingYang X86 64: improve the method of determining whether kaslr is enabled

  • 2024-09-20 qiwu.chen@transsion.com kmem: fix the determination for slab page

  • 2024-09-16 Tao Liu x86_64: Fix the bug of getting incorrect framesize

  • 2024-09-03 Kuan-Ying Lee arm64: Support 16K page, 48 VA bits and 4 level page table

  • 2024-09-03 Kuan-Ying Lee arm64: fix 64K page and 52-bits VA support

  • 2024-09-03 Kuan-Ying Lee arm64: use the same expression to indicate ptrs_per_pgd

  • 2024-09-03 Kuan-Ying Lee arm64: fix indent issue and refactor PTE_TO_PHYS

  • 2024-08-29 Aureau, Georges (Kernel Tools ERT) “kmem address” not working properly when redzone is enabled

  • 2024-08-15 Lianbo Jiang Fix a "Bus error" issue caused by 'crash --osrelease' or crash loading

  • 2024-08-16 Kuan-Ying Lee arm64: cleanup the pud description

  • 2024-08-16 Kuan-Ying Lee arm64: fix for 'help -m/-M' to correctly display the pmd description

  • 2024-08-16 Kuan-Ying Lee arm64: Introduction of support for 16K page with 2-level table support

  • 2024-08-14 Tao Liu s390x: Fix "bt -f/-F" command fail with seek error

  • 2024-08-14 Tao Liu Fix a segfault issue due to the incorrect irq_stack_size on ARM64

  • 2024-07-28 qiwu.chen arm64: fix the determination of vmemmap and struct_page_size

  • 2024-07-17 Tao Liu Fix "irq -a" exceeding the memory range issue

  • 2024-08-06 Lianbo Jiang LoongArch64: fix incorrect code in the main()

  • 2024-07-13 Kuan-Ying Lee arm64: Introduction of support for 16K page with 3-level table support

  • 2024-07-25 bevis_chen arm64: Fix bt command show wrong stacktrace on ramdump source

  • 2024-07-24 qiwu.chen arm64: fix a potential segfault when unwind frame

  • 2024-07-02 Li Zhijian List: enable LIST_HEAD_FORMAT for -r option

  • 2024-06-11 HAGIO KAZUHITO(萩尾 一仁) Fix "kmem -i" and "swap" commands on Linux 6.10-rc1 and later kernels

  • 2024-06-12 Lianbo Jiang X86 64: fix a regression issue about kernel stack padding

  • 2024-06-05 Lianbo Jiang Fix for failing to load kernel module

  • 2024-06-05 Lianbo Jiang X86 64: fix for crash session loading failure

  • 2024-06-05 HAGIO KAZUHITO(萩尾 一仁) Fix "kmem -v" option on Linux 6.9 and later kernels

  • 2024-06-07 Lianbo Jiang x86_64: fix for adding top_of_kernel_stack_padding for kernel stack

  • 2024-04-10 Alexander Gordeev Reflect __{start,end}_init_task kernel symbols rename

  • 2024-04-17 Guanyou Chen arm64: section_size_bits compatible with macro definitions

  • 2024-04-24 chenguanyou Cleanup: replace struct zspage_5_17 with union

  • 2024-02-20 Yulong TANG 汤玉龙 Adding the zram decompression algorithm "lzo-rle"

  • 2024-04-29 Lianbo Jiang Mark start of 8.0.6 development phase with version 8.0.5++

8.0.5

  • 2024-04-23 Kazuhito Hagio crash-8.0.4 -> crash-8.0.5

  • 2024-03-06 Lianbo Jiang gdb: fix "p" command to print module variables correctly

  • 2024-04-04 Aureau, Georges (Kernel Tools ERT) x86_64: Fix "bt" command to handle IRQ exception frames properly

  • 2024-04-03 Tao Liu Fix segmentation fault in value_search_module_6_4()

  • 2024-03-19 Lianbo Jiang x86_64: Fix for "bt" command incorrectly printing "bogus exception frame" warning

  • 2024-03-01 Aditya Gupta get vmalloc start address from vmcoreinfo

  • 2023-12-18 Huang Shijie arm64: Add support for vmemmap symbol in vmcoreinfo

  • 2024-03-08 Ming Wang LoongArch64: Fixed link errors when build on LOONGARCH64 machine

  • 2024-03-13 Kazuhito Hagio gdb-10.2.patch: Fix duplicated code by re-applying patch

  • 2024-01-21 Edward Chron Add "log -c" option to display printk caller id

  • 2024-01-26 Kazuhito Hagio Fix "mount" command failure on Linux 6.8-rc1 and later

  • 2023-12-28 Ming Wang LoongArch64: Add LoongArch64 architecture support information

  • 2023-12-28 Ming Wang LoongArch64: Add "--kaslr" command line option support

  • 2023-12-28 Ming Wang LoongArch64: Add 'irq' command support

  • 2023-12-28 Ming Wang LoongArch64: Add 'help -r' command support

  • 2023-12-28 Ming Wang LoongArch64: Add 'help -m/M' command support

  • 2023-12-28 Ming Wang LoongArch64: Add 'bt' command support

  • 2023-12-28 Ming Wang LoongArch64: Add 'mach' command support

  • 2023-12-28 Ming Wang LoongArch64: Add 'pte' command support

  • 2023-12-28 Ming Wang LoongArch64: Make the crash tool successfully enter the crash command line

  • 2023-12-28 Ming Wang Add LoongArch64 framework code support

  • 2024-01-04 Tao Liu symbols: skip the module if the given address is not within its address range

  • 2024-01-16 Kazuhito Hagio x86_64: Fix "bt" command not printing stack trace enough

  • 2023-12-13 Song Shuai RISCV64: Add per-cpu overflow stacks support

  • 2023-12-13 Song Shuai RISCV64: Add per-cpu IRQ stacks support

  • 2023-12-13 Song Shuai RISCV64: Add support for 'bt -e' option

  • 2023-12-22 qiwu.chen@transsion.com arm64: support HW Tag-Based KASAN (MTE) mode

  • 2023-12-26 Tao Liu x86_64: check bt->bptr before calculate framesize

  • 2023-12-15 Li Zhijian help.c: Remove "kmem -l" help messages

  • 2023-12-14 Huang Shijie arm64: rewrite the arm64_get_vmcoreinfo_ul to arm64_get_vmcoreinfo

  • 2023-12-12 Song Shuai RISCV64: Fix 'bt' output when no ra on the stack top

  • 2023-12-12 Song Shuai RISCV64: Dump NT_PRSTATUS in 'help -n'

  • 2023-12-07 Alexander Gordeev s390x: uncouple physical and virtual memory spaces

  • 2023-11-29 Alexander Gordeev s390x: fix virtual vs physical address confusion

  • 2023-11-29 Alexander Gordeev Fix identity_map_base value dump on S390

  • 2023-04-19 Johan Erlandsson use NR_SWAPCACHE when nr_swapper_spaces isn't available

  • 2023-11-14 Tao Liu symbols: skip load .init.* sections if module was successfully initialized

  • 2023-11-17 Tao Liu symbols: expand all kernel module symtable if not all expanded previously

  • 2023-10-20 Johan Erlandsson zram: Fixes for lookup_swap_cache()

  • 2023-11-20 Kazuhito Hagio Fix typos in offset_table and missing "help -o" items

  • 2023-11-17 Chengen Du Fix "rd" command for zram data display in Linux 6.2 and later

  • 2023-11-27 Kazuhito Hagio Mark start of 8.0.5 development phase with version 8.0.4++

8.0.4

  • 2023-11-16 Kazuhito Hagio crash-8.0.3 -> crash-8.0.4

  • 2023-11-13 Lianbo Jiang Fix printing incorrect panic string issue

  • 2023-10-26 Kazuhito Hagio Fix compilation error and warning with gcc-4.8.5

  • 2023-10-24 Lianbo Jiang gdb: Verify COFF symbol stringtab offset

  • 2023-10-23 Lianbo Jiang gdb: Avoid buffer overflow in ada_decode

  • 2023-09-11 chenguanyou Fix "rd" command to display data on zram on Linux 5.17 and later

  • 2023-10-14 Aditya Gupta diskdump: add hook for additional checks on prstatus notes validity

  • 2023-09-29 Kazuhito Hagio Make "clear" external command runnable without "!" and alias-able

  • 2023-09-28 Mathias Krause memory_driver: Support overriding kernel directory

  • 2023-09-28 Mathias Krause memory_driver: Use designated initializer for 'crash_dev'

  • 2023-09-28 Mathias Krause memory_driver: Ensure PWD points to the current directory

  • 2023-09-14 chenguanyou arm64: Fix "vtop" command to display swap information on Linux 5.19 and later

  • 2023-09-25 Aditya Gupta ppc64: do page traversal if vmemmap_list not populated

  • 2023-09-12 David Mair In verify_version() don't require specific syment type values for linux_banner symbol to get its address

  • 2023-08-25 Lianbo Jiang Fix "ps/vm" commands to display the memory usage for exiting tasks

  • 2023-08-18 Song Shuai RISCV64: Add KASLR support

  • 2023-08-14 Rafael Aquini deduplicate kernel_version open-coded parser

  • 2023-08-14 Lianbo Jiang Fix "kmem -s|-S" not working properly when CONFIG_SLAB_FREELIST_HARDENED is enabled

  • 2023-08-14 Lianbo Jiang Revert "Fix "kmem -s|-S" not working properly on RHEL8.6 and later"

  • 2023-08-04 Song Shuai RISCV64: Use va_kernel_pa_offset in VTOP()

  • 2023-08-08 Lianbo Jiang Fix "ps/vm" commands to display correct memory usage

  • 2023-08-02 Lianbo Jiang Fix "foreach" command with "DE" state to display only expected tasks

  • 2023-07-24 Kazuhito Hagio Fix get_linux_banner_from_vmlinux() for vmlinux without ".rodata" symbol

  • 2023-07-21 Lianbo Jiang Fix warning about kernel version inconsistency during crash startup

  • 2023-07-10 Kazuhito Hagio Fix segmentation fault by "tree -s" option with Maple Tree

  • 2023-07-12 Kazuhito Hagio Fix "irq [-a|-s]" options on Linux 6.5-rc1 and later

  • 2023-07-07 Kazuhito Hagio Exclude zero entries from do_maple_tree() return value

  • 2023-07-06 Dave Wysochanski vmware: Improve output when we fail to read vmware 'vmsn' file

  • 2023-07-10 Kazuhito Hagio Fix "irq -a" option on Linux 6.0 and later

  • 2023-07-05 Lianbo Jiang Fix compilation error due to new strlcpy function that glibc added

  • 2023-06-23 Kazuhito Hagio Fix failure of gathering task table on Linux 6.5-rc1 and later

  • 2023-06-22 Kazuhito Hagio Support module memory layout change on Linux 6.4

  • 2023-06-16 Likhitha Korrapati ppc64: Remove redundant PTE checks

  • 2023-06-07 HATAYAMA Daisuke arm64: Fix again segfault in arm64_is_kernel_exception_frame() when corrupt stack pointer address is given

  • 2023-06-07 HATAYAMA Daisuke Revert "Fix segfault in arm64_is_kernel_exception_frame() when corrupt stack pointer address is given"

  • 2023-06-12 Lianbo Jiang Fix invalid structure size error during crash startup on ppc64

  • 2023-05-18 Kazuhito Hagio x86_64: Fix "bt" command printing stale entries on Linux 6.4 and later

  • 2023-05-31 Hsin-Yi Wang Output prompt when stdin is not a TTY

  • 2023-05-30 HATAYAMA Daisuke Fix segfault in arm64_is_kernel_exception_frame() when corrupt stack pointer address is given

  • 2023-05-30 HATAYAMA Daisuke diskdump/netdump: fix segmentation fault caused by failure of stopping CPUs

  • 2023-05-29 Rongwei Wang arm64/x86_64: Enhance "vtop" command to show zero_pfn information

  • 2023-05-18 Kazuhito Hagio Fix "kmem -v" option displaying no regions on Linux 6.3 and later

  • 2023-05-16 Kazuhito Hagio Fix failure of "dev -d|-D" options on Linux 6.4 and later kernels

  • 2023-05-10 Kazuhito Hagio Fix kernel version macros for revision numbers over 255

  • 2023-04-27 Kazuhito Hagio Mark start of 8.0.4 development phase with version 8.0.3++

8.0.3

  • 2023-04-26 Kazuhito Hagio crash-8.0.2 -> crash-8.0.3

  • 2023-04-25 Kazuhito Hagio Fix "net" command on kernel configured with CONFIG_IPV6=m

  • 2023-04-20 Tao Liu Replace lseek/read into pread for kcore and vmcore reading

  • 2023-04-10 Lianbo Jiang Fix "fuser" command to properly deal with an invalid argument

  • 2023-03-23 Lianbo Jiang Fix "vm -M" option to properly deal with an invalid argument

  • 2023-03-15 Juergen Gross xen: adjust to new scheduler structures

  • 2023-03-15 Juergen Gross xen: get stack address via stack_base array if available

  • 2023-03-15 Juergen Gross xen: fix stacksize

  • 2023-03-10 Kazuhito Hagio Fix "kmem -n" option to display memory blocks on Linux 6.3-rc1 and later

  • 2023-03-07 Lianbo Jiang gdb: Fix an assertion failure in dw2_find_pc_sect_compunit_symtab()

  • 2023-03-08 Lianbo Jiang Fix for "net -n" option to properly deal with an invalid argument

  • 2023-02-14 Florian Weimer Fix C99 compatibility issues in embedded copy of GDB

  • 2023-03-07 Lianbo Jiang Enhance "net" command to display IPv6 address of network interface

  • 2023-02-22 Tao Liu Fix for "search -u" option failing in maple tree kernel

  • 2023-02-20 Kazuhito Hagio x86_64: Fix "bt" command on kernels with random_kstack_offset=on

  • 2023-02-21 Lianbo Jiang Fix for "dis" command to correctly display the offset of disassembly code

  • 2023-02-15 Lianbo Jiang Fix for "bt" command unnecessarily printing an exception frame

  • 2023-02-14 Lianbo Jiang Fix for "kmem -i" option to not print invalid values for CACHED

  • 2023-02-09 Lianbo Jiang Fix for "net -s" option to show IPv6 addresses on Linux 3.13 and later

  • 2023-02-08 Aureau, Georges (Kernel Tools ERT) Fix "kmem -s|-S" not working properly on RHEL8.6 and later

  • 2023-02-13 Lianbo Jiang Fix for "bt" command printing "bogus exception frame" warning

  • 2023-01-10 Tao Liu Dump maple tree offset variables by "help -o"

  • 2023-01-10 Tao Liu Update the help text of "tree" command for maple tree

  • 2023-01-10 Tao Liu Introduce maple tree vma iteration to vm_area_dump()

  • 2023-01-10 Tao Liu Add do_maple_tree() for maple tree operations

  • 2023-01-10 Tao Liu Add maple tree support to "tree" command

  • 2023-01-10 Tao Liu Port the maple tree data structures and functions

  • 2023-01-05 Kazuhito Hagio SLAB: Fix for "kmem -s|-S" options on Linux 6.2-rc1 and later

  • 2023-01-05 Kazuhito Hagio SLAB: Fix for "kmem -s|-S" options on Linux 6.1 and later

  • 2022-12-26 Lianbo Jiang gdb: Fix an assertion failure in the gdb's copy_type()

  • 2022-12-27 Kazuhito Hagio Fix build failure due to no EM_RISCV with glibc-2.23 and earlier

  • 2022-12-23 Lianbo Jiang Fix for "kmem -i" to display correct SLAB statistics on Linux 5.9 and later

  • 2022-12-16 Kazuhito Hagio SLUB: Fix for offset change of struct slab members on Linux 6.2-rc1

  • 2022-10-20 Xianting Tian RISCV64: Add the implementation of symbol verify

  • 2022-10-20 Xianting Tian RISCV64: Add 'mach' command support

  • 2022-10-20 Xianting Tian RISCV64: Add 'help -m/M' command support

  • 2022-10-20 Xianting Tian RISCV64: Add 'help -r' command support

  • 2022-10-20 Xianting Tian RISCV64: Add 'bt' command support

  • 2022-10-20 Xianting Tian RISCV64: Add irq command support

  • 2022-10-20 Xianting Tian RISCV64: Add 'dis' command support

  • 2022-10-20 Xianting Tian RISCV64: Make crash tool enter command line and support some commands

  • 2022-10-20 Xianting Tian Add RISCV64 framework code support

  • 2022-12-21 Lianbo Jiang Fix "mount" command to appropriately display the mount dumps

  • 2022-12-15 Kazuhito Hagio Fix for mm_struct.rss_stat conversion into percpu_counter

  • 2022-12-07 Kazuhito Hagio x86_64: Fix for move of per-cpu variables into struct pcpu_hot

  • 2022-12-09 Luc Chouinard EPPIC extension support for crash-8.x + gdb-10.x

  • 2022-12-08 Pavankumar Kondeti arm64: handle vabits_actual symbol missing case

  • 2022-12-01 Ding Hui arm64: fix backtraces of KASAN kernel dumpfile truncated

  • 2022-11-29 Aaron Tomlin ps: Provide an option to display no header line

  • 2022-12-05 Kazuhito Hagio Mark start of 8.0.3 development phase with version 8.0.2++

8.0.2

  • 2022-11-16 Kazuhito Hagio crash-8.0.1 -> crash-8.0.2

  • 2022-11-09 Lianbo Jiang Fix for "ps/vm" commands to display correct %MEM and RSS values

  • 2022-10-24 Matias Ezequiel Vara Larsen Fix segmentation fault in page_flags_init_from_pageflag_names()

  • 2022-10-04 Lianbo Jiang ppc64: still allow to move on if the emergency stacks info fails to initialize

  • 2022-09-19 Tao Liu Let "kmem" print task context with physical address

  • 2022-09-19 Tao Liu Fix page offset issue when converting physical to virtual address

  • 2022-09-19 Tao Liu Fix "kmem" failing to print task context when address is vmalloced stack

  • 2022-09-16 Lianbo Jiang Fix for the invalid linux_banner pointer issue

  • 2022-09-01 Kazuhito Hagio Fix gcc-11 compiler warnings on gdb-10.2/gdb/symtab.c

  • 2022-09-01 Kazuhito Hagio Fix gcc-12 compiler warnings on lkcd_*.c

  • 2022-08-25 Chunguang.Xu Add debian/ubuntu vmlinux location to default search dirs

  • 2022-08-31 Tao Liu x86_64: Correct the identifier when locating the call instruction

  • 2022-08-31 Tao Liu Let gdb get kernel module symbols info from crash

  • 2022-08-25 Tao Liu Fix "task -R" by adding end identifier for union in task_struct

  • 2022-08-22 Huang Shijie arm64: use TCR_EL1_T1SZ to get the correct info if vabits_actual is missing

  • 2022-08-24 Lianbo Jiang gdb: fix for assigning NULL to std::string

  • 2022-08-22 Kazuhito Hagio Makefile: Fix unnecessary re-patching with coreutils-9.0

  • 2022-07-28 Lianbo Jiang x86_64: Fix for AMD SME issue

  • 2022-07-22 Kazuhito Hagio Fix gcc-11 compiler warning on kvmdump.c

  • 2022-07-22 Kazuhito Hagio Fix gcc-11 compiler warning on makedumpfile.c

  • 2022-07-22 Kazuhito Hagio Fix gcc-11 compiler warning on symbols.c

  • 2022-07-22 Kazuhito Hagio Fix gcc-11 compiler warnings on filesys.c

  • 2022-07-04 Qianli Zhao arm64: Fix for st->_stext_vmlinux not initialized when set VA_BITS_ACTUAL

  • 2022-07-04 Hari Bathini ppc64: use a variable for machdep->machspec

  • 2022-07-04 Hari Bathini ppc64: print emergency stacks info with 'mach' command

  • 2022-07-04 Hari Bathini ppc64: handle backtrace when CPU is in an emergency stack

  • 2022-07-04 Hari Bathini ppc64: rename ppc64_paca_init to ppc64_paca_percpu_offset_init

  • 2022-07-04 Hari Bathini ppc64: dynamically allocate h/w interrupt stack

  • 2022-07-04 Hari Bathini ppc64: fix bt for '-S' case

  • 2022-06-22 Kazuhito Hagio Extend field length of task attributes

  • 2022-06-15 Kazuhito Hagio Fix for "dev" command on Linux 5.11 and later

  • 2022-06-10 Kazuhito Hagio sbitmapq: Limit kernels without sbitmap again

  • 2022-06-10 Kazuhito Hagio sbitmapq: Fix for kernels without struct wait_queue_head

  • 2022-06-10 Kazuhito Hagio Make "dev -d|-D" options parse sbitmap on Linux 4.18 and later

  • 2022-06-10 Kazuhito Hagio sbitmapq: Fix for sbitmap_queue without min_shallow_depth member

  • 2022-06-10 Kazuhito Hagio sbitmapq: Fix for sbitmap_word without cleared member

  • 2022-06-10 Kazuhito Hagio sbitmapq: Fix for sbitmap_queue without ws_active member

  • 2022-06-06 Lianbo Jiang Doc: update man page for the "bpf" and "sbitmapq" commands

  • 2022-06-02 Lianbo Jiang Fix for "dev -d|-D" options to support blk-mq change on Linux v5.18-rc1

  • 2022-06-02 Lianbo Jiang Enhance "dev -d|-D" options to support blk-mq sbitmap

  • 2022-05-31 Kazuhito Hagio gdb: print details of unnamed struct and union

  • 2022-05-24 Qi Zheng bt: arm64: add support for 'bt -n idle'

  • 2022-05-24 Qi Zheng bt: x86_64: filter out idle task stack

  • 2022-05-23 Kazuhito Hagio Makefile: add missing crash_target.o to be cleaned

  • 2022-05-23 Lianbo Jiang sbitmapq: fix invalid offset for "sbitmap_word_depth" on Linux v5.18-rc1

  • 2022-05-23 Lianbo Jiang sbitmapq: fix invalid offset for "sbitmap_queue_round_robin" on Linux v5.13-rc1

  • 2022-05-23 Lianbo Jiang sbitmapq: fix invalid offset for "sbitmap_queue_alloc_hint" on Linux v5.13-rc1

  • 2022-05-23 Lianbo Jiang sbitmapq: remove struct and member validation in sbitmapq_init()

  • 2022-05-09 Sourabh Jain ppc64: update the NR_CPUS to 8192

  • 2022-05-10 Kazuhito Hagio Mark start of 8.0.2 development phase with version 8.0.1++

  • 2022-04-26 Kazuhito Hagio crash-8.0.0 -> crash-8.0.1

  • 2022-03-30 Huang Shijie diskdump: Optimize the boot time

  • 2022-04-04 Huang Shijie diskdump: use mmap/madvise to improve the start-up

  • 2022-04-06 Rongwei Wang arm64: handle 1GB block for VM_L4_4K

  • 2022-04-07 xiaer1921 Fix for "kmem -s|-S" on Linux 5.17+ with CONFIG_SLAB

  • 2022-03-28 Lianbo Jiang Fix the failure of resolving ".rodata" on s390x

  • 2022-03-23 HATAYAMA Daisuke kernel: fix start-up time degradation caused by strings command

  • 2022-03-23 Huang Shijie arm64: fix the seek error of "pud page" for live debugging

  • 2022-03-19 Huang Shijie arm64: fix the wrong vmemmap_end

  • 2022-03-14 Huang Shijie arm64: use the vmcore info to get module/vmalloc/vmemmap ranges

  • 2022-03-11 Huang Shijie arm64: update the modules/vmalloc/vmemmap ranges

  • 2022-03-08 Sergey Samoylenko sbitmap.c: use readmem more carefully

  • 2022-03-08 Sergey Samoylenko Fix memory leak in __sbitmap_for_each_set function

  • 2022-03-01 Kazuhito Hagio help.c: Fix a missing new line in "sbitmapq" help page

  • 2022-02-24 Pingfan Liu arm64: deduce the start address of kernel code, based on kernel version

  • 2022-02-24 Huang Shijie Makefile: Change the behavior of target "cscope"

  • 2022-02-23 Lianbo Jiang Fix sys command to display its help information correctly

  • 2022-02-22 Tao Liu Makefile: crash multi-target and multithread compile support

  • 2022-02-16 Tao Liu x86_64_init: Refresh vmalloc region addresses in POST_RELOC instead of POST_GDB phase

  • 2022-02-14 Sergey Samoylenko sbitmapq: add '-p' option

  • 2022-02-14 Sergey Samoylenko Introduce sbitmapq command

  • 2022-02-11 Huang Shijie arm64: Use CONFIG_ARM64_VA_BITS to initialize VA_BITS_ACTUAL

  • 2022-01-28 Shogo Matsumoto log: support "log -t|-m" option for output of printk safe buffers

  • 2022-01-28 Shogo Matsumoto log: introduce "log -s" option to display printk safe buffers

  • 2022-02-16 Kazuhito Hagio Makefile: Fix build failure with "make -j jobs" option

  • 2021-12-20 Sven Schnelle Support for multiple jobs to build crash

  • 2022-02-14 Lianbo Jiang Doc: update man page for the option "--src directory"

  • 2022-02-14 Lianbo Jiang Fix for "bpf -m|-M" options to appropriately display MEMLOCK and UID

  • 2022-02-02 Kazuhito Hagio Fix for "kmem -s|-S" and "bt -F[F]" on Linux 5.17-rc1

  • 2022-01-26 Kazuhito Hagio arm64: Fix segfault by "bt" command with offline cpus

  • 2022-01-21 Tao Liu Improve the ps performance for vmcores with large number of threads

  • 2022-01-26 Lianbo Jiang GDB: fix completion related libstdc++ assert

  • 2022-01-19 Kazuhito Hagio Remove ptype command from "ps -t" option to reduce memory and time

  • 2022-01-17 Lianbo Jiang Move the initialization of "boot_date" to task_init()

  • 2021-12-06 Alexander Egorenkov memory: Handle struct slab changes on Linux 5.17-rc1 and later

  • 2022-01-10 Lianbo Jiang Fix for HZ calculation on Linux 5.14 and later

  • 2022-01-06 Lianbo Jiang Fix for "bt -v" option to display the stack-end address correctly

  • 2022-01-06 Lianbo Jiang Fix for "timer -r" option to display all the per-CPU clocks

  • 2021-12-24 Lianbo Jiang Handle blk_mq_ctx member changes for kernels 5.16-rc1 and later

  • 2021-12-21 Qi Zheng Fix pvops Xen detection for arm machine

  • 2021-12-08 HATAYAMA Daisuke defs.h: fix breakage of compatibility of struct symbol_table_data for extension modules

  • 2021-12-09 HATAYAMA Daisuke defs.h: fix breakage of compatibility of struct machdep_table for extension modules

  • 2021-11-15 Hong YANG arm64: Support overflow stack panic

  • 2021-12-01 Lianbo Jiang Mark start of 8.0.1 development phase with version 8.0.0++

  • 2021-11-24 Kazuhito Hagio crash-7.3.0 -> crash-8.0.0

  • 2021-11-16 Kazuhito Hagio log: add warning to help text to inform the inaccuracy of -T option

  • 2021-11-01 Aaron Tomlin kernel: show that the kernel is tainted at init-time

  • 2021-11-01 Aaron Tomlin kernel: Introduce is_kernel_tainted()

  • 2021-11-01 Aaron Tomlin kernel: consolidate show_kernel_taints()

  • 2021-11-11 Kazuhito Hagio arm64: Update SECTION_SIZE_BITS for kernels >= 5.12

  • 2021-11-09 Philipp Rudo Fix live debugging with lockdown=integrity

  • 2021-10-13 Alexander Egorenkov Handle task_struct cpu member changes for kernels >= 5.16-rc1

  • 2021-10-25 Kazuhito Hagio arm64: Use VA_BITS for page_offset calculation

  • 2021-10-16 Tao Liu symbols: Add mod_symname_hash table dump to help -s

  • 2021-10-16 Tao Liu symbols: Refactor SYMNAME_HASH_INDEX macro to be a function

  • 2021-10-16 Tao Liu symbols: Sync module symbols into mod_symtable whenever module symbols change

  • 2021-10-16 Tao Liu symbols: Intergrate symbol_exists() with mod_symname_hash search

  • 2021-10-16 Tao Liu symbols: Extend symname_hash_search() with hash table select

  • 2021-10-16 Tao Liu symbols: Integrate symbol_search() with mod_symname_hash search

  • 2021-10-16 Tao Liu symbols: Implement install and remove operations for mod_symname_hash

  • 2021-09-30 Kazuhito Hagio .gitignore: add gdb-10.2 directory

  • 2021-09-09 Kazuhito Hagio Remove text value cache code

  • 2021-08-19 Kazuhito Hagio Fix tab completion issues

  • 2021-08-17 Tao Liu Set gdb max-value-size to be unlimited

  • 2021-07-26 Tao Liu Add kernel version dependent check for getting length of log_end

  • 2021-07-15 Tao Liu x86_64_irq_eframe_link_init: Fix wrong instruction searching range calculation

  • 2021-07-11 Tao Liu Fix the failure of reporting vmcore and vmlinux do not match for kernels(<2.6.11)

  • 2021-07-08 Alexey Makhalov Do not adjust addr by relocate offset(KASLR)

  • 2021-03-19 Alexey Makhalov vmware_guestdump: add debugging of the init function

  • 2021-03-19 Alexey Makhalov vmware backend: honor silence flag

  • 2021-03-19 Alexey Makhalov Allow 'gdb disassemble' command for relocated kernel

  • 2021-03-19 Alexey Makhalov crash_taget: fetch_registers support

  • 2021-03-19 Alexey Makhalov Fix reduced output of `bt` command

  • 2021-03-19 Alexey Makhalov "whatis -m": fix duplications in the output

  • 2021-03-19 Alexey Makhalov crash_get_nr_cpus: get nr_cpus from the dumps

  • 2021-08-17 Alexey Makhalov Update to gdb-10.2

7.3.2

  • 2022-04-26 Kazuhito Hagio crash-7.3.1 -> crash-7.3.2

  • 2022-03-30 Huang Shijie diskdump: Optimize the boot time

  • 2022-04-04 Huang Shijie diskdump: use mmap/madvise to improve the start-up

  • 2022-04-06 Rongwei Wang arm64: handle 1GB block for VM_L4_4K

  • 2022-04-07 xiaer1921 Fix for "kmem -s|-S" on Linux 5.17+ with CONFIG_SLAB

  • 2022-03-28 Lianbo Jiang Fix the failure of resolving ".rodata" on s390x

  • 2022-03-23 HATAYAMA Daisuke kernel: fix start-up time degradation caused by strings command

  • 2022-03-23 Huang Shijie arm64: fix the seek error of "pud page" for live debugging

  • 2022-03-19 Huang Shijie arm64: fix the wrong vmemmap_end

  • 2022-03-14 Huang Shijie arm64: use the vmcore info to get module/vmalloc/vmemmap ranges

  • 2022-03-11 Huang Shijie arm64: update the modules/vmalloc/vmemmap ranges

  • 2022-03-08 Sergey Samoylenko sbitmap.c: use readmem more carefully

  • 2022-03-08 Sergey Samoylenko Fix memory leak in __sbitmap_for_each_set function

  • 2022-03-01 Kazuhito Hagio help.c: Fix a missing new line in "sbitmapq" help page

  • 2022-02-24 Pingfan Liu arm64: deduce the start address of kernel code, based on kernel version

  • 2022-02-24 Huang Shijie Makefile: Change the behavior of target "cscope"

  • 2022-02-23 Lianbo Jiang Fix sys command to display its help information correctly

  • 2022-02-22 Tao Liu Makefile: crash multi-target and multithread compile support

  • 2022-02-16 Tao Liu x86_64_init: Refresh vmalloc region addresses in POST_RELOC instead of POST_GDB phase

  • 2022-02-14 Sergey Samoylenko sbitmapq: add '-p' option

  • 2022-02-14 Sergey Samoylenko Introduce sbitmapq command

  • 2022-02-11 Huang Shijie arm64: Use CONFIG_ARM64_VA_BITS to initialize VA_BITS_ACTUAL

  • 2022-01-28 Shogo Matsumoto log: support "log -t|-m" option for output of printk safe buffers

  • 2022-01-28 Shogo Matsumoto log: introduce "log -s" option to display printk safe buffers

  • 2022-02-16 Kazuhito Hagio Makefile: Fix build failure with "make -j jobs" option

  • 2021-12-20 Sven Schnelle Support for multiple jobs to build crash

  • 2022-02-14 Lianbo Jiang Doc: update man page for the option "--src directory"

  • 2022-02-14 Lianbo Jiang Fix for "bpf -m|-M" options to appropriately display MEMLOCK and UID

  • 2022-02-02 Kazuhito Hagio Fix for "kmem -s|-S" and "bt -F[F]" on Linux 5.17-rc1

  • 2022-01-26 Kazuhito Hagio arm64: Fix segfault by "bt" command with offline cpus

  • 2022-01-21 Tao Liu Improve the ps performance for vmcores with large number of threads

  • 2022-01-19 Kazuhito Hagio Remove ptype command from "ps -t" option to reduce memory and time

  • 2022-01-17 Lianbo Jiang Move the initialization of "boot_date" to task_init()

  • 2021-12-06 Alexander Egorenkov memory: Handle struct slab changes on Linux 5.17-rc1 and later

  • 2022-01-10 Lianbo Jiang Fix for HZ calculation on Linux 5.14 and later

  • 2022-01-06 Lianbo Jiang Fix for "bt -v" option to display the stack-end address correctly

  • 2022-01-06 Lianbo Jiang Fix for "timer -r" option to display all the per-CPU clocks

  • 2021-12-24 Lianbo Jiang Handle blk_mq_ctx member changes for kernels 5.16-rc1 and later

  • 2021-12-21 Qi Zheng Fix pvops Xen detection for arm machine

  • 2021-12-08 HATAYAMA Daisuke defs.h: fix breakage of compatibility of struct symbol_table_data for extension modules

  • 2021-11-15 Hong YANG arm64: Support overflow stack panic

  • 2021-12-01 Lianbo Jiang Mark start of 7.3.2 development phase with version 7.3.1++

  • 2021-11-24 Kazuhito Hagio crash-7.3.0 -> crash-7.3.1

  • 2021-11-16 Kazuhito Hagio log: add warning to help text to inform the inaccuracy of -T option

  • 2021-11-01 Aaron Tomlin kernel: show that the kernel is tainted at init-time

  • 2021-11-01 Aaron Tomlin kernel: Introduce is_kernel_tainted()

  • 2021-11-01 Aaron Tomlin kernel: consolidate show_kernel_taints()

  • 2021-11-11 Kazuhito Hagio arm64: Update SECTION_SIZE_BITS for kernels >= 5.12

  • 2021-11-09 Philipp Rudo Fix live debugging with lockdown=integrity

  • 2021-10-13 Alexander Egorenkov Handle task_struct cpu member changes for kernels >= 5.16-rc1

  • 2021-10-25 Kazuhito Hagio arm64: Use VA_BITS for page_offset calculation

  • 2021-10-16 Tao Liu symbols: Add mod_symname_hash table dump to help -s

  • 2021-10-16 Tao Liu symbols: Refactor SYMNAME_HASH_INDEX macro to be a function

  • 2021-10-16 Tao Liu symbols: Sync module symbols into mod_symtable whenever module symbols change

  • 2021-10-16 Tao Liu symbols: Intergrate symbol_exists() with mod_symname_hash search

  • 2021-10-16 Tao Liu symbols: Extend symname_hash_search() with hash table select

  • 2021-10-16 Tao Liu symbols: Integrate symbol_search() with mod_symname_hash search

  • 2021-10-16 Tao Liu symbols: Implement install and remove operations for mod_symname_hash

8.0.1

  • 2022-04-26 Kazuhito Hagio crash-8.0.0 -> crash-8.0.1

  • 2022-03-30 Huang Shijie diskdump: Optimize the boot time

  • 2022-04-04 Huang Shijie diskdump: use mmap/madvise to improve the start-up

  • 2022-04-06 Rongwei Wang arm64: handle 1GB block for VM_L4_4K

  • 2022-04-07 xiaer1921 Fix for "kmem -s|-S" on Linux 5.17+ with CONFIG_SLAB

  • 2022-03-28 Lianbo Jiang Fix the failure of resolving ".rodata" on s390x

  • 2022-03-23 HATAYAMA Daisuke kernel: fix start-up time degradation caused by strings command

  • 2022-03-23 Huang Shijie arm64: fix the seek error of "pud page" for live debugging

  • 2022-03-19 Huang Shijie arm64: fix the wrong vmemmap_end

  • 2022-03-14 Huang Shijie arm64: use the vmcore info to get module/vmalloc/vmemmap ranges

  • 2022-03-11 Huang Shijie arm64: update the modules/vmalloc/vmemmap ranges

  • 2022-03-08 Sergey Samoylenko sbitmap.c: use readmem more carefully

  • 2022-03-08 Sergey Samoylenko Fix memory leak in __sbitmap_for_each_set function

  • 2022-03-01 Kazuhito Hagio help.c: Fix a missing new line in "sbitmapq" help page

  • 2022-02-24 Pingfan Liu arm64: deduce the start address of kernel code, based on kernel version

  • 2022-02-24 Huang Shijie Makefile: Change the behavior of target "cscope"

  • 2022-02-23 Lianbo Jiang Fix sys command to display its help information correctly

  • 2022-02-22 Tao Liu Makefile: crash multi-target and multithread compile support

  • 2022-02-16 Tao Liu x86_64_init: Refresh vmalloc region addresses in POST_RELOC instead of POST_GDB phase

  • 2022-02-14 Sergey Samoylenko sbitmapq: add '-p' option

  • 2022-02-14 Sergey Samoylenko Introduce sbitmapq command

  • 2022-02-11 Huang Shijie arm64: Use CONFIG_ARM64_VA_BITS to initialize VA_BITS_ACTUAL

  • 2022-01-28 Shogo Matsumoto log: support "log -t|-m" option for output of printk safe buffers

  • 2022-01-28 Shogo Matsumoto log: introduce "log -s" option to display printk safe buffers

  • 2022-02-16 Kazuhito Hagio Makefile: Fix build failure with "make -j jobs" option

  • 2021-12-20 Sven Schnelle Support for multiple jobs to build crash

  • 2022-02-14 Lianbo Jiang Doc: update man page for the option "--src directory"

  • 2022-02-14 Lianbo Jiang Fix for "bpf -m|-M" options to appropriately display MEMLOCK and UID

  • 2022-02-02 Kazuhito Hagio Fix for "kmem -s|-S" and "bt -F[F]" on Linux 5.17-rc1

  • 2022-01-26 Kazuhito Hagio arm64: Fix segfault by "bt" command with offline cpus

  • 2022-01-21 Tao Liu Improve the ps performance for vmcores with large number of threads

  • 2022-01-26 Lianbo Jiang GDB: fix completion related libstdc++ assert

  • 2022-01-19 Kazuhito Hagio Remove ptype command from "ps -t" option to reduce memory and time

  • 2022-01-17 Lianbo Jiang Move the initialization of "boot_date" to task_init()

  • 2021-12-06 Alexander Egorenkov memory: Handle struct slab changes on Linux 5.17-rc1 and later

  • 2022-01-10 Lianbo Jiang Fix for HZ calculation on Linux 5.14 and later

  • 2022-01-06 Lianbo Jiang Fix for "bt -v" option to display the stack-end address correctly

  • 2022-01-06 Lianbo Jiang Fix for "timer -r" option to display all the per-CPU clocks

  • 2021-12-24 Lianbo Jiang Handle blk_mq_ctx member changes for kernels 5.16-rc1 and later

  • 2021-12-21 Qi Zheng Fix pvops Xen detection for arm machine

  • 2021-12-08 HATAYAMA Daisuke defs.h: fix breakage of compatibility of struct symbol_table_data for extension modules

  • 2021-12-09 HATAYAMA Daisuke defs.h: fix breakage of compatibility of struct machdep_table for extension modules

  • 2021-11-15 Hong YANG arm64: Support overflow stack panic

  • 2021-12-01 Lianbo Jiang Mark start of 8.0.1 development phase with version 8.0.0++

  • 2021-11-24 Kazuhito Hagio crash-7.3.0 -> crash-8.0.0

  • 2021-11-16 Kazuhito Hagio log: add warning to help text to inform the inaccuracy of -T option

  • 2021-11-01 Aaron Tomlin kernel: show that the kernel is tainted at init-time

  • 2021-11-01 Aaron Tomlin kernel: Introduce is_kernel_tainted()

  • 2021-11-01 Aaron Tomlin kernel: consolidate show_kernel_taints()

  • 2021-11-11 Kazuhito Hagio arm64: Update SECTION_SIZE_BITS for kernels >= 5.12

  • 2021-11-09 Philipp Rudo Fix live debugging with lockdown=integrity

  • 2021-10-13 Alexander Egorenkov Handle task_struct cpu member changes for kernels >= 5.16-rc1

  • 2021-10-25 Kazuhito Hagio arm64: Use VA_BITS for page_offset calculation

  • 2021-10-16 Tao Liu symbols: Add mod_symname_hash table dump to help -s

  • 2021-10-16 Tao Liu symbols: Refactor SYMNAME_HASH_INDEX macro to be a function

  • 2021-10-16 Tao Liu symbols: Sync module symbols into mod_symtable whenever module symbols change

  • 2021-10-16 Tao Liu symbols: Intergrate symbol_exists() with mod_symname_hash search

  • 2021-10-16 Tao Liu symbols: Extend symname_hash_search() with hash table select

  • 2021-10-16 Tao Liu symbols: Integrate symbol_search() with mod_symname_hash search

  • 2021-10-16 Tao Liu symbols: Implement install and remove operations for mod_symname_hash

  • 2021-09-30 Kazuhito Hagio .gitignore: add gdb-10.2 directory

  • 2021-09-09 Kazuhito Hagio Remove text value cache code

  • 2021-08-19 Kazuhito Hagio Fix tab completion issues

  • 2021-08-17 Tao Liu Set gdb max-value-size to be unlimited

  • 2021-07-26 Tao Liu Add kernel version dependent check for getting length of log_end

  • 2021-07-15 Tao Liu x86_64_irq_eframe_link_init: Fix wrong instruction searching range calculation

  • 2021-07-11 Tao Liu Fix the failure of reporting vmcore and vmlinux do not match for kernels(<2.6.11)

  • 2021-07-08 Alexey Makhalov Do not adjust addr by relocate offset(KASLR)

  • 2021-03-19 Alexey Makhalov vmware_guestdump: add debugging of the init function

  • 2021-03-19 Alexey Makhalov vmware backend: honor silence flag

  • 2021-03-19 Alexey Makhalov Allow 'gdb disassemble' command for relocated kernel

  • 2021-03-19 Alexey Makhalov crash_taget: fetch_registers support

  • 2021-03-19 Alexey Makhalov Fix reduced output of `bt` command

  • 2021-03-19 Alexey Makhalov "whatis -m": fix duplications in the output

  • 2021-03-19 Alexey Makhalov crash_get_nr_cpus: get nr_cpus from the dumps

  • 2021-08-17 Alexey Makhalov Update to gdb-10.2

7.3.1

  • 2021-11-24 Kazuhito Hagio crash-7.3.0 -> crash-7.3.1

  • 2021-11-16 Kazuhito Hagio log: add warning to help text to inform the inaccuracy of -T option

  • 2021-11-01 Aaron Tomlin kernel: show that the kernel is tainted at init-time

  • 2021-11-01 Aaron Tomlin kernel: Introduce is_kernel_tainted()

  • 2021-11-01 Aaron Tomlin kernel: consolidate show_kernel_taints()

  • 2021-11-11 Kazuhito Hagio arm64: Update SECTION_SIZE_BITS for kernels >= 5.12

  • 2021-11-09 Philipp Rudo Fix live debugging with lockdown=integrity

  • 2021-10-13 Alexander Egorenkov Handle task_struct cpu member changes for kernels >= 5.16-rc1

  • 2021-10-25 Kazuhito Hagio arm64: Use VA_BITS for page_offset calculation

  • 2021-10-16 Tao Liu symbols: Add mod_symname_hash table dump to help -s

  • 2021-10-16 Tao Liu symbols: Refactor SYMNAME_HASH_INDEX macro to be a function

  • 2021-10-16 Tao Liu symbols: Sync module symbols into mod_symtable whenever module symbols change

  • 2021-10-16 Tao Liu symbols: Intergrate symbol_exists() with mod_symname_hash search

  • 2021-10-16 Tao Liu symbols: Extend symname_hash_search() with hash table select

  • 2021-10-16 Tao Liu symbols: Integrate symbol_search() with mod_symname_hash search

  • 2021-10-16 Tao Liu symbols: Implement install and remove operations for mod_symname_hash

8.0.0

  • 2021-11-24 Kazuhito Hagio crash-7.3.0 -> crash-8.0.0

  • 2021-11-16 Kazuhito Hagio log: add warning to help text to inform the inaccuracy of -T option

  • 2021-11-01 Aaron Tomlin kernel: show that the kernel is tainted at init-time

  • 2021-11-01 Aaron Tomlin kernel: Introduce is_kernel_tainted()

  • 2021-11-01 Aaron Tomlin kernel: consolidate show_kernel_taints()

  • 2021-11-11 Kazuhito Hagio arm64: Update SECTION_SIZE_BITS for kernels >= 5.12

  • 2021-11-09 Philipp Rudo Fix live debugging with lockdown=integrity

  • 2021-10-13 Alexander Egorenkov Handle task_struct cpu member changes for kernels >= 5.16-rc1

  • 2021-10-25 Kazuhito Hagio arm64: Use VA_BITS for page_offset calculation

  • 2021-10-16 Tao Liu symbols: Add mod_symname_hash table dump to help -s

  • 2021-10-16 Tao Liu symbols: Refactor SYMNAME_HASH_INDEX macro to be a function

  • 2021-10-16 Tao Liu symbols: Sync module symbols into mod_symtable whenever module symbols change

  • 2021-10-16 Tao Liu symbols: Intergrate symbol_exists() with mod_symname_hash search

  • 2021-10-16 Tao Liu symbols: Extend symname_hash_search() with hash table select

  • 2021-10-16 Tao Liu symbols: Integrate symbol_search() with mod_symname_hash search

  • 2021-10-16 Tao Liu symbols: Implement install and remove operations for mod_symname_hash

  • 2021-09-30 Kazuhito Hagio .gitignore: add gdb-10.2 directory

  • 2021-09-09 Kazuhito Hagio Remove text value cache code

  • 2021-08-19 Kazuhito Hagio Fix tab completion issues

  • 2021-08-17 Tao Liu Set gdb max-value-size to be unlimited

  • 2021-07-26 Tao Liu Add kernel version dependent check for getting length of log_end

  • 2021-07-15 Tao Liu x86_64_irq_eframe_link_init: Fix wrong instruction searching range calculation

  • 2021-07-11 Tao Liu Fix the failure of reporting vmcore and vmlinux do not match for kernels(<2.6.11)

  • 2021-07-08 Alexey Makhalov Do not adjust addr by relocate offset(KASLR)

  • 2021-03-19 Alexey Makhalov vmware_guestdump: add debugging of the init function

  • 2021-03-19 Alexey Makhalov vmware backend: honor silence flag

  • 2021-03-19 Alexey Makhalov Allow 'gdb disassemble' command for relocated kernel

  • 2021-03-19 Alexey Makhalov crash_taget: fetch_registers support

  • 2021-03-19 Alexey Makhalov Fix reduced output of `bt` command

  • 2021-03-19 Alexey Makhalov "whatis -m": fix duplications in the output

  • 2021-03-19 Alexey Makhalov crash_get_nr_cpus: get nr_cpus from the dumps

  • 2021-08-17 Alexey Makhalov Update to gdb-10.2

  • 2021-09-27 Kazuhito Hagio diskdump: Add support for reading dumpfiles compressed by Zstandard

  • 2021-09-03 Hari Bathini mod: fix module object file lookup

  • 2021-08-26 Ritesh Harjani ppc64: Add MMU type info in machdep command

  • 2021-08-26 Ritesh Harjani .gitignore: Add cscope, ctags & compile_commands.json

  • 2021-08-18 James Hsu arm64: Get CPU registers from ELF notes even without crash_notes symbol

  • 2021-08-05 Philipp Rudo x86_64: Fix check for __per_cpu_offset initialization

  • 2021-06-17 Roman Bolshakov diskdump: Introduce read_pd()

  • 2021-06-17 Roman Bolshakov diskdump: Print total number of dumpable pages

  • 2021-06-17 Roman Bolshakov netdump: Permit --zero_excluded for incomplete ELF dumps

  • 2021-06-17 Roman Bolshakov diskdump: Fail readmem() early if dump is incomplete

  • 2021-07-13 Aaron Tomlin kmem: Add support to -S option to specify a range of CPU-specific slab data

  • 2021-07-02 Pingfan Liu arm64: implement switchable PTOV()/VTOP() for kernels >= 5.10

  • 2021-07-02 Pingfan Liu arm64: use dedicated bits to record the VA space layout changes

  • 2021-07-02 Pingfan Liu arm64: assign page_offset with VA_BITS kernel configuration value

  • 2021-07-02 Pingfan Liu arm64: rename ARM64_PAGE_OFFSET_ACTUAL to ARM64_FLIP_PAGE_OFFSET_ACTUAL

  • 2021-06-29 Alexander Egorenkov Handle task_struct state member changes for kernels >= 5.14-rc1

  • 2021-06-25 Petr Tesařík Fix pvops Xen detection for kernels >= v4.20

  • 2021-06-23 Greg Edwards Fix 'waitq' command for Linux 4.13 and later kernels

  • 2021-05-25 Firo Yang list: add -O option for specifying head node offset

  • 2021-06-09 Luc Chouinard extensions/eppic.mk: Enable use of alternate eppic branch

  • 2021-04-23 Youling Tang MIPS64: three fixes for MIPS64 kernels

  • 2021-04-23 Youling Tang MIPS32/64: Add 'irq' command support

  • 2021-06-03 Youling Tang defs.h: Fix the value of TIF_SIGPENDING macro

  • 2021-05-31 Kazuhito Hagio memory: Fix for "kmem -n" option to display NID correctly

  • 2021-05-26 Kazuhito Hagio memory: Add support for SECTION_TAINT_ZONE_DEVICE flag

  • 2021-05-27 Lianbo Jiang Fix for "kmem -s|-S" option on Linux 5.7 and later kernels

  • 2021-05-12 John Donnelly arm64: Add lowercase tcr_el1_t1sz

  • 2021-05-18 Kazuhito Hagio Mark start of 7.3.1 development phase with version 7.3.0++

7.3.0

  • 2021-04-27 Kazuhito Hagio crash-7.2.9 -> crash-7.3.0

  • 2021-04-26 Kazuhito Hagio Add alternate HZ calculation using write_expire

  • 2021-04-14 Moore, Martin (Linux ERT) Skip HZ calculation using cfq_slice_async in Linux 4.8+

  • 2021-03-16 Youling Tang MIPS64: Add mips64 architecture support information

  • 2021-03-16 Youling Tang MIPS64: Add 'help -r' command support

  • 2021-03-16 Youling Tang MIPS64: Add 'help -m/M' command support

  • 2021-03-16 Youling Tang MIPS64: Add the realization of verify symbol

  • 2021-03-16 Youling Tang MIPS64: Add 'bt -l' command support

  • 2021-03-16 Youling Tang MIPS64: Add 'bt -f' command support

  • 2021-03-16 Youling Tang MIPS64: Fixes for the gathering of the active task registers for the 'bt' command

  • 2021-03-16 Youling Tang MIPS64: Add basic support for the 'bt' command

  • 2021-03-16 Youling Tang MIPS64: Add 'mach' command support

  • 2021-03-16 Youling Tang MIPS64: Add to get processor speed

  • 2021-03-16 Youling Tang MIPS64: Fix display memory size issue

  • 2021-03-16 Youling Tang MIPS64: Add 'dis' command support

  • 2021-03-16 Youling Tang MIPS64: Add 'pte' command support

  • 2021-03-16 Youling Tang MIPS64: Make the crash tool successfully enter the crash command line

  • 2021-03-16 Youling Tang MIPS64: Add gdb patch for Loongson machine

  • 2021-03-16 Youling Tang MIPS64: Support getting regs from kdump dumpfiles

  • 2021-03-16 Youling Tang Add MIPS64 framework code support

  • 2021-03-11 Johan Erlandsson arm64: handle 1GB block for VM_L3_4K

  • 2021-04-16 Kazuhito Hagio ARM: Fix uvtop conversion on LPAE

  • 2021-04-19 Kazuhito Hagio extensions: remove trace.c

  • 2021-04-08 John Donnelly xen: add paravirt_patch_default lookup

  • 2021-04-16 Kazuhito Hagio x86_64: Add Linux 5.8+ exception functions to check exception frame

  • 2021-03-26 Tao Liu extensions/echo.c: Change functions to be static

  • 2021-03-26 John Pittman symbols: fix offset print for function pointers that return pointers

  • 2021-03-22 Lianbo Jiang GDB: fix the failure of 'set scope' command

  • 2020-12-25 HATAYAMA Daisuke memory, zram: introduce and export readswap()

  • 2020-12-25 HATAYAMA Daisuke zram: Add warning message when crash is built without lzo library

  • 2020-12-25 HATAYAMA Daisuke zram: include zram code even without lzo library

  • 2020-12-25 HATAYAMA Daisuke diskdump, zram: Notify necessity of loading zram module

  • 2020-12-25 HATAYAMA Daisuke diskdump, zram: fix fault error when reading zram disk with no symbol information

  • 2020-12-25 HATAYAMA Daisuke diskdump, zram: initialize zram symbol information when needed

  • 2020-12-25 HATAYAMA Daisuke diskdump, zram: cleanup try_zram_decompress()

  • 2021-03-17 Lianbo Jiang Do not pass through the 'sy' command to GDB

  • 2021-03-15 John Pittman struct: fix struct print member array of list_heads

  • 2021-03-04 HATAYAMA Daisuke tools: Fix potential write to object of 0 size

  • 2021-03-04 HATAYAMA Daisuke symbols: Fix potential read to already freed object

  • 2021-03-04 HATAYAMA Daisuke Add valgrind support for the crash's custom memory allocator

  • 2021-03-02 Kazuhito Hagio x86_64: fix "bt" command on 5.12-rc1 and later kernels

  • 2021-02-19 Kazuhito Hagio Makefile: reduce crash build log

  • 2021-02-18 John Pittman log: change log level print in older kernels

  • 2021-01-25 Jiri Bohac xen: increase __PHYSICAL_MASK_SHIFT_XEN to 52

  • 2021-01-19 Yunfeng Ye mod: Show the base address of module

  • 2021-01-19 Kazuhito Hagio Fix "kmem -v" option on Linux 5.11-rc1 and later kernels

  • 2021-01-19 Kazuhito Hagio Fix "dev -d" option on Linux 5.11-rc1 and later kernels

  • 2021-01-20 Kazuhito Hagio Fix "sys [-t]|mod -S" after "mod -t" when crash runs with -s option

  • 2021-01-18 John Pittman set: add ability to un-set scope

  • 2020-12-31 HATAYAMA Daisuke tools: fix potential source and destination overlap with strcpy()

  • 2020-12-31 HATAYAMA Daisuke netdump: fix illegal read from already freed buffer

  • 2021-01-05 Jackie Liu Fix segmentation fault when ikconfig passed nonstandard values

  • 2020-12-23 Kazuhito Hagio extensions/eppic.mk: move ping check to recipe script

  • 2020-11-26 Qianli Zhao arm64: update mapping symbol filter in arm64_verify_symbol

  • 2020-11-30 Qianli Zhao netdump: fix regression for raw RAM dumpfiles

  • 2020-11-30 Alexey Makhalov x86_64: VC exception stack support

  • 2020-11-25 John Ogness printk: use committed/finalized state values

  • 2020-11-20 John Ogness printk: add support for lockless ringbuffer

  • 2020-11-30 Kazuhito Hagio Mark start of 7.3.0 development phase with version 7.2.9++

7.2.9

  • 2020-11-20 Kazuhito Hagio crash-7.2.8 -> crash-7.2.9

  • 2020-11-14 Hari Bathini task.c: avoid unnecessary cpu cycles in stkptr_to_task()

  • 2020-11-13 Kazuhito Hagio Fix for compiler warnings on 32-bit architectures

  • 2020-10-30 Nikolay Borisov x86_64: Add support for new divide_error name

  • 2020-11-09 Alexey Makhalov kaslr: get offset by walking page tree

  • 2020-11-09 Alexey Makhalov calc_kaslr_offset: 5-level paging support

  • 2020-11-09 Alexey Makhalov calc_kaslr_offset: try all CPUs

  • 2020-11-09 Kazuhito Hagio memory_driver: Fix memory driver module build with Linux 5.4 and later

  • 2020-09-04 Petr Tesarik memory_driver: Fix memory driver module build with kernel 5.8+

  • 2020-09-09 David Mair x86_64: Perform EFRAME_VERIFY always if set in x86_64_exception_frame

  • 2020-08-12 Goodbach xendump: fix failure to match arm/aarch64 elf format of xendump file

  • 2020-10-15 Kazuhito Hagio Fix for failure when using extensions on PPC64 target x86_64 binary

  • 2020-10-12 Alexey Makhalov vmware_guestdump: new input format

  • 2020-10-12 Alexey Makhalov vmware_vmss: make vmss global

  • 2020-10-01 Alexander Egorenkov Fix a failure due to offset change of uts_namespace.name

  • 2020-10-06 HATAYAMA Daisuke sadump: fix help -D lists uninteresting register entries

  • 2020-09-03 Valentin Schneider extensions/trace: Rename ring_buffer to trace_buffer

  • 2020-09-03 Valentin Schneider extensions/trace: Rename trace_buffer to array_buffer

  • 2020-08-21 Kazuhito Hagio Append time zone to output of date and time

  • 2020-08-18 Kazuhito Hagio Fix "irq -a" option on Linux 4.3 or later kernels

  • 2020-08-17 Kazuhito Hagio Fix "kmem -i" option on Linux 5.9-rc1 and later kernels

  • 2020-08-24 Mathias Krause Basic support for PaX's split module layout

  • 2020-08-12 Mikhail Zaslonko s390dbf: support s390 debug feature version 3

  • 2020-08-12 Mikhail Zaslonko s390dbf: remove raw-view from s390dbf

  • 2020-08-16 Dave Wysochanski Fix "log" command when crash is started with "--minimal" option

  • 2020-08-08 Mathias Krause Support core files with "unusual" layout

  • 2020-08-08 Mathias Krause vmware: vmss - beautify and extend debug log

  • 2020-08-08 Mathias Krause vmware: vmss - support huge holes in vmem

  • 2020-07-27 HATAYAMA Daisuke kaslr: fix failure of calculating kaslr_offset due to an sadump format restriction

  • 2020-07-27 HATAYAMA Daisuke kaslr: cleanup how to set values to the arguments of calc_kaslr_offset()

  • 2020-07-27 HATAYAMA Daisuke symbols: fix initialization of st->{pti_init, kaiser}_vmlinux

  • 2020-07-27 HATAYAMA Daisuke symbols: Add linux_banner_vmlinux in symbol table

  • 2020-07-14 Bhupesh Sharma arm64: Change tcr_el1_t1sz variable name to TCR_EL1_T1SZ

  • 2020-06-30 Masanari Iida Fix six spelling typos in help.c

  • 2020-06-11 Li RongQing x86_64: Add support for 1GB huge pages to "vtop" command

  • 2020-05-28 Dave Anderson Implement support for user-space zram reads on x86_64 for recent Fedora kernel version 5.6.7-200.fc31. The patch adds the following: (1) Redefine _PFN_BITS() macro to use MAX_POSSIBLE_PHYSMEM_BITS. (2) Fix to determine whether address_space.i_pages is a radix tree or an xarray. (3) Fix to not mistakenly select the "lzo" compressor when the kernel has used the default "lzo-rle" compressor. (4) Since zram may be provided as a kernel module, it would be necessary to load its debuginfo during the crash session; therefore perform the zram structure-size/member-offset initializations when first required instead of during session initialization. (5) Handle the zram_table_entry structure member name change from "value" to "flags".

  • 2020-05-08 Dave Anderson Replace people.redhat.com references with github equivalents. (anderson@redhat.com)

  • 2020-04-24 Dave Anderson Several fixes for ARM64 kernels: (1) Linux kernel patch "arm64: mm: Introduce vabits_actual" introduced "physvirt_offset", which is not equal to (PHYS_OFFSET - PAGE_OFFSET) when KASLR is enabled. physvirt_offset is caculated in arch/arm64/mm/init.c before memstart_addr (PHYS_OFFSET) is randomized. Let arm64_VTOP() and arm64_PTOV() use physvirt_offset instead, whose default value is set to (phys_offset - page_offset) (2) For ARM64 RAM dumps without any vmcoreinfo and KASLRpassed as argument, " _stext_vmlinux" is not set. This causes incorrect calculation of vmalloc_start with VA_BITS_ACTUAL. (3) For ARM64 RAM dumps For ramdumps without vmcoreinfo, get CONFIG_ARM64_VA_BITS from in-kernel config. Without this, vmemmap size is calculated incorrectly. (4) Fix the vmemmap_start to match with what the kernel uses. (vinayakm.list@gmail.com)

  • 2020-04-24 Dave Anderson Prepare for the introduction of ARM64 8.3 Pointer Authentication as in-kernel feature. The value of CONFIG_ARM64_KERNELPACMASK will be exported as a vmcoreinfo entry, and will be used with text return addresses on the kernel stack. (amit.kachhap@arm.com)

  • 2020-04-21 Dave Anderson When kernels are built with LLVM, the names of many symbols may be appended with an ".llvm.&lt;number>" string. As a result, commands such as "irq" fail with the error message irq: neither irq_desc, _irq_desc, irq_desc_ptrs or irq_desc_tree symbols exist". This patch adds the LLVM-generated string to the other strings that are stripped from symbols before they are stored. (zhaoqianli@xiaomi.com)

  • 2020-04-21 Dave Anderson Introduction of the "log -T" option, which translates the leading timestamp value of each message into human readable format. (w@laoqinren.net)

  • 2020-04-15 Dave Anderson Fix for the "mount -n [pid|task]" option when running on a live system. Without the patch, if the [pid|task] has been created since the last internal task table refresh, the command fails with the error message "mount: invalid task or pid value: <value>". (w@laoqinren.net)

  • 2020-04-13 Dave Anderson If readmem() receives a user-space address in a page that has been swapped to the zswap compressed swap cache, an attempt will be made to find and decompress the page. (zhaoqianli@xiaomi.com)

  • 2020-04-09 Dave Anderson Fix for "kmem -[sS]" options on Linux 4.14 and later kernels built with CONFIG_SLAB_FREELIST_HARDENED enabled. Without the patch, there will be error messages of the type "kmem: <cache name> slab: <address> invalid freepointer: <obfuscated address>" for caches created during SLUB bootstrap, as they are likely to have s->random == 0. (hbathini@linux.ibm.com)

  • 2020-04-02 Dave Anderson Introduce a new ARM64 "--machdep vabits_actual=<value>" command line option for Linux 5.4 and later dumpfiles, which require the kernel's dynamically-determined "vabits_actual" value for virtual address translation. Without the patch, the crash session fails during initialization with the error message "crash: cannot determine VA_BITS_ACTUAL". This option will become unnecessary when the proposed TCR_EL1.T1SZ vmcoreinfo entry entry is incorporated into the kernel. (anderson@redhat.com)

  • 2020-04-02 Dave Anderson Modify the display behavior of the "struct -r" option so as to scale the minimum display size from the size of a per-architecture long (32-bits or 64-bits) down to 8-bits, 16-bits or 32-bits when the requested size is equal to one of the smaller sizes. (asmadeus@codewreck.org)

  • 2020-04-02 Dave Anderson Enhancement of the "struct -r" option to support the raw memory display of a single data structure member. Without the patch, the option only supported the raw display of a complete data structure. (asmadeus@codewreck.org)

  • 2020-03-23 Dave Anderson Fix for reading compressed kdump dumpfiles from systems with physical memory located at extraordinarily high addresses. In a system with a physical address range from 0x602770ecf000 to 0x6027ffffffff, the crash utility fails during session initialization due to an integer overflow, ending with the error message "crash: vmlinux and vmcore do not match!". (chenjialong@huawei.com)

  • 2020-03-05 Dave Anderson Enhancement to the "bpf -p|-P" options to display the eBPF program name string. (k-hagio-ab@nec.com)

  • 2020-03-04 Dave Anderson Fix for the "bpf -m|-M" options on Linux 5.3 and later kernels that contain commit 3539b96e041c06e4317082816d90ec09160aeb11, titled "bpf: group memory related fields in struct bpf_map_memory". Without the patch, the options prints "(unknown)" for MEMLOCK and UID. (k-hagio-ab@nec.com)

  • 2020-03-03 Dave Anderson Introduction of a new "extend -s" option, which shows all available shared object extension modules that are located in the directories that are part of the normal search path that is used when a shared object is loaded without a fully-qualified pathname. (w@laoqinren.net)

  • 2020-02-24 Dave Anderson Fix to allow the translation of ARM64 FIXMAP addresses located in the virtual memory region between the end of the vmalloc region and the beginning of the vmemmap region. Without the patch, reads of virtual addresses within that region are not recognized properly and will fail. (zhaoqianli@xiaomi.com)

  • 2020-02-13 Dave Anderson Fix for the "log" command. Without the patch, the command's output may be truncated, ending with the error message "log: invalid log_buf entry encountered". (chenqiwu@xiaomi.com)

  • 2020-01-31 Dave Anderson Fix for an ARM64 gcc-10 compilation error. Without the patch, the build of the embedded gdb module fails with an error message that indicates "multiple definition of 'tdesc_aarch64'". (anderson@redhat.com)

  • 2020-01-31 Dave Anderson Mark start of 7.2.8 development phase with version 7.2.7++

7.2.8

  • 2020-01-30 Dave Anderson crash-7.2.7 -> crash-7.2.8

  • 2020-01-29 Dave Anderson Fix for a gcc-10 compilation error. Without the patch, the build of the crash library fails with a stream of error messages indicating "multiple definition of 'diskdump_flags'" (anderson@redhat.com)

  • 2020-01-17 Dave Anderson Rework the previous patch for support of S390X standalone dumpfiles and LKCD dumpfiles that were taken from S390X KASLR kernels to avoid calling an s390x-specific function from generic code. (zaslonko@linux.ibm.com)

  • 2020-01-16 Dave Anderson Fix for support of S390X standalone dumpfiles and LKCD dumpfiles that were taken from S390X KASLR kernels. (zaslonko@linux.ibm.com)

  • 2020-01-08 Dave Anderson Fix for support of ELF format kdump vmcores from S390X KASLR kernels. Without the patch, the crash session fails during initialization with the error message "crash: vmlinux and vmcore do not match!". (anderson@redhat.com)

  • 2020-01-07 Dave Anderson Fix for ARM64 when running against Linux 5.5-rc1 and later kernels that contain commit b6e43c0e3129ffe87e65c85f20fcbdf0eb86fba0, titled "arm64: remove __exception annotations". Without the patch, the ARM64 crash session fails during initialization with the error message "crash: cannot resolve __exception_text_start". (anderson@redhat.com)

  • 2020-01-07 Dave Anderson Update copyright to 2020 in crash version output.

  • 2019-12-24 Dave Anderson When determining the ARM64 kernel's "vabits_actual" value by reading the new TCR_EL1.T1SZ vmcoreinfo entry, display its value during session initialization only when invoking crash with "-d1" or larger -d debug value. (anderson@redhat.com)

  • 2019-12-20 Dave Anderson Fix for the "log -a" option. The kernel's sk_buff.len field is a 32-bit unsigned int, but crash was reading its 32-bit value into a 64-bit unsigned long stack variable. All extra bits that pre-existed in the upper 32-bits of the stack variable were passed along as part of a buffer size request; if the upper 32-bit bits were non-zero, then the command would fail with a dump of the internal buffer allocation stats followed by the message "log: cannot allocate any more memory!". (anderson@redhat.com)

  • 2019-12-16 Dave Anderson When accessing the 32-bit ARM kernel's "crash_notes" array, continue to read the per-cpu NT_PRSTATUS note contents if an invalid note is encountered. Without the patch, if an invalid note is found, all other notes were ignored, and subsequent "bt" attempts on the active tasks would fail. (chenqiwu@xiaomi.com, anderson@redhat.com)

  • 2019-12-15 Dave Anderson When accessing the ARM64 kernel's "crash_notes" array, continue to read the per-cpu NT_PRSTATUS note contents if an invalid note is encountered. Without the patch, if an invalid note is found, all other notes were ignored, and subsequent "bt" attempts on the active tasks would fail. (chenqiwu@xiaomi.com, anderson@redhat.com)

  • 2019-12-12 Dave Anderson Fix for newer Xen hypervisors, which fail during initialization with the error message "crash: cannot resolve init_tss". This is caused by a change in the Xen hypervisor with commit 78884406256, from 4.12.0-rc5-763-g7888440625. In that patch the tss_struct structure was renamed to tss64 and the tss_page structure was introduced, which contains a single tss64. Now tss information is accessible via the symbol "per_cpu__tss_page". (dietmar.hahn@ts.fujitsu.com)

  • 2019-12-03 Dave Anderson Fix for the "dis -s" option when running against kernels that have been configured with CONFIG_RANDOMIZE_BASE=y (KASLR). Without the patch, the command option indicates that the FILE and LINE numbers are "(unknown)", and that "source code is not available". (anderson@redhat.com)

  • 2019-12-01 Dave Anderson Fix for segmentation violation if the gdb_readmem_callback() function gets called from other than a crash command, such as from an epython command from the mypkdump.so extension module. (anderson@redhat.com)

  • 2019-12-01 Dave Anderson Fix for a crash-7.2.7 regression that determined the value of the ARM64 kernel SECTION_SIZE_BITS by reading the in-kernel configuration data if there is no VMCOREINFO data available. In that case, without the patch, a double-free exception may occur. (anderson@redhat.com)

  • 2019-11-26 Dave Anderson If an S390X kernel crashes before vmcoreinfo initialization, there is no way to extract the KASLR offset for such early dumps. In a new S390X kernel patch, the KASLR offset will be stored in the lowcore memory during early boot and then overwritten after vmcoreinfo is initialized. This patch allows crash to identify the KASLR offset that is stored in the lowcore memory. (zaslonko@linux.ibm.com)

  • 2019-11-22 Dave Anderson Similar to ARM64, the X86_64, PPC64 and S390x architectures will use the exported value of MAX_PHYSMEM_BITS from the vmcoreinfo data as the preferred method if it is available. (anderson@redhat.com)

  • 2019-11-21 Dave Anderson Fix two typos in the examples section of the "help bt" display, which mistakenly show "bf -f" and "bf -FF" instead of "bt -f" and "bt -FF". (austindh.kim@gmail.com)

  • 2019-11-20 Dave Anderson Fix to determine the ARM64 kernel's "vabits_actual" value from the ELF header of a dumpfile created with the "snap.so" extension module. (anderson@redhat.com)

  • 2019-11-19 Dave Anderson Determine the ARM64 kernel's "vabits_actual" value by reading the new TCR_EL1.T1SZ vmcoreinfo entry. (bhsharma@redhat.com)

  • 2019-11-15 Dave Anderson Fix for the determination of the ARM64 page size on Linux 4.4 and earlier kernels that do not have vmcoreinfo data. Without the patch, the crash session fails during initialization with the error message "crash: "cannot determine page size". (chenqiwu@xiaomi.com)

  • 2019-11-13 Dave Anderson Add support for handling openSUSE vmlinux files which will be shipped in .xz compressed format. Without the patch, only gzip and bzip2 formats are supported. (jirislaby@gmail.com)

  • 2019-11-08 Dave Anderson Fix for a "warning: large integer implicitly truncated to unsigned type [-Woverflow]" compiler message generated on 32-bit architectures as a result of the "Additional fix for the kmem -n option" patch above. (anderson@redhat.com)

  • 2019-11-08 Dave Anderson Add support for extended numbering support in ELF dumpfiles to handle more than PN_XNUM (0xffff) program headers. If the real number of program header table entries is equal to or greater than PN_XNUM, the e_phnum field of the ELF header is set to PN_XNUM, and the actual number is set in the sh_info field of the section header at index 0. (k-hagio@ab.jp.nec.com)

  • 2019-11-04 Dave Anderson Adjust a crash-7.1.8 patch 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. Since the problem only arises before the determination of the randomized PAGE_OFFSET value, restrict the patch such that it only takes effect during session initialization. (anderson@redhat.com)

  • 2019-10-22 Dave Anderson In the unlikely event that the panic task in a dumpfile cannot be determined by the normal means, scan the kernel log buffer for panic keywords, and if found, generate the panic task from the CPU number that is specified following the panic message. (chenqiwu@xiaomi.com)

  • 2019-10-21 Dave Anderson Additional fix for the "kmem -n" option on Linux-5.4-rc1 and later kernels that contain commit b6c88d3b9d38f9448e0fcf44847a075ea81d5ca2, titled "drivers/base/memory.c: don't store end_section_nr in memory blocks". The initial fix only addressed the x86_64 architecture; this incremental patch addresses the other architectures. (msys.mizuma@gmail.com)

  • 2019-10-19 Dave Anderson Fix for Linux 4.19.5 and later 4.19-based x86_64 kernels which are NOT configured with CONFIG_RANDOMIZE_BASE and have backported kernel commit d52888aa2753e3063a9d3a0c9f72f94aa9809c15, titled "x86/mm: Move LDT remap out of KASLR region on 5-level paging", which modified the 4-level and 5-level paging PAGE_OFFSET values. Without this patch, the crash session fails during initialization with the error message "crash: seek error: kernel virtual address: <address> type: "tss_struct ist array". (anderson@redhat.com)

  • 2019-10-17 Dave Anderson Fix for the "kmem -n" option on Linux-5.4-rc1 and later kernels that contain commit b6c88d3b9d38f9448e0fcf44847a075ea81d5ca2, titled "drivers/base/memory.c: don't store end_section_nr in memory blocks". Without the patch, the command option fails with the error message "kmem: invalid structure member offset: memory_block_end_section_nr". (msys.mizuma@gmail.com)

  • 2019-10-15 Dave Anderson Fix for a "[-Wstringop-truncation]" compiler warning emitted when symbols.c is built in a Fedora Rawhide environment with gcc-9.0.1 or later. (anderson@redhat.com)

  • 2019-10-15 Dave Anderson Fix for the "timer -r" option on Linux 5.4-rc1 and later kernels that contain commit 511885d7061eda3eb1faf3f57dcc936ff75863f1, titled "lib/timerqueue: Rely on rbtree semantics for next timer". Without the patch, the option fails with the following error "timer: invalid structure member offset: timerqueue_head_next". (k-hagio@ab.jp.nec.com)

  • 2019-10-11 Dave Anderson Fix for Linux 5.4-rc1 and later kernels that contain commit/merge e0703556644a531e50b5dc61b9f6ea83af5f6604, titled "Merge tag 'modules- for-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux which introduces symbol namespaces. Without the patch, and depending upon the architecture: (1) the kernel module symbol list will contain garbage entries (2) the session fails during session initialization with a dump of the internal buffer allocation stats followed by the message "crash: cannot allocate any more memory!" (3) the session fails during session initialization with a segmentation violation. (anderson@redhat.com)

  • 2019-10-10 Dave Anderson Fix for Linux 5.4-rc1 and later kernels that contain commit 688fcbfc06e4fdfbb7e1d5a942a1460fe6379d2d, titled "mm/vmalloc: modify struct vmap_area to reduce its size". Without the patch "kmem -v" will display nothing; other architectures that utilize the vmap_area_list to determine the base of mapped/vmalloc address space will fail. (anderson@redhat.com)

  • 2019-10-10 Dave Anderson Mark start of 7.2.8 development phase with version 7.2.7++

7.2.7

  • 2019-09-20 Dave Anderson crash-7.2.6 -> crash-7.2.7

  • 2019-09-19 Dave Anderson Determine the ARM64 SECTION_SIZE_BITS value using the following order of precedence: (1) from the VMCOREINFO data if it exists (2) from the in-kernel configuration data if it exists (3) the default value (chenqiwu@xiaomi.com)

  • 2019-09-18 Dave Anderson Fix to prevent a potential segmentation violation when accessing the compressed configuration data contained in kernels that are configured with CONFIG_IKCONFIG. (chenqiwu@xiaomi.com)

  • 2019-09-17 Dave Anderson Fix for the internal caching of the kernel's mem_map array of page structures. Without the patch, in rare circumstances, commands such as "kmem -p" may erroneously receive zero-filled page structures. (k-hagio@ab.jp.nec.com)

  • 2019-08-15 Dave Anderson Create the specified installation directory if it does not exist. Without the patch, the Makefile's "make install" target will fail if the INSTALLDIR and/or DESTDIR macros resolve to a non-existent directory. (pmenzel@molgen.mpg.de)

  • 2019-08-05 Dave Anderson crash-7.2.4 commit 6596f1121b added a "list -B" option to allow more efficient enumeration of longer lists. There is a small bug with this option where it may incorrectly flag a loop length of "0" on list of length 1, indicating "list: loop detected, loop length: 0". Since it is impossible to have a loop of length 0, the erroneous message can be prevented by ensuring the list count is non-zero. (dwysocha@redhat.com)

  • 2019-08-02 Dave Anderson Fix for the "timer" command in RHEL7.6 and later RHEL7 kernels. Without the patch, the command emits extra faulty timer entries because the tvec_root.vec[] and tvec.vec[] arrays are tracked using hlist_head structures where list_head structures should be used. (k-hagio@ab.jp.nec.com)

  • 2019-07-26 Dave Anderson Fix for the "kmem -n" option on Linux 5.3-rc1 and later kernels that contain commit 326e1b8f83a4318b09033ef754f40c785aed5e68, titled "mm/sparsemem: introduce a SECTION_IS_EARLY flag". Without the patch, mem_map addresses containing the flag in bit 3 incorrectly show it as part of the virtual address; with the patch, the option displays the new "E" state flag. (k-hagio@ab.jp.nec.com)

  • 2019-07-15 Dave Anderson Implemented a new "error" environment variable that sets the destination of error messages. It can be set to either: "default": error messages are always displayed on the console; if the output of a command is piped to an external command or redirected to a file, the error messages are also sent to the pipe or file. "redirect": if the output of a command is piped to an external command or redirected to a file, error messages are only sent to the pipe or file; otherwise they are displayed on the console. "filename": error messages are only sent to the specified filename; they are not displayed on the console and are not sent to a pipe or file. (dkwon@redhat.com)

  • 2019-07-10 Dave Anderson Fix a memory leak in the previous "dis" commit. (anderson@redhat.com)

  • 2019-07-09 Dave Anderson Add support for the "count" argument to be used in conjunction with the "dis -r" and "dis -f" reverse/forward modes of operation. In reverse mode, the specified "count" number of instructions leading up to and including the target address will be displayed. In forward mode, the display will be limited to "count" instructions. Without the patch, using a count argument in either mode generates a "count argument ignored" message, and the command proceeds as if it had not been entered. (anderson@redhat.com, atomlin@redhat.com)

  • 2019-07-02 Dave Anderson Introduction of a new "rd -R" option, which will display memory in reverse order. Memory will be displayed up to and including the address argument, which requires that the count argument be greater than 1 in order to display memory before the specified address. (anderson@redhat.com)

  • 2019-06-28 Dave Anderson Fix to the x86_64 "--machdep phys_base=<value>" command line option to allow the use of a negative decimal number as the value. Without the patch, only the hexadecimal representation of the value would be accepted. (v-santy@microsoft.com, anderson@redhat.com)

  • 2019-06-26 Dave Anderson Fix for a "warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]" compiler message generated by the previous "timer" patch when compiling kernel.c on 32-bit architectures. (anderson@redhat.com)

  • 2019-06-26 Dave Anderson Extend the "timer" command with a new "TTE" column that displays the remaining time in jiffies until the expiration of a timer entry, and where a negative value displays the number of jiffies that have elapsed since a timer has expired. (oleksandr@redhat.com)

  • 2019-06-21 Dave Anderson As an addendum to the previous patch for updating the gdb-7.6.patch in an existing pre-built source tree, when rebuilding for the ppc64 architecture, do not restore the selected gdb files. This is because the gdb-7.6-ppc64le-support.patch will have modified the selected files during the initial build. (anderson@redhat.com)

  • 2019-06-20 Dave Anderson When the gdb-7.6.patch file is updated in an existing source tree, it gets re-applied during the next build using "patch -N --fuzz=0", which ignores patches that have already been applied. However, if a gdb file has been modified multiple times, the secondary patching may fail to recognize that a given patch has been previously applied, and will attempt to re-apply it. To prevent any uninintended consequences, the gdb-7.6.patch file will also act as a shell script invoked by the Makefile, which restores any selected gdb file to its original state prior to all secondary patch applications. (anderson@redhat.com)

  • 2019-06-19 Dave Anderson Introduction of a new "bt -p" option that generates a backtrace of the panic task, regardless of the current context. This option is only applicable when running against dumpfiles in which the panic task is known. (atomlin@redhat.com)

  • 2019-06-10 Dave Anderson Fix for Linux 4.16 and later ARM64 kernels that contain kernel commit fa2a8445b1d3810c52f2a6b3a006456bd1aacb7e, titled "arm64: allow ID map to be extended to 52 bits", and which have been configured with both CONFIG_DEVMEM=y and CONFIG_STRICT_DEVMEM=y. Without the patch, an inconsequential error message indicating "crash: read error: kernel virtual address: <address> type: idmap_ptrs_per_pgd" is displayed during initialization. (anderson@redhat.com)

  • 2019-06-07 Dave Anderson Fix for the determination of the ARM64 "kimage_voffset" value in Linux 4.6 and later kernels if an ELF format dumpfile: (1) does not contain its value in a VMCOREINFO note, and (2) if the kernel image was loaded at a higher address than the system's physical base address. This may happen, for example, when analyzing a dynamically-created ramdump-to-ELF dumpfile. (zhaoqianli@xiaomi.com, anderson@redhat.com)

  • 2019-06-07 Dave Anderson Fix for a signed/unsigned comparison bug in vmcoreinfo_read_string() which could lead to a segmentation violation in the highly unlikely event of a zero length or severely truncated VMCOREINFO note. (nudasnev@microsoft.com)

  • 2019-05-31 Dave Anderson Two fixes for the "sys -c" option, one that significantly shortens the time consumed by the option, and a second fix that addresses occasional situations where the file and line number data are not displayed. (k-hagio@ab.jp.nec.com)

  • 2019-05-30 Dave Anderson Fix for Linux 5.2 and later x86_64 kernels that contain kernel commit 019b17b3ffe48100e52f609ca1c6ed6e5a40cba1, titled "x86/exceptions: Add structs for exception stacks". Without the patch, the exception stack sizes cannot be determined, and as a result backtraces that initiate from an exception stack will fail with error messages indicating "bt: invalid kernel virtual address: <address> type: stack contents" and then "bt: read of stack at <address> failed". (anderson@redhat.com)

  • 2019-05-24 Dave Anderson Fix to allow live system analysis of s390x kernels that have been configured with CONFIG_RANDOMIZE_BASE=y (KASLR). Without the patch, the "--kaslr=<offset>" command line option is required. (anderson@redhat.com)

  • 2019-05-24 Dave Anderson Fix for Linux 5.2 and later x86_64 kernels that contain kernel commit e6401c13093173aad709a5c6de00cf8d692ee786, titled "x86/irq/64: Split the IRQ stack into its own". Without the patch, the per-cpu IRQ stack addresses cannot be determined, and as a result backtraces that utilize an IRQ stack will fail. (anderson@redhat.com)

  • 2019-05-21 Dave Anderson Change the gating of a debug message in the do_xarray_dump_cb() function from CRASHDEBUG(0) to CRASHDEBUG(1). Without the patch, users of the XArray callback functionality may see messages of the sort "entry has XARRAY_TAG_MASK bits set: 239ab0024001" without setting a debug number. (anderson@redhat.com)

  • 2019-05-21 Dave Anderson Export the get_mount_list() and get_dump_level() functions in defs.h for use by extension modules. (k-hagio@ab.jp.nec.com)

  • 2019-05-21 Dave Anderson Fix for a crash-7.2.6 regression to the "p" command. Without the patch, a gdb pass-through command construct such as: p ((struct zone *)0xffff901e3ffda000)->min_slab_pages gets parsed incorrectly, and the "-" is mistaken for an argument option, and each of the subsequent characters are marked as an "invalid option". (dwysocha@redhat.com)

  • 2019-05-07 Dave Anderson Document the "-N", "-g" and "-z" options in the "help" command's help page. (k-hagio@ab.jp.nec.com)

  • 2019-05-07 Dave Anderson Mark start of 7.2.7 development phase with version 7.2.6++

7.2.6

  • 2019-05-03 Dave Anderson crash-7.2.5 -> crash-7.2.6

  • 2019-05-03 Dave Anderson Fix for hybrid kernels that have backported support for the Xarray facility while allowing subsystems to continue to use radix trees. Without the patch, the crash session fails during initialization with the message "crash: xarray facility does not exist or has changed its format". (anderson@redhat.com)

  • 2019-04-25 Dave Anderson Update the README file to indicate the capability of building an x86_64 crash binary with "make target=PPC64", which can be used to analyze ppc64le dumpfiles on an x86_64 host. (anderson@redhat.com)

  • 2019-04-24 Dave Anderson If a duplicate list entry is encountered when using the "list -B" Brent algorithm, change the list loop length value from hexadecimal to decimal. (dwysocha@redhat.com)

  • 2019-04-24 Dave Anderson Fix for the "dev" help page to remove the unused -r option letter. (surendra@chelsio.com)

  • 2019-04-23 Dave Anderson If the kernel's "vmap_area_list" doubly-linked list is corrupt such that it does not link back to the global list_head, commands that require information regarding the range of virtually-mapped kernel addresses will display a generic list-handling error message such as "kmem: invalid list entry: 0", and the command will typically fail to fully complete. However, without the patch, there will also be "WARNING: malloc/free mismatch (29/30)" messages that get displayed after every subsequent command. This patch prevents the mismatch messages, and also adds an additional error message indicating "WARNING: invalid/corrupt vmap_area_list" to further clarify the generic list-handling error message. (dwysocha@redhat.com, anderson@redhat.com)

  • 2019-04-23 Dave Anderson Linux 4.18 kernels introduced a new CONFIG_PROC_VMCORE_DEVICE_DUMP configuration in commit 2724273e8fd00b512596a77ee063f49b25f36507, titled "vmcore: add API to collect hardware dump in second kernel", in which device drivers may collect a device specific snapshot of the hardware/firmware state of their underlying devices, and export the data as a kdump ELF note with type NT_VMCOREDD. This patch recognizes the new ELF note(s) in both ELF and compressed kdump vmcore dumpfiles. The "help -[nD]" option shows basic information about each note, and two new "dev" command options have been introduced. The "dev -V" option displays an indexed list of each note, showing the device name, the dumpfile offset, and the size of each note. The "dev -v index [file]" option either dumps the contents of a note to the display screen in a human-readable format, or copies the note data directly to a specified file. (surendra@chelsio.com)

  • 2019-04-15 Dave Anderson Fix for the "dev -[dD]" options on Linux 5.1-rc1 and later kernels that contain commit 570d0200123fb4f809aa2f6226e93a458d664d70, titled "driver core: move device->knode_class to device_private". Without the patch, the command options fail with the error message "dev: invalid structure member offset: device_knode_class". (k-hagio@ab.jp.nec.com)

  • 2019-04-05 Dave Anderson Apply initial changes to support kernel address space layout randomization (KASLR) for s390X. This is the minimal patch-set required to process s390x dumps for the kernels configured with CONFIG_RANDOMIZE_BASE, and to accept the "--kaslr" command line option. Only dumpfiles whose headers contain kernel VMCOREINFO data are supported. (zaslonko@linux.ibm.com)

  • 2019-04-04 Dave Anderson Extension of the "snap.so" extension module to pass a second architecture-specific value in the ELF header; its initial use is for support of the upcoming ARM64 52-bit kernel virtual address space by passing both the VA_BITS and VA_BITS_ACTUAL values. (anderson@redhat.com)

  • 2019-04-01 Dave Anderson Implement support for ARM64 kernels that are configured with: CONFIG_ARM64_PA_BITS=52 CONFIG_ARM64_64K_PAGES CONFIG_PGTABLE_LEVELS=3 and that run on a host containing physical memory that utilizes any bit in the uppermost 4 bits of the 52-bit physical address range. (anderson@redhat.com)

  • 2019-04-01 Dave Anderson When the is_s390_dump() function is called to determine whether a file is an s390 dumpfile, it currently presumes that the fopen() call always works, and then tries to read it with using a NULL file pointer. Change it to verify that the fopen() was successful, and if not, print an error message as is done with the other dumpfile type verifier functions. (ramin.blackhat@gmail.com)

  • 2019-04-01 Dave Anderson Fix for the "files -d <dentry>" option if the dentry.d_inode pointer is NULL. Without the patch, the command output does not display the super_block pointer or the file's pathname. (martin.moore@hpe.com)

  • 2019-03-27 Dave Anderson Fix for the PPC64 "bt" command running against kernels that are configured with CONFIG_THREAD_INFO_IN_TASK. Without the patch, the "bt" command fails with the message "bt: invalid/stale stack pointer for this task: <address>". (anderson@redhat.com)

  • 2019-03-26 Dave Anderson Fix to find the kernel configuration data in Linux 5.1 kernels containing commit 13610aa908dcfce77135bb799c0a10d0172da6ba, titled "kernel/configs: use .incbin directive to embed config_data.gz". Without the patch, new kernels configured with CONFIG_IKCONFIG_PROC will display "WARNING: could not find MAGIC_START!" during session initialization, and also when running "sys config" during runtime. (anderson@redhat.com)

  • 2019-03-25 Dave Anderson Fixes for the "trace.so" extension module: (1) The reader_page can be empty if it was never read, do not record it if it is empty. Better yet, do not record any page that is empty. The struct buffer_page "real_end" is not available in older kernels, so it needs to be tested if it exists before we can use it. (2) In newer kernels, the sp->type of kernel module symbols does not contain the symbol type character unless the module's debuginfo data has been loaded into the crash session. Writing a garbage type to the kallsyms file for trace-cmd to read causes it to crash, so just always write an 'm'. (3) Add the "trace dump -t <trace.dat>" option to the SYNOPSIS line of the help page. (rostedt@goodmis.org)

  • 2019-03-22 Dave Anderson Commit dd12805ed1db7 in the linux-next kernel repository, titled "XArray: Remove radix tree compatibility", changes the definition of "radix_tree_root" back to be a struct. However, the content of the new structure differs from the original structure, so without the patch, current linux-next kernels fail during initialization with the error message "radix trees do not exist or have changed their format". Because the new "radix_tree_root" and "xarray" structures have nearly the same layout, the existing functionality for XArrays can be reused. (prudo@linux.ibm.com)

  • 2019-03-22 Dave Anderson Fix for the "dis <function>" option with kernel module text symbols on Linux 5.0 and later kernels. Without the patch, the disassembly may stop prematurely or extend into the next function because the st_size member of the Elf32_Sym or Elf64_Sym text symbol structures can no longer be used as the function size. (anderson@redhat.com)

  • 2019-03-22 Dave Anderson First phase of support of the upcoming ARM64 kernel memory map changes to support 52-bit kernel virtual addressing, which allows the configuration of CONFIG_ARM64_VA_BITS to be 52, but where the actual number of VA bits may be downgraded during boot depending upon the hardware capability. This phase is only applicable for live system analysis. (anderson@redhat.com)

  • 2019-03-22 Dave Anderson Fix for the display of kernel module symbol types by the "sym" command in Linux 5.0 and later kernels if the module debuginfo data has not been loaded into the crash session. The st_info member of the Elf32_Sym or Elf64_Sym structures has changed so as to not contain ASCII symbol type characters, and as a result the "sym" command will show unprintable data as the symbol type. With the patch, only text types ("t" or "T") will be displayed, and the symbols others will show "?". (anderson@redhat.com)

  • 2019-03-08 Dave Anderson Fix for the "kmem -i" option on Linux 5.0 and later kernels that contain commit ca79b0c211af63fa3276f0e3fd7dd9ada2439839 titled "mm: convert totalram_pages and totalhigh_pages variables to atomic". Without the patch, the command prints some incorrect values, and besides does not print high/low memory information on kernels which are configured with CONFIG_HIGHMEM. (k-hagio@ab.jp.nec.com)

  • 2019-03-07 Dave Anderson Fix for the "kmem -z" option on Linux 5.0 and later kernels that contain commit a921444382b49cc7fdeca3fba3e278bc09484a27, titled "mm: move zone watermark accesses behind an accessor". Without the patch, the command fails with the error message "kmem: invalid (optional) structure member offsets: zone_pages_min or zone_struct_pages_min". (k-hagio@ab.jp.nec.com)

  • 2019-02-26 Dave Anderson 32-bit ARM kernels built with the Thumb-2 instruction set utilize the R7 register instead of FP for unwinding stacks using the DWARF unwinder. On those kernels, without the patch, the "bt" command only shows the task header. (vincent.whitchurch@axis.com)

  • 2019-02-13 Dave Anderson Fix for determining the x86_64 "phys_base" value in dumpfiles created by the KVM "virsh dump" facility if the kernel is KASLR-enabled and does not have the phys_base value stored in vmcoreinfo data. Without the patch, the message "WARNING: cannot determine physical base address: defaulting to 0" is displayed, and the crash session fails to initialize. (zhiche.yy@alibaba-inc.com)

  • 2019-02-12 Dave Anderson Fix for Linux 4.14.84 and later 4.14-based x86_64 kernels which are NOT configured with CONFIG_RANDOMIZE_BASE and have backported kernel commit d52888aa2753e3063a9d3a0c9f72f94aa9809c15, titled "x86/mm: Move LDT remap out of KASLR region on 5-level paging", which modified the 4-level and 5-level paging PAGE_OFFSET values. Without this patch, the crash session fails during initialization with the error message "crash: read error: kernel virtual address: <address> type: tss_struct ist array". (anderson@redhat.com)

  • 2019-02-08 Dave Anderson For live system analysis where there is no vmcoreinfo ELF note attached to /proc/kcore, or for dumpfile analysis where there is no vmcoreinfo ELF note attached to the dumpfile, this patch sets the internal pc->read_vmcoreinfo() function to a new plugin function that reads the data directly from the live kernel or dumpfile. Because the function is set much later during initialization than if the ELF note is attached to /proc/kcore or the dumpfile, it may not be available during very early session initialization. (anderson@redhat.com)

  • 2019-02-08 Dave Anderson Support for configurable CONFIG_ARM64_PA_BITS values introduced in kernel commit 982aa7c5f0861bf56b2412ca341a13f44c238ba4, titled "arm64: add kconfig symbol to configure physical address size". Without the patch, it is impossible to determine the value of CONFIG_ARM64_PA_BITS, and will require a new MAX_PHYSMEM_BITS vmcoreinfo entry to be exported. This patch reads that entry during intitialization. (anderson@redhat.com)

  • 2019-02-01 Dave Anderson First phase of support for ARM64 kernels that are configured with CONFIG_ARM64_USER_VA_BITS_52, which causes the PTRS_PER_PGD count to increase from 64 to 1024. Without the patch, "WARNING: cannot access vmalloc'd module memory" will be displayed during session initialization, and the translation of any mapped kernel virtual address that requires a page table walk will fail, leading to a myriad of other errors. (anderson@redhat.com)

  • 2019-01-31 Dave Anderson Fix for the internal parse_line() utility function to account for embedded sets of parentheses, which may be used for expressions that are passed to gdb by the "p" command. Without the patch, expressions containing embedded sets of parentheses are broken up into multiple argument tokens instead of just one. The previous commit has been reverted by this one. (anderson@redhat.com)

  • 2019-01-24 Dave Anderson Fix for the "p" command if the expression contains more than one opening parenthesis character and a minus/dash sign. Without the patch, the minus/dash sign will get dropped from the command prior to it being passed on to gdb for evaluation, and the command will fail with the message "p: gdb request failed: <expression>", where the <expression> string will not contain the minus/dash sign. (anderson@redhat.com)

  • 2019-01-18 Dave Anderson Fix for Linux 4.20 and later x86_64 kernels which are NOT configured with CONFIG_RANDOMIZE_BASE. Linux 4.20 introduced kernel commit d52888aa2753e3063a9d3a0c9f72f94aa9809c15, titled "x86/mm: Move LDT remap out of KASLR region on 5-level paging", which modified the 4-level and 5-level paging PAGE_OFFSET values. Without this patch, the crash session fails during initialization with the error message "crash: read error: kernel virtual address: <address> type: tss_struct ist array". For kernels prior to Linux 4.20.0 which have backports of the kernel commit, the kernel's PAGE_OFFSET value must be manually specified via the command line option "--machdep page_offset=ffff888000000000" for kernels with 4-level page tables, or "--machdep page_offset=ff11000000000000" for kernels with 5-level paging. (or alternatively the shorter version "-m page_offset=<address>" may be used). The command line option requirement may be revisited in the future. (anderson@redhat.com)

  • 2019-01-18 Dave Anderson Two fixes for the Xen hypervisor; the first fixes a bug seen with Xen 4.11.0 during initialization, which fails with the error message "crash: invalid kernel virtual address: <address> type: fill_pcpu_struct", followed by "WARNING: cannot fill pcpu_struct" and "crash: cannot read cpu_info". The second fix prevents a segmentation violation associated with a crash-7.1.1 commit that addressed the Xen 4.5.0 hypervisor symbol name change from "dom0" to "hardware_domain". (dietmar.hahn@ts.fujitsu.com)

  • 2019-01-18 Dave Anderson Mark start of 7.2.6 development phase with version 7.2.5++

7.2.5

  • 2019-01-10 Dave Anderson crash-7.2.4 -> crash-7.2.5

  • 2019-01-08 Dave Anderson Fix for a gcc-9 compilation error that occurs if an inline asm statement clobbers the stack pointer. Without the patch, x86 and x86_64 builds will fail to compile gdb-7.6/gdb/common/linux-ptrace.c, generating an error that indicates "error: Stack Pointer register clobbered by '%rsp' in 'asm'". (anderson@redhat.com)

  • 2019-01-07 Dave Anderson A crash-7.1.1 commit added support for Linux version 5.x. To prevent surprise failures due to unexpected kernel version bumps in the future, support has been added for version 6, keeping it one step ahead. (anderson@redhat.com)

  • 2019-01-07 Dave Anderson Fix for the "dev -[dD]" options in kernels containing Linux 5.0-rc1 commit 7ff4f8035695984c513598e2d49c8277d5d234ca, titled "block: remove dead queue members", in which the number of I/Os issued to a disk driver are no longer stored in the request_queue structure. Without the patch, the options indicate "dev: -d option not supported or applicable on this architecture or kernel". With the patch, the "DRV" column is not shown. (m.mizuma@jp.fujitsu.com)

  • 2019-01-07 Dave Anderson Prevent a SIGSEGV if a user attempts to input a command line that exceeds the maximum length of 1500 bytes. The patch displays an error message and ignores the command line. (anderson@redhat.com)

  • 2019-01-07 Dave Anderson Add a write operation handler to the sample /dev/crash memory driver that enables writing to kernel memory via the "wr" command. (serapheim@delphix.com)

  • 2019-01-03 Dave Anderson Red Hat copyright 2019

  • 2018-12-14 Dave Anderson Fix for an initialization-time segmentation violation when invoking crash-7.2.4 or later with "crash -d2" or larger debug number. (anderson@redhat.com)

  • 2018-12-14 Dave Anderson Fix for an initialization-time session failure when all three of the following conditions exist: (1) invoking the session with "crash -d2" or larger debug number (2) running against a Linux 3.3 or later kernel (3) using a post-7.2.4 crash utility that has the new "kmem -n" support above for the display of memory blocks Without the patch, the crash session fails with the error message "crash: invalid structure member offset: device_kobj". (anderson@redhat.com)

  • 2018-12-12 Dave Anderson The RHEL8 kernel will contain a backport of the Linux 4.19 kernel commit 7d4340bb92a9df78e6e28152f3dd89d9bd82146b, titled "powerpc/mm: Increase MAX_PHYSMEM_BITS to 128TB with SPARSEMEM_VMEMMAP config". As a result, the use of the THIS_KERNEL_VERSION() macro by the crash utility does not suffice for determining the MAX_PHYSMEM_BITS value for PPC64. The appropriate update has been made in this patch. (anderson@redhat.com)

  • 2018-12-07 Dave Anderson Implemented a new plugin function for the readline library's tab completion feature. Without the patch, the use of the default plugin from the embedded gdb module has been seen to cause segmentation violations or other fatal malloc/free/corruption assertions. The new plugin takes gdb out of the picture entirely, and also restricts the matching options to just symbol names, so as not to clutter the results with irrelevant filenames. (anderson@redhat.com)

  • 2018-12-04 Dave Anderson With Linux 4.20-rc1 commit 4ffe713b7587b14695c9bec26a000fc88ef54895, titled "powerpc/mm: Increase the max addressable memory to 2PB", the PPC64 MAX_PHYSMEM_BITS value has been bumped up to 51 for CONFIG_SPARSEMEM_VMEMMAP and CONFIG_SPARSEMEM_EXTREME. The appropriate update has been made in this patch. (hbathini@linux.ibm.com)

  • 2018-11-29 Dave Anderson Fix for the "ps -s" option on ARM64 if the number of tasks exceeds 2000. Without the patch, the command ultimately fails with a dump of the internal buffer allocation stats, followed by the message "ps: cannot allocate any more memory!". (anderson@redhat.com)

  • 2018-11-27 Dave Anderson Update crash banner copyright year range

  • 2018-11-16 Dave Anderson Fix for the "files -p &lt;inode>" option on a file with a large number of pages. Without the patch, the command attempts to read radix tree node slot entries that are RADIX_TREE_EXCEPTIONAL_ENTRY types instead of page pointers, and as a result may fail with a dump of the internal buffer allocation stats followed by the message "files: cannot allocate any more memory!". (anderson@redhat.com)

  • 2018-11-16 Dave Anderson Added a new "tree -t xarray" option to display of the contents of an XArray in Linux 4.20 and later kernels. The implementation is similar to that of radix tree displays, but in addition, the "-p" option will also display the index value of each entry in a radix tree or XArray. (anderson@redhat.com)

  • 2018-11-15 Dave Anderson Added support for usage of the XArray facility by the "ipcs" command. Without the patch, the command may fail on Linux 4.20 and later kernels with the error message "irq: radix trees do not exist or have changed their format". (anderson@redhat.com)

  • 2018-11-15 Dave Anderson Added support for usage of the XArray facility by the "irq" command. Without the patch, the command fails on Linux 4.20 and later kernels with the error message "irq: radix trees do not exist or have changed their format". (anderson@redhat.com)

  • 2018-11-14 Dave Anderson Add support for usage of the XArray facility by the "files -p" option. Without the patch, the command fails on Linux 4.20 and later kernels with the error message "files: radix trees do not exist or have changed their format". (anderson@redhat.com)

  • 2018-11-14 Dave Anderson Third phase of support for the XArray facility, which consolidates the radix_tree_pair and xarray_pair structures into a unified list_pair structure that is used by both facilities, and fixes the "bpf" command. Without the patch, the command fails with the error message "bpf: radix trees do not exist or have changed their format". (anderson@redhat.com)

  • 2018-11-13 Dave Anderson Second phase of support for the XArray facility, which handles the switch-over of PID handling from a radix tree to an XArray in Linux 4.20 and later kernels. Without the patch, the crash session fails during session initialization with the message "crash: radix trees do not exist or have changed their format". (asmadeus@codewreck.org, anderson@redhat.com)

  • 2018-11-12 Dave Anderson First phase of support for the XArray facility. The added support is similar to that of radix trees, but introduces completely separate functions, structures and #defines. None of the applicable radix tree users in the crash utility have been switched over, so this phase does not introduce any functional changes. (asmadeus@codewreck.org, anderson@redhat.com)

  • 2018-11-07 Dave Anderson Implemented the functionality for a new MEMBER_TYPE_NAME() macro, which will return a pointer to the type name string of a structure member. It is being put in place for the support of Linux 4.20 radix tree to xarray replacements, where structure member types may be changed from radix_tree_root structures to xarray structures. (anderson@redhat.com)

  • 2018-11-05 Dave Anderson Fix for Linux 4.20-rc1 and later kernels that contain kernel commit 5c83511bdb9832c86be20fb86b783356e2f58062, titled "x86/paravirt: Use a single ops structure". Without the patch, the kernel may be misidentified as an ARCH_XEN kernel, with the most noticable result being the inability to read vmemmap'd page structures. (anderson@redhat.com)

  • 2018-10-31 Dave Anderson Second phase of support for the VMCOREINFO PT_NOTE added to the ELF header of /proc/kcore in Linux 4.19 and later kernels. This patch introduces support for live session /proc/kcore VMCOREINFO access by the crash utility's internal pc->read_vmcoreinfo() function. New usage include the initialization of the x86_64 phys_base value, and the arm64 phys_offset, page size, and VA bits count. (anderson@redhat.com)

  • 2018-10-25 Dave Anderson Account for the /proc/kcore VMCOREINFO PT_NOTE in Linux 4.19 and later kernels having commit 23c85094fe1895caefdd19ef624ee687ec5f4507, titled "proc/kcore: add vmcoreinfo note to /proc/kcore". The PT_NOTE information is stored during session initialization for later display by "help -[n|D]"; a subsequent commit will make it available for use by the crash utility's internal pc->read_vmcoreinfo() function. (anderson@redhat.com)

  • 2018-10-24 Dave Anderson Modify the x86_64 "bt" behavior when a legitimate exception RIP value cannot be referenced symbolically, such as when the exception occurs while running in seccomp BPF filter code. Without the patch, the exception frame register dump is preceded by "[exception RIP: unknown or invalid address]", and then followed by "bt: WARNING: possibly bogus exception frame". With the patch applied, the translation of the exception RIP will show "[exception RIP: no symbolic reference]", and there will be no warning message. (anderson@redhat.com)

  • 2018-10-11 Dave Anderson Address several Coverity Scan "RESOURCE_LEAK" issues in the following top-level source files: cmdline.c, kvmdump.c, lkcd_v8.c, xendump.c, symbols.c, unwind_x86_32_64.c, va_server.c and va_server_v1.c. (anderson@redhat.com)

  • 2018-10-10 Dave Anderson Fix the calculation of the vmalloc memory region size to account for Linux 4.17 commit a7412546d8cb5ad578805060b4006f2a021b5868, titled "x86/mm: Adjust vmalloc base and size at boot-time", which increases the region's size from 32TB to 1280TB when 5-level pagetables are enabled. Also presume that virtual addresses above the end of the vmalloc space up to the beginning of vmemmap space are translatable via 5-level page tables. Without the patch, mapped virtual addresses may fail translation in whatever command accesses them, with errors indicating "seek error: kernel virtual address: <mapped-address> type: <type-string>" (anderson@redhat.com)

  • 2018-10-05 Dave Anderson Addendum to the previous "kmem -n" patch to fix a FTBFS issue. Without the patch, certain architectures fail to compile with the error "memory.c:17315:16: error: ‘PAGE_SHIFT’ undeclared (first use in this function)" (m.mizuma@jp.fujitsu.com)

  • 2018-10-04 Dave Anderson Enhancement to the "kmem -n" option to dump memory block information if the kernel supports it. In addition, the memory section data block has a new "STATE" column added to it. (m.mizuma@jp.fujitsu.com)

  • 2018-10-02 Dave Anderson As an addendum to the "dev -p" patch above, add the new structure member offsets for display by the "help -o" option. (anderson@redhat.com)

  • 2018-10-02 Dave Anderson Fix for the PPC64 "bt" command to recognize when a thread is running in OPAL firmware. Without the patch, the "bt" command indicates <task-address>: Invalid Stack Pointer <OPAL-firmware-address>" (hbathini@linux.ibm.com)

  • 2018-09-27 Dave Anderson Fix to allow piping command output to a shell script beginning with a shebang (#!) character sequence if the script pathname is specified with a preceding "./" or "/". Without the patch, the piped command fails with the message "crash: pipe operation failed". (k-hagio@ab.jp.nec.com)

  • 2018-09-27 Dave Anderson With Linux 4.19-rc1 commit 7d4340bb92a9df78e6e28152f3dd89d9bd82146b, titled "powerpc/mm: Increase MAX_PHYSMEM_BITS to 128TB with SPARSEMEM_VMEMMAP config", the PPC64 MAX_PHYSMEM_BITS value has been bumped up to 47. The appropriate update has been made in this patch. (hbathini@linux.ibm.com)

  • 2018-09-24 Dave Anderson Resurrection of the the "dev -p" option for displaying PCI device data on Linux 2.6.26 and later kernels. The option was deprecated as of Linux 2.6.26, and without the patch, the option would indicate "dev: -p option not supported or applicable on this architecture or kernel" when running against the newer kernel versions. PCI Bus information will also be displayed with this patch. (m.mizuma@jp.fujitsu.com)

  • 2018-09-24 Dave Anderson Mark start of 7.2.5 development phase with version 7.2.4++

7.2.4

  • 2018-09-21 Dave Anderson crash-7.2.3 -> crash-7.2.4

  • 2018-09-17 Dave Anderson An addendum to crash commit 5fe78861ea1589084f6a2956a6ff63677c9269e1, this patch for the PPC64 "bt" command prevents an invalid error message from being displayed when an active non-panic task is interrupted while running in user space. Without the patch, the command correctly indicates "Task is running in user space", dumps the user-space exception frame, but then prints the invalid error message "bt: invalid kernel virtual address: ffffffffffffff90 type: Regs NIP value". (anderson@redhat.com)

  • 2018-09-07 Dave Anderson Commit 3db3d3992d781c1e42587d2d2bf81e785408e0c2 in crash-7.1.8 was aimed at making the PPC64 "bt" command work for dumpfiles saved with the FADUMP facility, but it introduced a bit of unwarranted complexity in "bt" command processing. Reworked the "bt" command processing for PPC64 arch to make it a little less compilated and also to print symbols for NIP and LR registers in exception frames. Without the patch, "bt" on non-panic active tasks may fail with the message "bt: invalid kernel virtual address: <address> type: Regs NIP value". (hbathini@linux.ibm.com)

  • 2018-09-06 Dave Anderson Fix for the "files -p <inode>" option. Without the patch, the command attempts to translate radix tree node slot entries that are RADIX_TREE_EXCEPTIONAL_ENTRY types, and as a result may fail prematurely with an error message of the sort "files: do_radix_tree: callback operation failed: entry: 5 item: 44788c5000a". (anderson@redhat.com)

  • 2018-09-04 Dave Anderson Fix for the "files" command in Linux 4.17 and later kernels that contain commit b93b016313b3ba8003c3b8bb71f569af91f19fc7, titled "page cache: use xa_lock". Without the patch, the "files -c" option fails with the message "files: -c option not supported or applicable on this architecture or kernel", and the "files -p &lt;inode>" option fails in a similar manner. (k-hagio@ab.jp.nec.com)

  • 2018-08-30 Dave Anderson Fix a cut-and-paste error in the previous patch application. (anderson@redhat.com)

  • 2018-08-29 Dave Anderson Fix for Linux 4.19-rc1 and later kernels that contain kernel commit 7290d58095712a89f845e1bca05334796dd49ed2, titled "module: use relative references for __ksymtab entries". Without the patch, kernels configured with CONFIG_HAVE_ARCH_PREL32_RELOCATIONS fail during session initialization, with a dump of the internel buffer allocation stats followed by the message "crash: cannot allocate any more memory!" (asmadeus@codewreck.org)

  • 2018-08-29 Dave Anderson Fix for Linux 4.19-rc1 and later kernels that contain kernel commit 2c4704756cab7cfa031ada4dab361562f0e357c0, titled "pids: Move the pgrp and session pid pointers from task_struct to signal_struct". Without the patch, the crash session fails during initialization with the message "crash: invalid structure member offset: task_struct_pids". (anderson@redhat.com)

  • 2018-08-24 Dave Anderson Introduction of a new "kmem -r" option. With the implementation of per-cgroup kmem_cache slabs, the number of slab caches displayed by "kmem -s" can number into the thousands. Similar to /proc/slabinfo, this new option displays the accumulated data of the root cache and its children. It is limited to Linux 4.11 and later kernels that contain the "slab_root_caches" list. Currently the command option is restricted to kernels configured with CONFIG_SLUB. (k-hagio@ab.jp.nec.com)

  • 2018-08-22 Dave Anderson Fix for the "kmem -V" option on Linux 4.14 and later kernels that are configured without CONFIG_NUMA, and therefore do not contain the "numa_stat_item" enumeration. Without the patch, the command causes the crash session to abort with the error messages "double free or corruption (!prev)" followed by "Aborted (core dumped)". (k-hagio@ab.jp.nec.com)

  • 2018-08-21 Dave Anderson Fix for the swap offset calculation in the x86_64 "vm -p", "pte", and user-space "vtop" commands. The swap offset bits in an x86_64 PTE were changed in Linux 4.6, and then again in Linux 4.18.1 with the new L1TF security patchset. Without the patch, the offset value in the later kernels, or in older kernels with an L1TF backport, show an incorrect swap offset value. (anderson@redhat.com)

  • 2018-08-21 Dave Anderson Fix for the "vm -p", user-space "vtop", and "pte" commands in kernels where the dimension of the static swap_info[] array is not contained in the vmlinux file's debuginfo data. Without the patch, the translation of a swapped-out PTE entry fails to determine the swap device, and the commands display "cannot determine swap location". (anderson@redhat.com)

  • 2018-08-20 Dave Anderson Fix for the "trace.c" extension module for RHEL7.6, which moved the ftrace_event_call.data member into a new structure contained within an anonymous union. Without the patch, the module fails to load, indicating "no commands registered: shared object unloaded". (xuhuan.fnst@cn.fujitsu.com)

  • 2018-08-14 Dave Anderson Account for the addition of the new ORC unwinder "orc_entry.end" member in kernel commit d31a580266eeb1f355df90fde8a71f480e30ad70, titled "x86/unwind/orc: Detect the end of the stack". (anderson@redhat.com)

  • 2018-08-09 Dave Anderson As an addendum to the new "kmem -[sS]" output format, align the slab cache name string so that it is beneath the "NAME" header column when the "kmem -I &lt;slab-cache>" option is used to ignore a slab cache, or if the scan of the metadata of a slab cache enounters corruption. Also remove a superfluous line from the "help kmem" description of the "kmem -I" option. (k-hagio@ab.jp.nec.com, anderson@redhat.com)

  • 2018-08-09 Dave Anderson Fix for the "files" and "net -s" commands when a task has an open files count that exceeds 1024 (FD_SETSIZE) file descriptors. Without the patch, the commands may omit the display of open file descriptors. (tan.hu@zte.com.cn)

  • 2018-08-08 Dave Anderson Modify the output of the "kmem -[sS]" header and contents such that the slab cache name string is moved from the second column to the the last column. Since the slab cache name strings have become increasingly longer over time, without the patch, the numerical column contents may be skewed so far to the right that the output becomes difficult to read. (k-hagio@ab.jp.nec.com)

  • 2018-08-08 Dave Anderson Fix for running live on ARM64 kernels against /proc/kcore on kernels configured with CONFIG_RANDOMIZE_BASE. Without the patch, depending upon the hardware platform, the session may fail with the error message "crash: vmlinux and /proc/kcore do not match!". (anderson@redhat.com)

  • 2018-07-19 Dave Anderson Update for "ps" and "foreach" commands to display and recognize two new process states, "ID" for the TASK_IDLE macro introduced in Linux 4.2, and "NE" for the TASK_NEW bit introduced in Linux 4.8. (k-hagio@ab.jp.nec.com)

  • 2018-07-16 Dave Anderson Fix to prevent an unnecessary "read error" message during session initialization on live systems running a kernel that is configured with CONFIG_X86_5LEVEL. Without the patch, a message indicating "crash: read error: kernel virtual address: &lt;address> type: __pgtable_l5_enabled" will be displayed if /proc/kcore gets selected as the live memory source after /dev/mem is determined to be unusable. (anderson@redhat.com)

  • 2018-07-16 Dave Anderson Fourth phase of support for x86_64 5-level page tables in Linux 4.17 and later kernels. This patch adds support for user virtual address translation when the kernel is configured with CONFIG_X86_5LEVEL. (douly.fnst@cn.fujitsu.com)

  • 2018-07-13 Dave Anderson Fix for the "repeat" command when the argument consists of an input file construct, for example, "repeat -1 < input_file". Without the patch, only the first command line in the input file is executed each time. (anderson@redhat.com)

  • 2018-07-12 Dave Anderson Fix for x86_64 "bt" command to prevent an in-kernel exception frame from not being displayed. Without the patch, if the RIP in a pt_regs structure on the stack is not a kernel text address, such as a NULL pointer, it is not recognized as an exception frame and the register set is not displayed. (anderson@redhat.com)

  • 2018-07-11 Dave Anderson The existing "list" command uses a hash table to detect duplicate items as it traverses the list. The hash table approach has worked well for many years. However, with increasing memory sizes and list sizes, the overhead of the hash table can be substantial, often leading to commands running for a very long time. For large lists, we have found that the existing hash based approach may slow the system to a crawl and possibly never complete. You can turn off the hash with "set hash off" but then there is no loop detection; in that case, loop detection must be done manually after dumping the list to disk or some other method. This patch is an implementation of the cycle detection algorithm from R. P. Brent as an alternative algorithm for the "list" command. The algorithm both avoids the overhead of the hash table and yet is able to detect a loop. In addition, further loop characteristics are printed, such as the distance to the start of the loop as well as the loop length. An excellent description of the algorithm can be found here on the crash-utility mailing list:

  • 2018-07-10 Dave Anderson Third phase of support for x86_64 5-level page tables in Linux 4.17 and later kernels. With this patch, the usage of 5-level page tables is automatically detected on live systems and when running against vmcores that contain the new "NUMBER(pgtable_l5_enabled)" VMCOREINFO entry. Without the patch, the "--machdep vm=5level" command line option is required. (douly.fnst@cn.fujitsu.com, anderson@redhat.com)

  • 2018-07-06 Dave Anderson Support for the "bpf" command on RHEL 3.10.0-913.el7 and later 3.10-based RHEL7 kernels, which contain a backport of the upstream eBPF code, but still use the older, pre-4.11, IDR facility that does not use radix trees for linking the active bpf_prog and bpf_map structures. Without the patch, the command indicates "bpf: command not supported or applicable on this architecture or kernel". (anderson@redhat.com)

  • 2018-06-26 Dave Anderson Update for the "kmem -V" option to also dump the global entries that are contained in the "vm_numa_stat" array that was introduced in Linux 4.14. Also, the command output separates the "vm_zone_stat", "vm_node_stat" and "vm_numa_stat" entries into separate sections with "VM_ZONE_STAT", "VM_NODE_STAT" and "VM_NUMA_STAT" headers. Without the patch, the "vm_zone_stat" and "vm_node_stat" entries are listed together under a "VM_STAT" header. (anderson@redhat.com)

  • 2018-06-22 Dave Anderson Fix for the failure of several "kmem" command options, most notably seen if the command is piped directly into a crash session, or if the command is contained in an input file. For examples: $ echo "kmem -i" | crash ... $ crash -i <input-file> ... Without the patch, the kmem command may fail with the error message "<segmentation violation in gdb>". While the bug is due to a buffer overflow that has always existed, it only is triggered by certain kernel configurations. (anderson@redhat.com)

  • 2018-06-20 Dave Anderson Fix for the x86_64 "bt" command in Linux 4.16 and later kernels containing commit 3aa99fc3e708b9cd9b4cfe2df0b7a66cf293e3cf, titled "x86/entry/64: Remove 'interrupt' macro". Without the patch, the exception frame display generated by an interrupt exception will show incorrect contents, and be followed by the message "bt: WARNING: possibly bogus exception frame". (anderson@redhat.com)

  • 2018-06-20 Dave Anderson Fix for the x86_64 "bt" command in which a legitimate exception frame is appended with the message "bt: WARNING: possibly bogus exception frame". This only happens in KASLR-enabled kernels when the text address that was executing when the exception occurred is marked as a "weak" symbol (type "W") instead of a text symbol (type "T" or "t"). As a result, the exception frame's RIP is not recognized as a text symbol, and the warning message is displayed. (anderson@redhat.com)

  • 2018-06-19 Dave Anderson Fix for PPC64 kernel virtual address translation in Linux 4.17 and later kernels with commit c2b4d8b7417a59b7f9a52d0d8402f5257cbbd398, titled "powerpc/mm/hash64: Increase the VA range", in which the maximum virtual address value has been increased to 4PB. Without the patch, the translation/access of high vmalloc space addresses fails; for example, the "kmem -[sS]" option fails the translation of per-cpu kmem_cache_cpu addresses located in vmalloc space, with the error messages "kmem: invalid kernel virtual address: <address> type: kmem_cache_cpu.freelist" and "kmem: invalid kernel virtual address: <address> type: kmem_cache_cpu.page", and the "vtop" command shows the addresses as "(not mapped)". (hbathini@linux.ibm.com)

  • 2018-06-11 Dave Anderson Fix for the ppc64/ppc64le "bt" command on Linux 4.7 and later kernels that contain commit d8bff643d81a58181356c0aa3ab771ac10da6894, titled "[x86] asm: Make sure verify_cpu() has a good stack", which inadvertently breaks the ppc64/ppc64le kernel stack size calculation when running with crash-7.2.2 or later. Without the patch, "bt" may fail with a filtered kdump dumpfile with the two error messages "bt: page excluded: kernel virtual address: <address> type: stack contents" and "bt: read of stack at <address> failed". (anderson@redhat.com)

  • 2018-06-08 Dave Anderson If the default live memory source /dev/mem is determined to be unusable because the kernel was configured with CONFIG_STRICT_DEVMEM, the first memory read during session initialization will fail. The current behavior results in a readmem() error message, followed by two notification messages that indicate that /dev/mem is restricted and a switch to using /proc/kcore will be attempted; the readmem is reattempted from /proc/kcore, and if successful, the session will continue initialization. With this patch, the behavior will change such that if the switch to /proc/kcore and the reattempted readmem() are successful, no messages will be displayed unless the crash session is invoked with "crash -d&lt;number>". (anderson@redhat.com)

  • 2018-06-07 Dave Anderson If /proc/kcore gets selected for the live memory source because /dev/mem was configured with CONFIG_STRICT_DEVMEM, its ELF header contents are not displayed by "help -[dD]", and are not displayed when the crash session is invoked with -d<number>". Without the patch, the ELF contents are only displayed in those two situations if "/proc/kcore" is explicitly entered on the crash command line. (anderson@redhat.com)

  • 2018-06-01 Dave Anderson Fix for the "bpf -t" option. Although highly unlikely, without the patch, the target function name of a BPF bytecode call instruction may fail to be resolved correctly. (anderson@redhat.com)

  • 2018-06-01 Dave Anderson Fix to address a "__builtin___snprintf_chk" compiler warning if bpf.c is compiled with -D_FORTIFY_SOURCE=2. (anderson@redhat.com)

  • 2018-06-01 Dave Anderson Update for the recognition of the new x86_64 CPU_ENTRY_AREA virtual address range introduced in Linux 4.15. The memory range exists above the vmemmap range and below the mapped kernel static text/data region, and where all of the x86_64 exception stacks have been moved. Without the patch, reads from the new memory region fail because the address range is not recognized as a legitimate virtual address. Most notable is the failure of "bt" on tasks whose backtraces originate from any of the exception stacks, which fail with the two error messages "bt: seek error: kernel virtual address: <address> type: stack contents" followed by "bt: read of stack at <address> failed". (anderson@redhat.com)

  • 2018-05-31 Dave Anderson Fix for the x86 and x86_64 "mach -m" option on Linux 4.12 and later kernels to account for the structure name changes "e820map" to "e820_table", and "e820entry" to "e820_entry", and for the symbol name change from "e820" to "e820_table". Also updated the display output to properly translate E820_PRAM and E820_RESERVED_KERN entries. Without the patch on all kernels, E820_PRAM and E820_RESERVED_KERN entries show "type 12" and "type 128" respectively. Without the patch on Linux 4.12 and later kernels, the command fails with the error message "mach: cannot resolve e820". (anderson@redhat.com)

  • 2018-05-29 Dave Anderson Fix for the "timer -r" command on Linux 4.10 and later kernels that contain commit 2456e855354415bfaeb7badaa14e11b3e02c8466, titled "ktime: Get rid of the union". Without the patch, the command fails with the error message "timer: invalid structure member offset: ktime_t_sec". (k-hagio@ab.jp.nec.com)

  • 2018-05-29 Dave Anderson Mark start of 7.2.4 development phase with version 7.2.3++

7.2.3

  • 2018-05-17 Dave Anderson crash-7.2.2 -> crash-7.2.3

  • 2018-05-17 Dave Anderson Fix for a third, highly unlikely, crash-7.2.2 buffer overrun regression, that could potentially occur during session initialization. (anderson@redhat.com)

  • 2018-05-17 Dave Anderson 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. (anderson@redhat.com)

  • 2018-05-17 Dave Anderson Fix for a crash-7.2.2 regression that may cause the "mount" command to generate a segmentation violation. The bug is dependant 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 varibles. (anderson@redhat.com)

  • 2018-05-17 Dave Anderson Mark start of 7.2.3 development phase with version 7.2.2++

7.2.2

  • 2018-05-16 Dave Anderson crash-7.2.1 -> crash-7.2.2

  • 2018-05-15 Dave Anderson 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". (anderson@redhat.com)

  • 2018-05-11 Dave Anderson Fix for 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. (anderson@redhat.com)

  • 2018-05-08 Dave Anderson Trivial formatting fix to "bpf" help page. (anderson@redhat.com)

  • 2018-05-08 Dave Anderson 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. (anderson@redhat.com)

  • 2018-05-08 Dave Anderson Fix for a compilation error of the new "bpf.c" file when building on older host systems where CLOCK_BOOTTIME does not exist. (anderson@redhat.com)

  • 2018-05-07 Dave Anderson 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. (anderson@redhat.com)

  • 2018-04-30 Dave Anderson 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" (anderson@redhat.com)

  • 2018-04-26 Dave Anderson 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". (anderson@redhat.com)

  • 2018-04-25 Dave Anderson 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 (4.16.0) version of /proc/kcore does not work correctly for ARM64, because PT_LOAD segments for unity-mapped blocks of physical memory are not generated. (anderson@redhat.com)

  • 2018-04-24 Dave Anderson 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. (anderson@redhat.com)

  • 2018-04-23 Dave Anderson 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'" (anderson@redhat.com)

  • 2018-04-20 Dave Anderson 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!". (k-hagio@ab.jp.nec.com)

  • 2018-04-20 Dave Anderson 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. (anderson@redhat.com)

  • 2018-04-19 Dave Anderson 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. (anderson@redhat.com)

  • 2018-04-18 Dave Anderson Display a fatal error message if the "tree -l" option is attempted with radix trees. Without the patch, the option would be silently ignored. (neelx@redhat.com)

  • 2018-04-17 Dave Anderson 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. (neelx@redhat.com)

  • 2018-04-16 Dave Anderson 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. (k-hagio@ab.jp.nec.com)

  • 2018-04-10 Dave Anderson 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 45 minutes to less then 40 seconds. (gthelen@google.com)

  • 2018-04-05 Dave Anderson 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. (anderson@redhat.com)

  • 2018-04-05 Dave Anderson 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. (anderson@redhat.com)

  • 2018-04-05 Dave Anderson 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>". (efault@gmx.de)

  • 2018-03-29 Dave Anderson 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. (slp@redhat.com)

  • 2018-03-26 Dave Anderson 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. (slp@redhat.com)

  • 2018-03-22 Dave Anderson Fix the "help foreach" argument list to include the new "gleader" task qualifier option that was added in version 7.1.2. (anderson@redhat.com)

  • 2018-03-14 Dave Anderson 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. (anderson@redhat.com)

  • 2018-03-06 Dave Anderson 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. (k-hagio@ab.jp.nec.com)

  • 2018-03-02 Dave Anderson 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. (anderson@redhat.com)

  • 2018-03-01 Dave Anderson Implemented a new "ps -A" option that restricts the task output to just the active tasks on each cpu. (atomlin@redhat.com)

  • 2018-02-28 Dave Anderson 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". (bhsharma@redhat.com, anderson@redhat.com)

  • 2018-02-15 Dave Anderson 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 (takahiro.akashi@linaro.org)

  • 2018-02-15 Dave Anderson Mark start of 7.2.2 development phase with version 7.2.1++

7.2.1

  • 2018-02-13 Dave Anderson crash-7.2.0 -> crash-7.2.1

  • 2018-02-09 Dave Anderson 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]". (anderson@redhat.com)

  • 2018-02-09 Dave Anderson 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. (anderson@redhat.com)

  • 2018-02-08 Dave Anderson 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(). (anderson@redhat.com)

  • 2018-02-02 Dave Anderson 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" (npajkovsky@suse.cz)

  • 2018-02-02 Dave Anderson Add a new "foreach gleader" qualifier option, restricting the output to user-space tasks that are thread group leaders. (Jan.Karlsson@sony.com)

  • 2018-02-02 Dave Anderson 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. (ptesarik@suse.com)

  • 2018-01-30 Dave Anderson 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". (douly.fnst@cn.fujitsu.com)

  • 2018-01-26 Dave Anderson 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. (indou.takao@jp.fujitsu.com)

  • 2018-01-25 Dave Anderson 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. (anderson@redhat.com)

  • 2018-01-25 Dave Anderson 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. (anderson@redhat.com)

  • 2018-01-23 Dave Anderson 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". (anderson@redhat.com)

  • 2018-01-19 Dave Anderson 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. (anderson@redhat.com)

  • 2018-01-10 Dave Anderson 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". (anderson@redhat.com)

  • 2018-01-04 Dave Anderson 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. (douly.fnst@cn.fujitsu.com)

  • 2018-01-02 Dave Anderson Update the X86_64 VSYSCALL_END address to reflect that it only contains 1 page. (douly.fnst@cn.fujitsu.com)

  • 2018-01-02 Dave Anderson Update the starting virtual address of vmalloc space for kernels configured with CONFIG_X86_5LEVEL. (douly.fnst@cn.fujitsu.com)

  • 2017-12-13 Dave Anderson 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. (hbathini@linux.vnet.ibm.com)

  • 2017-11-29 Dave Anderson 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. (anderson@redhat.com)

  • 2017-11-28 Dave Anderson 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. (k-hagio@ab.jp.nec.com)

  • 2017-11-28 Dave Anderson 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". (anderson@redhat.com)

  • 2017-11-09 Dave Anderson Implemented a new "runq -T" option that displays the time lag of each CPU relative to the most recent runqueue timestamp. (oleksandr@redhat.com)

  • 2017-11-09 Dave Anderson Update for support of Linux 4.14 and later PPC64 kernels where the hash page table geometry accomodates 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. (hbathini@linux.vnet.ibm.com)

  • 2017-11-08 Dave Anderson 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. (anderson@redhat.com)

  • 2017-11-06 Dave Anderson 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. (oleksandr@redhat.com)

  • 2017-11-06 Dave Anderson 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. (vinayakm.list@gmail.com)

  • 2017-11-06 Dave Anderson 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. (vinayakm.list@gmail.com)

  • 2017-11-03 Dave Anderson 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. (vinayakm.list@gmail.com)

  • 2017-10-30 Dave Anderson 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. (oleksandr@redhat.com)

  • 2017-10-30 Dave Anderson 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. (oleksandr@redhat.com)

  • 2017-10-30 Dave Anderson Removed a check for a negative block_size value which is always a non-negative unsigned value in the SADUMP header parsing function. (oleksandr@redhat.com)

  • 2017-10-30 Dave Anderson 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. (oleksandr@redhat.com, anderson@redhat.com)

  • 2017-10-27 Dave Anderson Fix for the validation of the bits located in the least signficant 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. (oleksandr@redhat.com, anderson@redhat.com)

  • 2017-10-26 Dave Anderson 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>". (anderson@redhat.com)

  • 2017-10-25 Dave Anderson 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. (oleksandr@redhat.com)

  • 2017-10-23 Dave Anderson 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. (indou.takao@jp.fujitsu.com)

  • 2017-10-20 Dave Anderson Removal of the ARM64 "bt -o" option for Linux 4.14 and later kernels, along with several cleanups/readability improvements. (takahiro.akashi@linaro.org)

  • 2017-10-17 Dave Anderson 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. (atomlin@redhat.com)

  • 2017-10-17 Dave Anderson 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. (takahiro.akashi@linaro.org)

  • 2017-10-11 Dave Anderson 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. (anderson@redhat.com)

  • 2017-10-11 Dave Anderson 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". (anderson@redhat.com)

  • 2017-10-11 Dave Anderson Mark start of 7.2.1 development phase with version 7.2.0++

7.2.0

  • 2017-09-29 Dave Anderson crash-7.1.9 -> crash-7.2.0

  • 2017-09-28 Dave Anderson 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!". (anderson@redhat.com)

  • 2017-09-28 Dave Anderson 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. (anderson@redhat.com)

  • 2017-09-27 Dave Anderson 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". (anderson@redhat.com)

  • 2017-09-26 Dave Anderson 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. (anderson@redhat.com)

  • 2017-09-22 Dave Anderson 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. (anderson@redhat.com)

  • 2017-08-31 Dave Anderson 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)

  • 2017-08-30 Dave Anderson 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. (anderson@redhat.com)

  • 2017-08-24 Dave Anderson 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. (hbathini@linux.vnet.ibm.com)

  • 2017-08-15 Dave Anderson 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:

  • 2017-08-08 Dave Anderson 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. (holzheu@linux.vnet.ibm.com)

  • 2017-08-08 Dave Anderson Enhancement to the S390X "vtop" command to display page table walk information, adding output showing the following page table contents:

  • 2017-07-19 Dave Anderson 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. (anderson@redhat.com)

  • 2017-07-10 Dave Anderson 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. (bwiedemann@suse.de)

  • 2017-07-06 Dave Anderson 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". (anderson@redhat.com)

  • 2017-06-28 Dave Anderson 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. (sargun@sargun.me, anderson@redhat.com)

  • 2017-06-23 Dave Anderson 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. (anderson@redhat.com)

  • 2017-06-13 Dave Anderson 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. (anderson@redhat.com)

  • 2017-06-08 Dave Anderson 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. (anderson@redhat.com)

  • 2017-06-02 Dave Anderson 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. (anderson@redhat.com)

  • 2017-05-24 Dave Anderson 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. (honglei.wang@oracle com)

  • 2017-05-15 Dave Anderson Update Red Hat copyright to 2017 on initial banner. (anderson@redhat.com)

  • 2017-05-11 Dave Anderson 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)". (zaslonko@linux.vnet.ibm.com)

  • 2017-05-04 Dave Anderson 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'". (dengke.du@windriver.com)

  • 2017-05-03 Dave Anderson Fix for the PPC64 "pte" command. Without the patch, if the target PTE references a present page, the physical address is incorrect. (anderson@redhat.com)

  • 2017-05-02 Dave Anderson 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 negative decimal number, the crash session fails during session intialization with a "page excluded" or "seek error" when reading "page_offset_base". (anderson@redhat.com)

  • 2017-05-02 Dave Anderson 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. (anderson@redhat.com)

  • 2017-05-01 Dave Anderson 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." (anderson@redhat.com)

  • 2017-05-01 Dave Anderson Fix for the "snap.so" extension module to pass the KASLR relocation offset value in the dumpfile header for 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!". (anderson@redhat.com)

  • 2017-05-01 Dave Anderson Mark start of 7.2.0 development phase with version 7.1.9++

7.1.9

  • 2017-04-20 Dave Anderson crash-7.1.8 -> crash-7.1.9

  • 2017-04-19 Dave Anderson 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. (zhizhouzhang@asrmicro.com)

  • 2017-04-15 Dave Anderson 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". (anderson@redhat.com)

  • 2017-04-15 Dave Anderson 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". (feij.fnst@cn.fujitsu.com)

  • 2017-04-10 Dave Anderson 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. (anderson@redhat.com)

  • 2017-04-07 Dave Anderson 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. (anderson@redhat.com)

  • 2017-04-06 Dave Anderson 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. (anderson@redhat.com)

  • 2017-04-06 Dave Anderson 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. (atomlin@redhat.com)

  • 2017-03-31 Dave Anderson 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. (rabin.vincent@axis.com)

  • 2017-03-28 Dave Anderson 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'". (anderson@redhat.com)

  • 2017-03-24 Dave Anderson Optimization of the "kmem -f <address>" and "kmem <address>" options to signficantly 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. (anderson@redhat.com)

  • 2017-03-20 Dave Anderson 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. (liyueyi@live.com)

  • 2017-03-17 Dave Anderson 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. (anderson@redhat.com)

  • 2017-03-15 Dave Anderson 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. (d.hatayama@jp.fujitsu.com)

  • 2017-03-09 Dave Anderson Linux 4.10 commit 401721ecd1dcb0a428aa5d6832ee05ffbdbffbbe finally exports the x86_64 "phys_base" value in the VMCOREINFO note, so utilize it whenever it exists. (anderson@redhat.com)

  • 2017-03-07 Dave Anderson 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. (anderson@redhat.com)

  • 2017-03-06 Dave Anderson 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. (ankit@linux.vnet.ibm.com)

  • 2017-03-03 Dave Anderson 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. (anderson@redhat.com)

  • 2017-03-03 Dave Anderson Mark start of 7.1.9 development with version 7.1.8++

7.1.8

  • 2017-02-22 Dave Anderson crash-7.1.7 -> crash-7.1.8

  • 2017-02-21 Dave Anderson Removed -Werror from the bfd and opcode library builds. (anderson@redhat.com)

  • 2017-02-17 Dave Anderson Allow the "--kaslr=<offset>" and/or "--kaslr=auto" command line options to be used with the 32-bit X86 architecture. (anderson@redhat.com)

  • 2017-02-17 Dave Anderson 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. (hirofumi@mail.parknet.co.jp)

  • 2017-02-16 Dave Anderson 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. (anderson@redhat.com)

  • 2017-02-15 Dave Anderson 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. (hirofumi@mail.parknet.co.jp, anderson@redhat.com)

  • 2017-02-15 Dave Anderson 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". (anderson@redhat.com)

  • 2017-02-15 Dave Anderson 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. (anderson@redhat.com)

  • 2017-02-14 Dave Anderson 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:

  • 2017-02-14 Dave Anderson 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. (anderson@redhat.com)

  • 2017-02-14 Dave Anderson 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". (anderson@redhat.com)

  • 2017-02-14 Dave Anderson Introduction of a new PPC64-only "mach -o" option that dumps the OPAL "Open Power Abstraction Layer" console buffer. (ankit@linux.vnet.ibm.com)

  • 2017-02-10 Dave Anderson 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. (anderson@redhat.com)

  • 2017-02-07 Dave Anderson 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. (shane.seymour@hpe.com)

  • 2017-02-07 Dave Anderson Clarification in the display of CONFIG_SLUB object addresses that are displayed by the "kmem" command when SLAB_RED_ZONE has been enabled in Linux 4.6 and later kernels. 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. (hirofumi@mail.parknet.co.jp, anderson@redhat.com)

  • 2017-02-07 Dave Anderson 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. (rabinv@axix.com)

  • 2017-02-02 Dave Anderson 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". (hirofumi@mail.parknet.co.jp)

  • 2017-02-01 Dave Anderson Fix the bracketing of the x86_64 FILL_PML4() macro. (anderson@redhat.com)

  • 2017-01-31 Dave Anderson 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. (anderson@redhat.com)

  • 2017-01-24 Dave Anderson 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. (hbathini@linux.vnet.ibm.com)

  • 2017-01-19 Dave Anderson 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). (anderson@redhat.com)

  • 2017-01-17 Dave Anderson 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". (anderson@redhat.com)

  • 2017-01-17 Dave Anderson 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. (anderson@redhat.com)

  • 2017-01-13 Dave Anderson 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". (anderson@redhat.com)

  • 2017-01-05 Dave Anderson 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". (panand@redhat.com)

  • 2017-01-05 Dave Anderson 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. (takahiro.akashi@linaro.org)

  • 2017-01-03 Dave Anderson For ARM64 dumpfiles with VMCOREINFO, verify the new "VA_BITS" number against the calculated number. (anderson@redhat.com)

  • 2016-12-05 Dave Anderson 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". (rabinv@axis.com)

  • 2016-12-05 Dave Anderson 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 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. (rabinv@axis.com)

  • 2016-12-05 Dave Anderson 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". (rabinv@axis.com)

  • 2016-12-02 Dave Anderson 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. (thgarnie@google.com)

  • 2016-12-02 Dave Anderson Mark start of 7.1.8 development with version 7.1.7++

7.1.7

  • 2016-11-30 Dave Anderson crash-7.1.6 -> crash-7.1.7

  • 2016-11-22 Dave Anderson 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(). (anderson@redhat.com)

  • 2016-11-21 Dave Anderson 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. (anderson@redhat.com)

  • 2016-11-10 Dave Anderson Fix for the s390x "bt" command for active tasks. Since commit c9f932440bd06f0 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. (holzheu@linux.vnet.ibm.com)

  • 2016-11-09 Dave Anderson 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. (kyle.a.tomsic@gmail.com)

  • 2016-10-27 Dave Anderson 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". (anderson@redhat.com)

  • 2016-10-27 Dave Anderson 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!". (anderson@redhat.com)

  • 2016-10-27 Dave Anderson 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. (rabinv@axis.com)

  • 2016-10-25 Dave Anderson Restore the x86_64 "dis" command's symbolic translation of jump or call target addresses if the kernel was configured with CONFIG_RANDOMIZE_BASE. (anderson@redhat.com)

  • 2016-10-25 Dave Anderson 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. (anderson@redhat.com)

  • 2016-10-21 Dave Anderson 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. (anderson@redhat.com)

  • 2016-10-21 Dave Anderson Fix for Linux commit 0100301bfdf56a2a370c7157b5ab0fbf9313e1cd, which rewrote the X86_64 switch_to() code by embedding the __switch_to() call 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". (anderson@redhat.com)

  • 2016-10-20 Dave Anderson Add support for "help -r" on 32-bit MIPS to display the registers for each CPU from a dumpfile. (rabinv@axis.com)

  • 2016-10-20 Dave Anderson 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. (rabinv@axis.com)

  • 2016-10-20 Dave Anderson 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". (anderson@redhat.com)

  • 2016-10-19 Dave Anderson Enable SPARSEMEM support on 32-bit MIPS by setting SECTION_SIZE_BITS and MAX_PHYSMEM_BITS. (rabinv@axis.com)

  • 2016-10-19 Dave Anderson 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. (rabinv@axis.com)

  • 2016-10-19 Dave Anderson Mark start of 7.1.7 development with version 7.1.6++

7.1.6

  • 2016-10-13 Dave Anderson crash-7.1.5 -> crash-7.1.6

  • 2016-10-12 Dave Anderson 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. (m.mizuma@jp.fujitsu.com)

  • 2016-10-11 Dave Anderson 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>". (takahiro.akashi@linaro.org)

  • 2016-10-04 Dave Anderson 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". (takahiro.akashi@linaro.org)

  • 2016-09-30 Dave Anderson 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. (atomlin@redhat.com)

  • 2016-09-29 Dave Anderson 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. (rabinv@axis.com)

  • 2016-09-27 Dave Anderson 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. (anderson@redhat.com)

  • 2016-09-27 Dave Anderson 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. (hbathini@linux.vnet.ibm.com)

  • 2016-09-26 Dave Anderson 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>)" (anderson@redhat.com)

  • 2016-09-23 Dave Anderson 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:

  • 2016-09-22 Dave Anderson 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. (anderson@redhat.com)

  • 2016-09-21 Dave Anderson 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. (anderson@redhat.com)

  • 2016-09-07 Dave Anderson 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. (Alexandr_Terekhov@epam.com)

  • 2016-08-26 Dave Anderson 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. (anderson@redhat.com)

  • 2016-08-25 Dave Anderson 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. (Alexandr_Terekhov@epam.com)

  • 2016-08-17 Dave Anderson 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. (jsiddle@redhat.com)

  • 2016-08-16 Dave Anderson 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. (sebastien.piechurski@bull.net)

  • 2016-07-20 Dave Anderson 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. (anderson@redhat.com)

  • 2016-07-20 Dave Anderson 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 value is used. (anderson@redhat.com)

  • 2016-07-14 Dave Anderson 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". (anderson@redhat.com)

  • 2016-07-14 Dave Anderson 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". (anderson@redhat.com)

  • 2016-07-13 Dave Anderson 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)". (takahiro.akashi@linaro.org, anderson@redhat.com)

  • 2016-07-13 Dave Anderson 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. (namhyung@gmail.com)

  • 2016-06-30 Dave Anderson Fix for the "bt -[eE]" options on ARM64 to recognize kernel exception frames in VHE enabled systems, in which the kernel runs in EL2. (takahiro.akashi@linaro.org)

  • 2016-06-28 Dave Anderson 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. (anderson@redhat.com)

  • 2016-06-22 Dave Anderson 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. (anderson@redhat.com)

  • 2016-06-21 Dave Anderson 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>". (anderson@redhat.com)

  • 2016-06-17 Dave Anderson 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. (anderson@redhat.com)

  • 2016-06-15 Dave Anderson 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. (takahiro.akashi@linaro.org)

  • 2016-06-15 Dave Anderson 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. (anderson@redhat.com)

  • 2016-06-14 Dave Anderson 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:

  • 2016-06-07 Dave Anderson Introduction of ARM64 support for 4K pages with 4-level page tables and 48 VA bits. (takahiro.akashi@linaro.org)

  • 2016-06-07 Dave Anderson 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. (anderson@redhat.com)

  • 2016-06-07 Dave Anderson 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. (anderson@redhat.com)

  • 2016-05-26 Dave Anderson 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 &lt;address>". The pstate register warning will still be displayed (as it is essentially a kdump bug), but the backtrace will proceed normally. (anderson@redhat.com)

  • 2016-05-23 Dave Anderson 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". (anderson@redhat.com)

  • 2016-05-19 Dave Anderson 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. (andrej.skvortzov@gmail.com)

  • 2016-05-16 Dave Anderson 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. (pagupta@redhat.com)

  • 2016-05-05 Dave Anderson 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. (anderson@redhat.com)

  • 2016-05-04 Dave Anderson Added support for x86_64 ramdump files. Without the patch, the crash session fails immediately with the message "ramdump: unsupported machine type: X86_64". (anderson@redhat.com)

  • 2016-05-04 Dave Anderson 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". (hirofumi@mail.parknet.co.jp)

  • 2016-05-04 Dave Anderson 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:

  • 2016-05-04 Dave Anderson Mark start of 7.1.6 development with version 7.1.5++

7.1.5

  • 2016-04-27 Dave Anderson crash-7.1.4 -> crash-7.1.5

  • 2016-04-27 Dave Anderson Account for the Linux 3.17 increase of the ARM64 MAX_PHYSMEM_BITS definition from 40 to 48. (Johan.Erlandsson.sonymobile.com)

  • 2016-04-26 Dave Anderson Introduction of support for the 64-bit SPARC V9 architecture. This version supports running against a live kernel. Compressed kdump support is also here, but the crash dump support for the kernel, kexec-tools, and makedumpfile is still pending. Initial work was done by Karl Volz with help from Bob Picco. (dave.kleikamp@oracle.com)

  • 2016-04-25 Dave Anderson When reading a task's task_struct.flags field, check for its size, which was changed from an unsigned long to an unsigned int. (dave.kleikamp@oracle.com)

  • 2016-04-25 Dave Anderson Fix for the x86_64 "vm -p" command to properly emulate the kernel's pte_present() function, which checks for either _PAGE_PRESENT or _PAGE_PROTNONE to be set. Without the patch, user pages whose PTE does not have _PAGE_PRESENT bit set are misconstrued as SWAP pages with an "(unknown swap location") along with a bogus OFFSET value. (anderson@redhat.com)

  • 2016-04-22 Dave Anderson Fix for the "vm -p" and "vtop <user virtual address>" commands if a user page is swapped out. Without the patch, the "/dev" component of the swap file pathname may be missing from its display. (anderson@redhat.com)

  • 2016-04-22 Dave Anderson Introduction of ARM64 support for 64K pages with 3-level page tables and 48 VA bits. Until now, support has only existed for 64K pages with 2-level page tables, and 4K pages with 3-level page tables. (jim.hull@hpe.com)

  • 2016-04-22 Dave Anderson Fix for the "vm -p" option on kernels that are not configured with CONFIG_SWAP. Without the patch, the command may fail prematurely with the message "nr_swapfiles doesn't exist in this kernel". (rabinv@axis.com)

  • 2016-04-21 Dave Anderson Fix for "kmem -[sS]" options for kernels configured with CONFIG_SLUB. Without the patch, if a freelist pointer is corrupt, the address of the slab page being referenced may not be displayed by the error message, showing something like: "kmem: kmalloc-32: slab: 0 invalid freepointer: 6e652f323a302d74". (hirofumi@mail.parknet.co.jp)

  • 2016-04-21 Dave Anderson Fix for "kmem -[sS]" options for kernels configured with CONFIG_SLUB. Without the patch, the count displayed in the ALLOCATED column may be too large, and the "kmem -S" display of allocated/free status of individual objects may be incorrect. (hirofumi@mail.parknet.co.jp)

  • 2016-04-21 Dave Anderson Include sys/macros.h explicitly in filesys.c for the definitions of major(), minor() and makedev(). These functions are defined in the sys/sysmacros.h header, not sys/types.h. Linux C libraries are updating to drop the implicit include, so we need to include it explicitly. (vapier@gentoo.org)

  • 2016-04-21 Dave Anderson Apply a fuzz factor of zero to the re-application of a modified version of the gdb-7.6.patch in a pre-existing build directory. Without the patch, it is possible that a previously-applied patch could be applied a second time without the fuzz restriction. (anderson@redhat.com)

  • 2016-04-15 Dave Anderson Introduction of the "whatis -r" and "whatis -m" options. The -r option searches for data structures of a specified size or within a range of specified sizes. The -m option searches for data structures that contain a member of a given type. If a structure contains another structure, the members of the embedded structure will also be subject to the search. The type string may be a substring of the data type name. The output displays the size and name of the data structure. (Alexandr_Terekhov@epam.com, anderson@redhat.com)

  • 2016-04-13 Dave Anderson Fixes to address two gcc-4.1.2 compiler warnings introduced by the previous patch: memory.c: In function ‘count_cpu_partial’: memory.c:17958: warning: comparison is always false due to limited range of data type memory.c: In function ‘count_partial’: memory.c:18729: warning: comparison is always false due to limited range of data type (anderson@redhat.com)

  • 2016-04-12 Dave Anderson Improvement of the accuracy of the allocated objects count for each kmem_cache shown by "kmem -s" in kernels configured with CONFIG_SLUB. Without the patch, the values under the ALLOCATED column may be too large because cached per-cpu objects are counted as allocated. (vinayakm.list@gmail.com)

  • 2016-04-08 Dave Anderson Fix for the "irq -s" option for Linux 4.2 and later kernels. Without the patch, the irq_chip.name string (e.g. "IO-APIC", "PCI-MSI", etc.) is missing from the display. (rabin.vincent@axis.com)

  • 2016-03-31 Dave Anderson Fix for the "dis <function | address>" option if the function or address is the highest text symbol value in a kernel module. Without the patch, the disassembly may continue past the end of the function, or may show nothing at all. The patch utilizes in-kernel kallsyms symbol size information instead of disassembling until reaching the address of the next symbol in the module. (anderson@redhat.com)

  • 2016-03-01 Dave Anderson Put 2016 copyright in initial banner.

  • 2016-02-12 Dave Anderson Fix for the changes made to the kernel module structure introduced by this kernel commit for Linux 4.5 and later kernels:

  • 2016-02-12 Dave Anderson Further fix for the replacements made to the kernel's cpu_online_mask, cpu_possible_mask, cpu_present_mask and cpu_active_mask symbols in the kernel commit for 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:

  • 2016-02-10 Dave Anderson 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:

  • 2016-02-10 Dave Anderson Implement support for per-cpu IRQ stacks on the ARM64 architecture, which were introduced in Linux 4.5 by this commit:

  • 2016-02-03 Dave Anderson Configure the embedded gdb module with "--disable-sim" in order to bypass the unnecessary build of the libsim.a library. (anderson@redhat.com)

  • 2016-02-03 Dave Anderson Fix for a "[-Werror=unused-const-variable]" compiler warning that is generated by "gdb-7.6/opcodes/mips-dis.c" when building with "make target=MIPS" on an x86_64 host with gcc-6.0.0. Without the patch, the warning is treated as an error and the build is aborted. (anderson@redhat.com)

  • 2016-02-02 Dave Anderson Fix for a series of "[-Werror=shift-negative-value]" compiler warnings that are generated by "gdb-7.6/bfd/elf64-ppc.c" and "gdb-7.6/opcodes/ppc-opc.c" when building with "make target=PPC64" on an x86_64 host with gcc-6.0.0. Without the patch, the warnings are treated as errors and the build is aborted. (anderson@redhat.com)

  • 2016-02-02 Dave Anderson Fix for a "[-Werror=shift-negative-value]" compiler warning that is generated by "gdb-7.6/opcodes/arm-dis.c" when building crash with "make target=ARM64" on an x86_64 host with gcc-6.0.0. Without the patch, the warning is treated as an error and the build is aborted. (anderson@redhat.com)

  • 2016-02-02 Dave Anderson 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:

  • 2016-02-01 Dave Anderson 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:

  • 2016-01-26 Dave Anderson The crash utility has not supported Xen dom0 and domU dumpfiles since since this Linux 3.19 commit:

  • 2016-01-20 Dave Anderson Fix for the changes made to the kernel module structure introduced by this kernel commit for Linux 4.5 and later kernels:

  • 2016-01-11 Dave Anderson Fix for the "ps -t" option in 3.17 and later kernels that contain commit ccbf62d8a284cf181ac28c8e8407dd077d90dd4b, which changed the task_struct.start_time member from a struct timespec to a u64. Without the patch, the "RUN TIME" value is nonsensical. (anderson@redhat.com)

  • 2016-01-05 Dave Anderson Fix for the "bt" command to properly pull the stack and frame pointer registers from the NT_PRSTATUS notes of 32-bit tasks running in user-mode on ARM64. Without the patch, the "bt" command utilizes ptregs->sp and ptregs->regs[29] for 32-bit tasks instead of the architecturally-mapped ptregs->regs[13] and ptregs->regs[11], which yields unpredictable/invalid results, and possibly a segmentation violation. (drjones@redhat.com)

  • 2016-01-04 Dave Anderson Make the "zero excluded" mode default behavior when analyzing SADUMP dumpfiles because some Fujitsu troubleshooting software assumes the behavior. Also, fix the "set -v" option to show the "zero_excluded" internal variable as "on" if it has been set when analyzing SADUMP dumpfiles. (d.hatayama@jp.fujitsu.com)

  • 2016-01-04 Dave Anderson Fix for the translation of X86_64 virtual addresses in the vsyscall region between 0xffffffffff600000 and 0xffffffffffe00000. Without the patch, the reading of addresses in that region returns invalid data; in addition, the "vtop" command for an address in that region shows an invalid physical address under the "PHYSICAL" column. (nakajima.akira@nttcom.co.jp, anderson@redhat.com)

  • 2015-12-18 Dave Anderson Fix for the handling of Xen DomU ELF dumpfiles to prevent the pre-gathering of p2m frames during session initialization, which is unnecessary since ELF files contain the mapping information in their ".xen_p2m" section. Without the patch, it is possible that the crash session may be unnecessarily aborted if the p2m frame-gathering fails, for example, if the CR3 value in the header is invalid. (ptesarik@suse.com)

7.1.4

  • 2015-12-16 Dave Anderson crash-7.1.3 -> crash-7.1.4

  • 2015-12-14 Dave Anderson Fix for "crash --osrelease" on Xen kernels that have both VMCOREINFO and VMCOREINFO_XEN ELF notes. Without the patch, the command returns "(unknown)". (anderson@redhat.com, dietmar.hahn@ts.fujitsu.com)

  • 2015-12-09 Dave Anderson Introduction of the "sys -i" option, which displays the kernel's DMI identification string data if available. (atomlin@redhat.com, anderson@redhat.com)

  • 2015-12-08 Dave Anderson Added "print_array" as a new internal variable that may be turned on/off with the "set" command. When set to "on", gdb's printing of arrays will be set to "pretty", so that the display of each array element will consume one line. (anderson@redhat.com)

  • 2015-12-03 Dave Anderson Enhanced the debug-only display of the first kernel data items read during session initialization. This includes the system's cpu maps, xtime, and utsname data. These require at least "-d1" as a command line option value, and are primarily useful as an aide for debugging suspect dumpfiles that fail during session initialization. (anderson@redhat.com)

  • 2015-12-02 Dave Anderson Added a new "list -l <offset>" option that can only be used in conjunction with "-s", and requires that the "start" address is the address of a list_head, or other similar list linkage structure whose first member points to the next linkage structure. The "-l <offset>" argument is the offset of the embedded list linkage structure in the specified "-s" data structure; it can be either a number of bytes or expressed in "struct.member" format. (anderson@redhat.com)

  • 2015-12-02 Dave Anderson Fix for 32-bit ARM kernels that are configured with CONFIG_SLAB and contain percpu array_cache structures that were allocated with vmalloc(). Without the patch, during session initialization there will be error messages of the form: "crash: kmem_cache: <vaddr>: invalid array_cache pointer: <vaddr>", and during runtime, the "kmem -[sS]" commands will show kmem_cache lines that marked as "[INVALID/CORRUPTED]". (anderson@redhat.com)

  • 2015-11-30 Dave Anderson Introduced a general-purpose handler to register data structures that the kernel has dynamically downsized from the size indicated by the debuginfo data. At this time, only "kmem_cache" and "task_struct" structures that have been downsized are registered, but others may be added in the future. If a downsized data structure is passed to gdb for display, gdb will request a read of the "full" data structure, which may flow into a memory region that was either filtered by makedumpfile(8), or perhaps into non-existent memory, thereby killing the generating command immediately due to a partial read. With this patch, commands such as "struct" and "task" that reference downsized data structures will have their reads flagged to return successfully if partial read error occurs. (anderson@redhat.com)

  • 2015-11-28 Dave Anderson Map CTRL-l to clear the screen while in vi insertion mode. Without the patch, it displays "^L". (kwalker@redhat.com)

  • 2015-11-25 Dave Anderson The s390 stand-alone dump tools may write the kernel memory directly to a block device. When running the crash utility against such a block device, a misleading warning message such as this is displayed:

  • 2015-11-23 Dave Anderson Update to the previous QEMU-specific patch to handle kdump dumpfiles which have offline cpus, and therefore will not contain associated NT_PRSTATUS notes in the dumpfile header. Without the patch, if there are any offline cpus, a segmentation violation is generated during session initialization. (anderson@redhat.com)

  • 2015-11-23 Dave Anderson Fix for the handling of ARM and ARM64 QEMU-generated ELF dumpfiles and compressed kdump clones. The patch utilizes the NT_PRSTATUS notes in the dumpfile headers instead of reading them from the kernel's "crash_notes", which are not initialized when QEMU generates a dumpfile. Without the patch, these warning messages are displayed during session initialization:

  • 2015-11-20 Dave Anderson Update for the determination of the ARM64 page size for kernels containing this Linux 4.4 commit:

  • 2015-11-20 Dave Anderson Fix for a segmentation violation when attempting to run live on a a system without the crash.ko memory driver, and whose kernel was configured with CONFIG_STRICT_DEVMEM. Without the patch, if any -d<value> is entered on the command line, the crash session fails during initialization. (dmair@suse.com)

  • 2015-11-18 Dave Anderson Fix for the "kmem -s <address>" command in Linux 3.13 and later kernels configured with CONFIG_SLAB. Without the patch, if the address argument is contained within an object in a tail page of a multi-page slab, the command fails with the message "kmem: address is not allocated in slab subsystem: <address>". Furthermore, in Linux 4.4 and later kernels configured with CONFIG_SLAB, addresses that are contained within an object in a tail page of a multi-page slab will not be marked by their slab cache name by the "rd -S" and "bt -F" commands. (anderson@redhat.com)

  • 2015-11-17 Dave Anderson Fix for the handling of dynamically-sized task_struct structures in Linux 4.2 and later kernels, which contain these commits:

  • 2015-11-09 Dave Anderson Fix for the handling of compound pages in Linux 4.4 and later kernels, which contain this kernel commit:

  • 2015-10-29 Dave Anderson Added recognition of the new DUMP_DH_EXCLUDED_VMEMMAP flag in the header of compressed kdumps, which is set by the new -e option to the makedumpfile(8) facility. The -e option excludes kernel pages that contain nothing but kernel page structures for pages that are not being included in the dump. If the bit is set in the dumpfile, the crash utility will issue a warning that the dumpfile is known to be incomplete during initialization, just prior to the system banner display. (anderson@redhat.com)

  • 2015-10-29 Dave Anderson Fix for the "kmem -i" command in Linux 2.6.27 and later kernels to prevent the possibility that an arbitrary address may be accessed when calculating the number of total huge pages. Without the patch, the command's "COMMIT LIMIT" and "COMMITTED" values may be invalid. (atomlin@redhat.com)

  • 2015-10-20 Dave Anderson Fix for the behavior of the --zero_excluded option when used with SADUMP dumpfiles. Without the patch, the behavior of --zero_excluded option is the opposite to what is expected: reads of filtered pages return successfully with zero-filled memory, while reads of filtered filtered pages fail when --zero_excluded option has been specified. (d.hatayama@jp.fujitsu.com)

  • 2015-10-20 Dave Anderson Fix for bitmap-handling in SADUMP dumpfiles, which associate each bit in a bitmap with a physical page in the reverse order that is used in kdump-compressed format. The bug had not been detected for a long time because bitmaps in SADUMP formats consist mostly of 0x00 and 0xff excluding a very limited amount of memory space for firmware. (indou.takao@jp.fujitsu.com, d.hatayama@jp.fujitsu.com)

  • 2015-10-06 Dave Anderson Display a machine-type mismatch warning if a little-endian PPC64 compressed kdump created by makedumpfile(8) is used as an argument with a non-PPC64 crash utility binary. Without the patch, the dumpfile is accepted, and the session subsequently fails with a message indicating that that the vmlinux and dumpfile do not match. (anderson@redhat.com)

  • 2015-10-01 Dave Anderson Since Linux v4.1, specifically, "MIPS: Rearrange PTE bits into fixed positions.", commit be0c37c985eddc46d0d67543898c086f60460e2e, the MIPS PTE bits are at fixed locations. Since they are macros in the kernel, this patch adds an explicit kernel version check in order to determine and set their values. (rabinv@axis.com)

  • 2015-09-25 Dave Anderson For many years, Xen Dom0 dumps could only be saved in ELF format. Since makedumpfile commit 349a0ed1, it is now possible to save Xen dumps in compressed kdump format. This patch set adds support for these files. Two new files, xen_dom0.c and xen_dom0.h, have been added to provide the common functionality required by both ELF and compressed kdump formats. (ptesarik@suse.cz)

  • 2015-09-24 Dave Anderson Fix for the extensions/trace.c extension module for Linux 4.2 and later kernels. Without the patch, the module fails to load, with the message "failed to init the offset, struct:ftrace_event_call, member:list". (anderson@redhat.com)

  • 2015-09-21 Dave Anderson Fix for the "dis" command to support three new x86 instruction extensions that have been added to the Intel instruction set for hardware platforms that support them. The newly-added instructions "clflushopt", "clwb", and "pcommit" prepend 0x66 as a prefix byte to the "clflush", "xsaveopt" and "sfence" instructions respectively. Without the patch:

  • 2015-09-11 Dave Anderson Fix for the X86_64 "bt" command in Linux 4.2 and later kernels that are configured with both CONFIG_HAVE_COPY_THREAD_TLS and CONFIG_FRAME_POINTER. Without the patch, the fact that the kernel was compiled with framepointers is not recognized, which may result in backtraces containing stale frame references. (anderson@redhat.com)

  • 2015-09-08 Dave Anderson Fix for the ARM64 "vtop" command when translating kernel virtual addresses within a 2MB or 512MB huge page in which the PGD or PMD contains software-defined PTE bits. Without the patch, the "PAGE:" address value will show the software-defined bits, the command will not display the related page structure translation, and will end with the message "WARNING: sparsemem: invalid section number: <number>". (Johan.Erlandsson@sonymobile.com, anderson@redhat.com)

7.1.3

  • 2015-09-03 Dave Anderson crash-7.1.2 -> crash-7.1.3

  • 2015-09-01 Dave Anderson Added a new "--src <directory>" command line option for use by the "dis -s" option if the kernel source code is not located in the standard location that is compiled into the kernel's debuginfo data. The directory argument should point to the top-level directory of the kernel source tree. (anderson@redhat.com)

  • 2015-09-01 Dave Anderson Implemented a new "dis -s" option, which displays the filename and line number that is associated with a specified text location, followed by a source code listing if it is available on the host machine. The line associated with the text location will be marked with an asterisk; depending upon gdb's internal "listsize" variable, several lines will precede the marked location. If a "count" argument is entered, it specifies the number of source code lines to be displayed after the marked location; otherwise the remaining source code of the containing function will be displayed. (anderson@redhat.com)

  • 2015-08-25 Dave Anderson Fix for the "timer" command on Linux 4.2 and later kernels, which contain this kernel commit that modifies the tvec_root and tvec data structures:

  • 2015-08-19 Dave Anderson If the method of determining how compound pages are linked cannot be accomplished due to page struct related changes in upstream kernels, issue a WARNING message during session initialization. (anderson@redhat.com)

  • 2015-08-18 Dave Anderson Reduce the unnecessary error messages if a directory is used as a command line argument. Without the patch, six error messages are displayed:

  • 2015-08-14 Dave Anderson Minor cleanup and error handling fix-up for the "dis" command. Without the patch, if the target address of "dis -r" or "dis -f" is not an exact address of an instruction, "dis -r" will continue beyond the target address, and "dis -f" will show nothing. (anderson@redhat.com)

  • 2015-08-14 Dave Anderson Fix for the "dis" command on architectures with variable-length instructions. Without the patch, "dis [-f] <function>" may continue beyond the end of a function, disassembling the memory that is in between the target function and the next function. (anderson@redhat.com)

  • 2015-08-14 Dave Anderson Fix for the S390X "dis" command to prevent jump target addresses from being displayed as kernel system call alias/wrapper names, for example, "SyS_read+<offset>" instead of "sys_read+<offset>". (anderson@redhat.com)

  • 2015-08-13 Dave Anderson Fix for the PPC64 "dis" command to prevent conditional branch target addresses from being displayed as kernel system call alias/wrapper names, for example, "SyS_read+<offset>" instead of "sys_read+<offset>". (anderson@redhat.com)

  • 2015-08-12 Dave Anderson Fix for the ARM64 "dis" command to prevent branch target addresses from being displayed as kernel system call alias/wrapper names, for example, "SyS_read+<offset>" instead of "sys_read+<offset>". (anderson@redhat.com)

  • 2015-08-12 Dave Anderson Introduction of the "dis -f <address>" option, which disassembles from the target address until the end of the function. (atomlin@redhat.com)

  • 2015-08-12 Dave Anderson When searching all kernel stacks for evidence of a panic task in "live" s390x dumpfiles created by the VMDUMP, stand-alone dump, or "virsh dump" facilities, none of which explicitly mark the dumpfile as a "live dump", run a standard "bt" backtrace on each kernel stack instead of the text-address-only "bt -t". Without the patch, an invalid text reference may be found in a task's kernel stack due to the common zero-based user and kernel virtual address space ranges of the s390x, causing the task to be mistakenly set as the "PANIC" task. (holzheu@linux.vnet.ibm.com)

  • 2015-08-11 Dave Anderson Second part of: Do not search for a panic task in s390x dumpfiles that are marked as a "live dump"... The first part prevented a search of the active tasks; this part prevents the last-ditch search of all tasks. (anderson@redhat.com)

  • 2015-08-11 Dave Anderson Mark the "crash" task that generated a snapshot vmcore utilizing the the "snap.so" extension module as "(ACTIVE)" in the STATE field of the initial system banner and the "set" command. Without the patch, the task's STATE field shows it as the "(PANIC)" task. (anderson@redhat.com)

  • 2015-08-10 Dave Anderson Do not search for a panic task in s390x dumpfiles that are marked as a "live dump". Without the patch, an exhaustive, unnecessary, search of all kernel stacks that looks for evidence of a system crash may find an invalid reference in a task's kernel stack due to the common zero-based user and kernel virtual address space ranges of the s390x, causing the task to be mistakenly set as the "PANIC" task. (holzheu@linux.vnet.ibm.com, anderson@redhat.com)

  • 2015-08-05 Dave Anderson Fix for the RSS value displayed by the "ps" command in Linux 2.6.34 and later big-endian machines. Without the patch, a task's RSS value will be erroneously calculated by using twice its file pages instead of adding its file pages with its anonymous pages. (anderson@redhat.com)

  • 2015-08-04 Dave Anderson If a kdump dumpfile is marked as incomplete in its ELF or compressed kdump header, and the user has not used the --zero_excluded command line option, append a note to the incomplete dump WARNING message shown during invocation that suggests the use of --zero_excluded. (zhouwj-fnst@cn.fujitsu.com)

  • 2015-08-03 Dave Anderson Fix for the extensions/trace.c extension module to account for kernels that are not configured with CONFIG_TRACE_MAX_TRACER. Without the patch, the module fails to load with the error message "failed to init the offset, struct: trace_array, member: max_offset". (rabinv@axis.com)

  • 2015-08-03 Dave Anderson Fix for a segmentation violation generated by the ARM64 "bt -[f|F]" options when analyzing the active tasks in vmcores generated by the kdump facility. This bug is a regression that was introduced in crash-7.1.2 by commit 15a58e4070486efa2aa965bdd636626e62b65cc7, which was an enhancement of the ARM64 backtrace capability for active tasks in kdump vmcores. (anderson@redhat.com)

  • 2015-07-17 Dave Anderson Fix for the "kmem -s <address>", "bt -F[F]", and "rd -S[S]" options in kernels configured with CONFIG_SLUB. Without the patch, if a referenced slab object address comes from a slab cache that utilizes a multiple-page slab, and the object is located within a tail page of that slab cache, it will not be recognized as a slab object. The "bt -F[F]" and "rd -S[S]" options will just show the object address, and the "kmem -s <address>" object will indicate "kmem: address is not allocated in slab subsystem: <address>". This bug is a regression that was introduced in crash-7.1.0 by commit 8b2cb365d7fb139e77cedd80d4061332099ed382, which addressed a bug where stale slab object addresses were incorrectly being recognized as valid slab objects. (anderson@redhat.com)

  • 2015-07-14 Dave Anderson Fix for the "crash --osrelease" option for flattened format dumpfiles in the unlikely event that the dumpfile header does not contain the VMCOREINFO note section from the original ELF /proc/vmcore. Without the patch, the command displays nothing instead of showing "unknown". (anderson@redhat.com)

7.1.2

  • 2015-07-13 Dave Anderson crash-7.1.1 -> crash-7.1.2

  • 2015-07-09 Dave Anderson If a symbol or symbol+offset argument is passed to the "dis" command, and there are multiple text symbols with the same symbol name, then display a message indicating that there are "duplicate text symbols found", followed by a list of the symbols. Without the patch, the duplicate symbol with the lowest virtual address is used. (atomlin@redhat.com, anderson@redhat.com)

  • 2015-07-09 Dave Anderson Export the previously static symbol_name_count() function, which returns a count of symbols with the same name. Export a new is_symbol_text() function, which checks whether specified symbol entry is a type 't' or 'T'. (atomlin@redhat.com, anderson@redhat.com)

  • 2015-07-09 Dave Anderson Update the extensions/eppic.mk file to clone the eppic source code from https://github.com/lucchouina/eppic.git. (lucchouina@gmail.com)

  • 2015-07-08 Dave Anderson Fix compiler warning generated by extensions/trace.c when compiled with gcc version 5. Without the patch, the message "warning: the use of 'mktemp' is dangerous, better use 'mkstemp'" is generated. (anderson@redhat.com)

  • 2015-07-06 Dave Anderson If the starting hexadecimal address of a function is passed to the "dis" command without a count argument, disassemble the entire function -- similar to when a symbol name of a function is passed without a count argument. Without the patch, only one instruction is displayed. (atomlin@redhat.com)

  • 2015-07-06 Dave Anderson Force the 32-bit MIPS extensions/eppic.so to be compiled with -m32. This is required when "make extensions" is executed after the top level crash binary has been built with "make TARGET=MIPS" on an x86_64 host. (rabinv@axis.com)

  • 2015-07-03 Dave Anderson Fix for the error handling of the "foreach task -R struct.member" format if an invalid structure and/or member is used as an argument. Without the patch, the command will display the expected error indicating "task: invalid structure member reference", but then will be followed by a stream of "task: recursive temporary file usage" error messages. (anderson@redhat.com)

  • 2015-07-02 Dave Anderson Modified the qualification for the execution of the "runq -g" option. Without the patch, if the target kernel was not configured with both CONFIG_FAIR_GROUP_SCHED and CONFIG_RT_GROUP_SCHED, the command fails with the message "runq: -g option not supported or applicable on this architecture or kernel". With this patch, if the kernel was built with either CONFIG_FAIR_GROUP_SCHED or CONFIG_RT_GROUP_SCHED, the command will execute. (rabinv@axis.com)

  • 2015-07-02 Dave Anderson Implementation of two new "files" command options. The "files -c" option is context-sensitive, similar to the the regular "files" command when used without an argument, but replaces the FILE and DENTRY columns with I_MAPPING and NRPAGES columns that reflect each open file's inode.i_mapping address_space structure address, and the address_space.nrpages count within it; this shows how many of each open file's pages are currently in the system's page cache. The "files -p <inode>" option takes the address of an inode, and dumps all of its pages that are currently in the system's page cache, borrowing the "kmem -p" page structure output. (yangoliver@gmail.com)

  • 2015-07-01 Dave Anderson Commit f95ecdc330a11d3701de859aab59a5ab5954aae6 above to speed up "crash --osrelease" for flattened format dumpfiles inadvertently broke the option for ELF kdump and compressed kdump dumpfiles. (anderson@redhat.com)

  • 2015-07-01 Dave Anderson Fix for the "timer" command when run on a kernel with a large number of cpus. Without the patch, the command may fail prematurely with a dump of the internal crash utility allocated buffer statistics followed by the message "timer: cannot allocate any more memory!", (anderson@redhat.com)

  • 2015-06-29 Dave Anderson Fix for the PPC64 "bt" command to align its exception frame verifier function with the most recent version of the kernel's getvecname() function, which was updated in Linux 3.12. Without the patch, the "Hypervisor Decrementer", "Emulation Assist", "Hypervisor Doorbell", "Altivec Unavailable", "Instruction Breakpoint", "Denormalisation", "HMI" and "Altivec Assist" exception types are not recognized and their exception frames not displayed; the "Doorbell" exception type is marked as a "reserved" exception type. (anderson@redhat.com)

  • 2015-06-29 Dave Anderson Fix for the "bt" command on little-endian PPC64 machines for tasks that are blocked in __schedule(). Without the patch, there will be two "__switch_to" frames displayed before the normal "__schedule" frame that is used as the starting point for blocked tasks. (anderson@redhat.com)

  • 2015-06-29 Dave Anderson Fix for the PPC64 "bt" command for active non-panic tasks. Without the patch, the backtrace may fail immediately with the error message "bt: invalid kernel virtual address: f type: Regs NIP value". (anderson@redhat.com)

  • 2015-06-25 Dave Anderson Fix for the internal memory allocation functionality. Without the patch, in the unlikely event where the GETBUF() facility has to utilize malloc() to allocate a buffer, and CTRL-c is entered while that buffer is being zeroed out before being returned to the caller, it may result in a never-ending set of "malloc-free mismatch" error messages. (anderson@redhat.com)

  • 2015-06-23 Dave Anderson Several fixes associated with the gathering and display of task state. Without the patch: (1) The "ps" command's ST column shows "??" for tasks in the TASK_WAKING state. (2) The "ps" command's ST column shows "??" for tasks in the TASK_PARKED state in Linux 3.14 and later kernels. (3) The STATE field of the initial system banner and the "set" command are incorrect if the task state has the TASK_WAKING, TASK_WAKEKILL modifier, or TASK_PARKED bits set in Linux 3.14 and later kernels. (4) The "foreach DE" task identifier fails if a task with a PID number of 0xDE (222) exists. (5) The "foreach" command's "SW", "PA", "TR" and "DE" task identifiers inadvertently select all tasks in kernel versions that do not have those states. (6) The "help -t" output would display incorrect values for the TASK_WAKEKILL, TASK_WAKING and TASK_PARKED states in Linux 3.14 and later kernels. Lastly, support for the TASK_NOLOAD modifier introduced in Linux 4.2 has been added to STATE field of the "set" command and the initial system banner. (anderson@redhat.com)

  • 2015-06-18 Dave Anderson Fix for the initialization-time sorting mechanism required for "flattened format" dumpfiles if the dumpfile is truncated/incomplete. Without the patch, the sorting function continues performing invalid reads beyond the of the dumpfile, which may lead to an infinite loop instead of a session-ending error message. In addition, since the sorting operation may take several minutes, a "please wait" message with an incrementing percentage-complete counter will be displayed. (anderson@redhat.com)

  • 2015-06-16 Dave Anderson Speed up the "crash --osrelease" option when used with "flattened" format dumpfiles. Without the patch, the rearranged data array initialization is performed before the vmcoreinfo data in the header is read, which can take a significant amount of time with large dumpfiles. The patch simply looks for the appropriate vmcoreinfo data string near the beginning of the dumpfile. (anderson@redhat.com)

  • 2015-06-16 Dave Anderson Fix to prevent an unnecessary/temporary GETBUF() memory allocation of 1 MB by the dump_mem_map() utility function when the kernel is configured with CONFIG_SPARSEMEM. (yangoliver@gmail.com)

  • 2015-06-09 Dave Anderson Fix for the S390X "bt" command when running against kernels that have Linux 4.0 commit 2f859d0dad818765117c1cecb24b3bc7f4592074, which removes the "async_stack" and "panic_stack" members from the "pcpu" structure. Without the patch, backtraces of active tasks that were executing I/O or machine check interrupts are not displayed, while other tasks may generate fatal readmem() errors of type "readmem_ul". (holzheu@linux.vnet.ibm.com)

  • 2015-06-04 Dave Anderson Enabled the "crash --log vmcore" command line option on the ARM64 architecture. Without the patch, the option fails with the message "crash: crash --log not implemented on ARM64: TBD". (anderson@redhat.com)

  • 2015-06-04 Dave Anderson Enabled the "bt -R" option on the ARM64 architecture. Without the patch, the option fails with the message "bt: -R option not supported or applicable on this architecture or kernel". (anderson@redhat.com)

  • 2015-06-02 Dave Anderson Enhancement of the ARM64 backtrace capability. Without the patch, backtraces of the active tasks start at the function that is saved in each per-cpu ELF note. With the patch, the backtrace will start at the "crash_kexec" function on the panicking cpu, and at the "crash_save_cpu" function on the other active cpus. By doing so, the backtrace will display the exception handling functions leading to crash_kexec() or crash_save_cpu(), as well as the exception frame register set as it was at the time of the fatal exception on the panic cpu, or when the shutdown IPI was received on the other cpus. (anderson@redhat.com)

7.1.1

  • 2015-05-27 Dave Anderson crash-7.1.0 -> crash-7.1.1

  • 2015-05-27 Dave Anderson Fix for the handling of ARM64 kernel module per-cpu symbols. Without the patch, if the debuginfo data of an ARM64 kernel module that contains a per-cpu section is loaded by "mod -s <module>" or "mod -S", commands such as "bt" or "sym" may incorrectly translate the module's virtual addresses to symbol names. (Jan.Karlsson@sonymobile.com)

  • 2015-05-21 Dave Anderson Fix for any command that passes strings to gdb for evaluation, where the string contains a parentheses-within-parentheses expression along with a ">" or ">>" operator inside the outermost set of parentheses. Without the patch, a command such as the following fails like so:

  • 2015-05-21 Dave Anderson Enhanced the "struct.member" display capability of the "struct", "union", "task", "list" and "tree" commands. If a specified structure member contains an embedded structure, the output may be restricted to just the embedded structure by expressing the .member argument as "member.member". If a specified structure member is an array, the output may be restricted to a single array element by expressing the .member argument as "member[index]". Furthermore, these embedded member specifications may extend beyond one level deep, for example, by expressing the member argument as "member.member.member", or "member[index].member". (Alexandr_Terekhov@epam.com, anderson@redhat.com)

  • 2015-05-21 Dave Anderson Fixes for the translation of ARM64 PTEs, as displayed by the "vm -p" and "vtop" commands. Without the patch, if "vm -p" references a swapped-out page on Linux 4.0 and later kernels, the SWAP location may indicate "(unknown swap location)", and will show an invalid OFFSET value; on Linux 3.13 and later kernels, running "vtop" on a user virtual address incorrectly translates the PTE contents of swapped out pages by showing a PHYSICAL address and FLAGS translation instead of the SWAP device and OFFSET. It is possible that there may be PTE bit translation errors on other kernel versions; the patch addresses the changes in ARM64 PTE bit definitions made in Linux 3.11, 3.13, and 4.0 kernels. (anderson@redhat.com)

  • 2015-05-19 Dave Anderson Fix for the DATE display in the initial system banner and by the "sys" command to account for the Linux 3.17 change that moved the "timekeeper" symbol and structure into a containing tk_core structure; the "shadow_timekeeper" timekeeper will be used as an alternative. Without the patch, the DATE shows something within a few hours of the Linux epoch, such as "Wed Dec 31 18:00:00 1969". (kmcmartin@redhat.com)

  • 2015-05-19 Dave Anderson Fix for the ARM64 page size determination on Linux 4.1 and later kernels. Without the patch, the crash session fails during initialization with the message "crash: invalid/unsupported page size: 98304" on kernels with 64K pages. On kernels with 4K pages, the message is "crash: invalid/unsupported page size: 6144". In addition, the "-p <page-size>" command line override option had no effect on ARM64; that has been fixed as well. (anderson@redhat.com)

  • 2015-05-18 Dave Anderson The "help -r" option has been extended to dump the ARM64 registers stored in each NT_PRSTATUS note in ELF kdump vmcores. (anderson@redhat.com)

  • 2015-05-18 Dave Anderson The "help -r" option has been extended to dump the ARM64 registers stored in each per-cpu NT_PRSTATUS note in compressed kdump vmcores. (anderson@redhat.com)

  • 2015-05-18 Dave Anderson Minor fixes to previous commit cc1513295e1a3a3d97e7343f4456932bfa80afae: X17 was incorrectly shown as X16, and LR was shown as X30 (anderson@redhat.com)

  • 2015-05-18 Dave Anderson Additional output for the "help [-D|-n]" options on ARM64. For ELF kdump vmcores and compressed kdumps, the elf_prstatus structure in each NT_PRSTATUS note will be translated. (anderson@redhat.com)

  • 2015-05-18 Dave Anderson Fix for a segmentation violation generated by the "help -[n|D]" options on ARM64 compressed kdumps. (anderson@redhat.com)

  • 2015-05-18 Dave Anderson Remove the leftover ".constructor" build file in the extensions subdirectory when "make extensions" is complete, and update the top-level .gitignore file to ignore post-build extensions subdirectory files. (anderson@redhat.com)

  • 2015-05-18 Dave Anderson Fix to remove an invalid warning message on ARM64 if a crash session is invoked with the "-d<number>" debug flag. Without the patch, the invalid message is "WARNING: SPARSEMEM_EX: questionable section values". (anderson@redhat.com)

  • 2015-05-13 Dave Anderson Support enhancement for the 32-bit MIPS architecture that retrieves the per-cpu registers from the NT_PRSTATUS notes stored in the header of compressed kdump dumpfiles. (rabinv@axis.com)

  • 2015-05-12 Dave Anderson Implemented a new "kmem -m" option that is similar to "kmem -p", but it allows the user to specify the page struct members to be displayed. The option takes a comma-separated list of one or more page struct members, which will be displayed following the page structure address. The "flags" member will always be expressed in hexadecimal format, and the "_count" and "_mapcount" members will always be expressed in decimal format. Otherwise, all other members will be displayed in hexadecimal format unless the current output radix is 10 and the member is a signed/unsigned integer. Members that are data structures may be specified by the data structure's member name, or expanded to specify a member of that data structure. For example, "-m lru" refers to a list_head data structure, in which case both the list_head.next and list_head.prev pointer values will be displayed; if "-m lru.next" is specified, just the list_head.next value will be displayed. (atomlin@redhat.com, anderson@redhat.com)

  • 2015-05-08 Dave Anderson Update/fix for prior commit 1e858ed48eb0b763b3c1c0fc4e9b655807ed3b92 (anderson@redhat.com)

  • 2015-05-08 Dave Anderson Fix for the "irq", "mount", "kmem -p" and "kmem -v" commands when they are used in an input file. If more than one of any of those four commands are used in an input file, the output of the second and subsequent command instances will not display their respective command headers. (anderson@redhat.com)

  • 2015-05-01 Dave Anderson A prior commit added support for Linux version 4.x. To prevent surprise failures due to unexpected kernel version bumps in the future, support has been added for version 5, keeping it one step ahead. (anderson@redhat.com)

  • 2015-04-30 Dave Anderson Remove the non-existent "-L" option from the "ps" command's mutually- exclusive options error message. (vvs@parallels.com)

  • 2015-04-29 Dave Anderson Speed up the session invocation time of "flattened" format dumpfiles created by the makedumpfile(8) facility. When sorting the blocks of memory by their intended ELF or compressed kdump file offsets, the patch replaces the bubble-sort method that is currently used with an insertion sort method. (dslutz@verizon.com)

  • 2015-04-28 Dave Anderson Fix for a regression in crash-7.1.0 that causes failures when the "crash -t" option is run on a live system, and when analyzing remote Linux kernels. Without the patch, "crash -t" on a live system fails with the message "crash: cannot open remote memory source: /dev/mem", and attempts to analyze a Linux kernel remotely just shows the kernel timestamp and exits immediately. (dslutz@verizon.com, anderson@redhat.com)

  • 2015-04-28 Dave Anderson Fix to address the Xen 4.5.0 hypervisor symbol name change from "dom0" to "hardware_domain". Without the patch, the crash session fails with the error message "crash: cannot resolve: dom0". (dslutz@verizon.com)

  • 2015-04-27 Dave Anderson Fix for "and and" and "the the" typos in the README file. (weijg.fnst@cn.fujitsu.com)

  • 2015-04-27 Dave Anderson Fix for a typo in "help foreach", and a fix for a spelling error in "help input". (weijg.fnst@cn.fujitsu.com)

  • 2015-04-24 Dave Anderson Several fixes, updates, and enhancements for 32-bit MIPS support: (1) The MIPS general purpose registers in the elf_gregset_t don't start at index 0 but at index 6. (2) Adjust for the kernel's pt_regs structure changes between kernel versions. For example, fields are inserted into the middle based on build time options, and the amount of padding at the head of the structure was changed relatively recently. To handle this, split the structure definition into two parts and get the offsets of these two parts dynamically. (3) Do not display each parsed kernel symbol during initialization when invoked with "crash -d8". (4) Add support for loading raw MIPS ramdump dumpfiles. (5) Add support for compressed kdump dumpfiles. (rabinv@axis.com)

  • 2015-04-24 Dave Anderson Build extension modules that utilize the generic extensions/Makefile with -g. In addition, build the snap.c extension module with -g. (rabinv@axis.com)

  • 2015-04-22 Dave Anderson Implemented a new "runq -c cpu(s)" option to display the run queue data of specified cpus. It can be used in conjunction with all runq command options. The cpus must be specified in a comma- and/or dash-separated list; for examples, "3", "1,8,9", "1-23", or "1,8-15". (anderson@redhat.com)

  • 2015-04-14 Dave Anderson Implemented a new fill_struct_member_data() function that gathers a bundle of data that describes a structure member. The function receives a pointer to a struct_member_data structure, in which the caller has initialized the "structure" and "member" name pointers:

  • 2015-04-14 Dave Anderson Implemented a new STRDUPBUF() utility that will duplicate an existing string into a buffer allocated with GETBUF(). As is the case with any buffer allocated with GETBUF(), it is only meant to exist during the life-span of the current command. If it is not explicitly freed via FREEBUF(), then it will be freed automatically prior to the next command. (anderson@redhat.com)

  • 2015-04-09 Dave Anderson Fortified the error handling of task gathering from the pid_hash[] chains during session initialization. If a chain has been corrupted, the patch prevents the sequence from entering an infinite loop, and the error messages associated with corrupt/invalid chains have been updated to report the pid_hash[] index number. (anderson@redhat.com)

  • 2015-03-31 Dave Anderson Enhancement to the support of VMware .vmss suspended state dumpfiles. There may be holes in the memory address saved for PCI, etc. In such cases, the memory dump is divided into regions. With this patch, up to 3 memory regions are supported. (hfu@vmware.com)

  • 2015-03-26 Dave Anderson Fix to support ELF vmcore dumpfiles whose PT_LOAD file offset values of their respective memory segments are not laid out sequentially from low to high in the dumpfile. This has only been seen in ELF vmcore files created by the VMware vmss2core facility. Without the patch, the crash session may fail during initialization, either with the message "cannot malloc ELF header buffer", or "crash: <dumpfile>: not a supported file format". (anderson@redhat.com)

  • 2015-03-23 Dave Anderson Fix for ARM64 kernels to account for changes in the virtual memory layout introduced in Linux 3.17. The vmalloc region end address, and the vmemmap start and end addresses are now calculated at kernel build time, because they depend upon the size of a struct page. Accordingly, the crash utility needs to calculate those three address values dynamically, after the embedded gdb module has initialized. Without the patch, reads of page structures return invalid data due to incorrect virtual-to-physical translations of memory in the vmemmap range. This in turn causes commands that require page structure contents to fail or show invalid data, such as "kmem -p", "kmem -[sS]", and the "kmem -[fF]" options. (anderson@redhat.com)

  • 2015-03-19 Dave Anderson During initialization, reject useless ARM64 "(A)" and "(a)" absolute symbols that are below the text region. Without the patch, several recently-introduced absolute symbols have been introduced into the kernel, which will be displayed by "sym -l" prior to the first kernel virtual address symbol, and will show up in command output where memory values are translated into kernel symbol references. (anderson@redhat.com)

  • 2015-03-11 Dave Anderson Fix to account for Xen hypervisor's "domain" structure member name change from "is_paused_by_controller" to "controller_pause_count". Without the patch, in Xen 4.2.5 and later, the crash session fails during initialization with the error message 'crash: invalid structure member offset: domain_is_paused_by_controller". (dietmar.hahn@ts.fujitsu.com)

  • 2015-03-03 Dave Anderson When the gdb-<version>.patch file has changed and a rebuild is done from within a previously-existing build tree, the "patch -N" option is used to ignore patches that have been previously applied; this patch also applies the "patch -r-" option to prevent unnecessary .rej files from being created. (anderson@redhat.com)

  • 2015-03-03 Dave Anderson Fix for insecure temporary file usage in _rl_tropen() as reported by readline library CVE-2014-2524. (anderson@redhat.com)

  • 2015-02-25 Dave Anderson Fix for command lines that are redirected to a pipe. Without the patch, if an external piped-to command contains a quoted string that includes a "|" character, the command fails with the message "crash: pipe operation failed". (anderson@redhat.com)

  • 2015-02-20 Dave Anderson Add support for more than 16TB of physical memory space in the SADUMP dumpfile format. Without the patch, there is a limitation caused by several 32-bit members of dump_header structure, in particular the max_mapnr member, which overflows if the dumpfile contains more than 16TB of physical memory space. The header_version member of the dump_header structure has been increased from 0 to 1 in this extended new format, and the new 64-bit members will be used. (d.hatayama@jp.fujitsu.com)

  • 2015-02-19 Dave Anderson Prepare for the future increment of Linux 3.x to 4.x. (anderson@redhat.com)

  • 2015-02-13 Dave Anderson Remove the LKCD-only "propeller spinner" seen when a dumpfile read requires more than 2048 page header accesses. This was put in place because of the non-random-access design of LKCD dumpfiles. Without the patch, the spinner display is intermingled with command output, which complicates the parsing of the output. (watters.sam@gmail.com)

  • 2015-02-12 Dave Anderson Addressed three Coverity Scan complaints in vmware_vmss.c: 50:leaked_storage: Variable "fp" going out of scope leaks the storage it points to. 53:leaked_storage: Variable "fp" going out of scope leaks the storage it points to. 256:warning: Use of memory after it is freed (anderson@redhat.com)

  • 2015-02-12 Dave Anderson If the kernel (live or dumpfile) has the TAINT_LIVEPATCH bit set, or if the Red Hat "kpatch" module is installed, the tag "[LIVEPATCH]" will be displayed next to the kernel name in the initial system banner and by the "sys" command. This new tag replaces the "[KPATCH]" tag introduced in crash-7.0.7. (anderson@redhat.com)

  • 2015-02-11 Dave Anderson Fix for two minor issues with the "net" command. Without the patch, the "net -a" option appends its correct output with the command's "Usage:" message; and if either the "net -x" or "net -d" options are used without also specifying "-s" or "-S", the error message would indicate "net: illegal flag: 800000" or "net: illegal flag: 1000000" instead of showing the command's "Usage:" message. (anderson@redhat.com)

  • 2015-02-06 Dave Anderson Fix CFILES in Makefile: mips.o to mips.c

7.1.0

  • 2015-02-06 Dave Anderson crash-7.0.9 -> crash-7.1.0

  • 2015-02-05 Dave Anderson Added support for VMware .vmss suspended state files as dumpfiles. Similar to all other supported dumpfile types, it is invoked as:

  • 2015-02-05 Dave Anderson Update the extensions/trace.c extension module to account for the movement of the ftrace_event_call.name member into an anonymous union in Linux 3.15, commit de7b2973903c6cc50b31ee5682a69b2219b9919d. (rabin@rab.in)

  • 2015-02-05 Dave Anderson Add appropriate checks for the MIPS architecture to allow extension modules to be loaded with the "extend" command. (rabin@rab.in)

  • 2015-02-05 Dave Anderson Enhancement of the "PANIC:" message displayed by the initial system banner and by the "sys" command. Without the patch, many panic types are categorized under the same generic message of the form:

  • 2015-01-30 Dave Anderson Fix for a regression introduced in crash-7.0.9 when running on a live 32-bit ARM machine. Without the patch, a segmentation violation is generated during session initialization. (anderson@redhat.com)

  • 2015-01-23 Dave Anderson Fix for the "runq" command on kernels that are configured with CONFIG_RT_GROUP_SCHED=n. Without the patch, real-time tasks queued on a per-cpu rt_rq.rt_prio_array will not be displayed under the "RT PRIO_ARRAY" header. (mty.shibata@gmail.com)

  • 2015-01-23 Dave Anderson Fix to allow the "ps -G" qualifier to be used in conjunction with the "ps -p" option. Without the patch, "ps -G -p" fails with the error message "ps: do_list: hash queue is in use?" (anderson@redhat.com)

  • 2015-01-22 Dave Anderson Fix for the "kmem -V" option output to change the display of the vm_event_states fields from signed to unsigned long integers. (adobriyan@gmail.com)

  • 2015-01-21 Dave Anderson Prevent "help -r" and "help -[D|n]" from generating a segmentation violation when attempting to access non-existent NT_PRSTATUS notes for offline cpus in ELF or compressed kdumps. (anderson@redhat.com)

  • 2015-01-21 Dave Anderson Additional output for the "help [-D|-n]" options for the PPC64 architecture. For compressed kdump and ELF kdump dumpfiles, the elf_prstatus structure in each per-cpu NT_PRSTATUS note will be translated. (anderson@redhat.com)

  • 2015-01-20 Dave Anderson Fix for the PPC64 "bt" command on both big-endian and little-endian architectures. Without the patch, backtraces of the active tasks may be "empty" on little-endian machines, or show a one-liner of the form: "#0 [c0000005f4db7a60] (null) at 501 (unreliable)" on big-endian machines. (anderson@redhat.com)

  • 2015-01-20 Dave Anderson Fix for the "kmem -z" option output to show the zone structure's pages_scanned field as a unsigned integer. (Alexandr_Terekhov@epam.com)

  • 2015-01-14 Dave Anderson Update the "ps" help page to reflect that the "ps -l" option may be based upon the task_struct's sched_entity.last_arrival. Without the patch, it indicates that either the task_struct's last_run or timestamp value are used. (anderson@redhat.com)

  • 2015-01-14 Dave Anderson Added support for big-endian 32-bit MIPS kernels. Only native MIPS crash binaries may be built with big-endian support; running the "make target=MIPS" build option on an x86 or x86_64 host creates x86 binaries with little-endian support only. (rabin@rab.in)

  • 2015-01-13 Dave Anderson Introduction of support for the 32-bit MIPS architecture. This initial support is restricted to 32-bit MIPS kernels that are configured as little-endian. With respect to dumpfile types, only ELF vmcores are recognized. In addition to building crash as a 32-bit MIPS binary, it is also possible to build crash as an x86 binary on an x86 or x86_64 host so that crash analysis of MIPS dumpfiles can be performed on an x86 or x86_64 host. The x86 binary can be built by entering "make target=MIPS" for the initial build; subsequent builds with MIPS support can be accomplished by entering "make" alone. (rabin@rab.in)

  • 2015-01-06 Dave Anderson Additional output for the "help [-D|-n]" options on X86 and X86_64 architectures. For compressed kdumps generated by "virsh dump --memory-only", the QEMUCPUState structure in each per-cpu QEMU note will be translated, and the dumpfile offset address of each QEMU note will be displayed. (qiaonuohan@cn.fujitsu.com, anderson@redhat.com)

  • 2015-01-05 Dave Anderson Fix for the "help [-D|-n]" option on 32-bit X86 kernels that use the 64-bit ELF vmcore format generated by "virsh dump --memory-only". Without the patch, the QEMUCPUState structures in QEMU notes are not translated. (qiaonuohan@cn.fujitsu.com)

  • 2014-12-18 Dave Anderson Fix for the 32-bit ARM virtual-to-physical address translation of unity-mapped kernel virtual addresses in kernels configured with CONFIG_ARM_LPAE if the system's phys_base exceeds 4GB. (sdu.liu@huawei.com)

  • 2014-12-18 Dave Anderson Cosmetic fix for "help -[n|D]" on 32-bit ELF vmcores when displaying Xen or vmcoreinfo note headers.

  • 2014-12-17 Dave Anderson Implemented a new "bt -A" option for the S390X architecture, which adds support for displaying the new s390x vector registers. For ELF dumps, the registers are taken from the VX ELF notes; for s390 dumps. the registers are taken from memory. The option produces the same output as the -a option, but also displays the vector registers for all active tasks. (holzheu@linux.vnet.ibm.com)

  • 2014-12-17 Dave Anderson Additional output for the "help [-D|-n]" options on X86 and X86_64 architectures. For compressed kdumps, the elf_prstatus structure in each per-cpu NT_PRSTATUS note will be translated. For ELF kdumps, the elf_prstatus structure in each per-cpu NT_PRSTATUS note, and the QEMUCPUState structure in each per-cpu QEMU note, will be translated. (zhouwj-fnst@cn.fujitsu.com, anderson@redhat.com)

  • 2014-12-15 Dave Anderson Fix for the X86_64 "bt" and "mach" commands when running against kernels that have the following Linux 3.18 commit, which removes the special per-cpu exception stack for handling stack segment faults:

  • 2014-12-11 Dave Anderson Added a new "vm -M <mm_struct>" option. When a task is exiting, the mm_struct address pointer in its task_struct is NULL'd out, and as a result, the "vm" command looks like this:

  • 2014-12-10 Dave Anderson Fix for the "kmem [-s|-S] <address>" command, and the "rd -S[S]" and "bt -F[F]" options. Without the patch, if the page structure associated with a memory address still contains a (stale) pointer to the address of a kmem_cache structure, but whose page.flags does not have the PG_slab bit set, the address is incorrectly presumed to be contained within that slab cache. As as result, the "kmem" command may display one or more messages indicating a "bad inuse counter", a "bad next pointer" or a "bad s_mem pointer", followed by an "address not found in cache" error message. The "rd -S[S]" and "bt -F[F]" commands may mislabel memory locations as belonging to slab caches. (anderson@redhat.com)

  • 2014-12-09 Dave Anderson Enhancement of the "kmem -i" option to display memory overcommit information, which will be appended to the traditional output of the command. For example:

  • 2014-12-09 Dave Anderson Fix for the kernel virtual address to symbol name translation for special text region delimiter symbols declared in vmlinux.lds.S with VMLINUX_SYMBOL(), such as __sched_text_start, __lock_text_start, __kprobes_text_start, __entry_text_start and __irqentry_text_start. Without the patch, if the addresses of those symbols are the same value as the first "real" symbol in those text regions, commands such as "dis" and "sym" may show the "_text_start" symbol name instead of the desired text symbol name. (qiaonuohan@cn.fujitsu.com, anderson@redhat.com)

  • 2014-12-05 Dave Anderson Implemented a new "net -n [pid|task]" option that displays the list of network devices with respect the network namespace of the current context, or that of a task specified by the optional "pid" or "task" argument. The former "net -n &lt;address>" option that translates an IPv4 address expressed as a decimal or hexadecimal value into a standard numbers-and-dots notation has been changed to "net -N". (ws@parallels.com)

  • 2014-12-04 Dave Anderson Fix for the "waitq" command when it is passed the address of a wait_queue_head_t structure. Without the patch, if the entries on the list are dynamically-created __wait_queue structures on kernel stacks, the tasks owning the kernel stack are not displayed. (anderson@redhat.com)

  • 2014-12-02 Dave Anderson Fix for finding the starting stack and instruction pointer hooks for the active tasks in x86_64 ELF or compressed dumpfiles created by the KVM "virsh dump --memory-only" facility. Without the patch, the backtraces of active tasks may show an invalid starting frame that indicates "__schedule". The fix displays the exception RIP and dumps the register contents that are stored in the dumpfile header. If the active task was operating in the kernel, the backtrace continues from there; if the task was operating in user-space, the backtrace is complete at that point. (anderson@redhat.com)

  • 2014-11-21 Dave Anderson Fix for a misleading fatal error message if a 32-bit crash binary built on an X86_64 host with "make target=X86" or "make target=ARM" is used on a live X86_64 system without specifying a vmlinux namelist. Without the patch, the session fails with the message "crash: cannot find booted kernel -- please enter namelist argument". The error message will be "crash: compiled for the X86 architecture" or "crash: compiled for the ARM architecture". (anderson@redhat.com)

  • 2014-11-20 Dave Anderson Fix for the "crash --log <dumpfile>" option on both of the PPC64 architectures. Without the patch, the command fails with the message "crash: seek error: physical address: <address> type: log_buf pointer", followed by "crash: cannot read log_buf value". This bug was introduced in crash-7.0.0 by a patch that added support for the PPC64 BOOK3E processor family. (anderson@redhat.com)

  • 2014-11-20 Dave Anderson Implemented the capability of building crash as an x86_64 binary for analyzing little-endian PPC64 dumpfiles on an x86_64 host, which can be done by entering "make target=PPC64". After the initial build is complete, subsequent builds can be done by entering "make" alone. (anderson@redhat.com)

  • 2014-11-18 Dave Anderson Fix for the handling of multiple ramdump images. Without the patch, entering more than one ramdump image on the command line may result in a segmentation violation. (oza@broadcom.com)

  • 2014-11-17 Dave Anderson Support for "irq" and "irq -u" on the S390 and S390X architectures if they are running Linux 3.12 and later kernels. Older kernels without GENERIC_HARDIRQ support will fail with the error message "irq: cannot determine number of IRQs". (sebott@linux.vnet.ibm.com)

7.0.9

  • 2014-11-13 Dave Anderson crash-7.0.8 -> crash-7.0.9

  • 2014-11-13 Dave Anderson Fix for the support of compressed kdump clones created with the KVM "virsh dump --memory-only --format <compression-type>" command, where the compression-type is either "kdump-zlib", "kdump-lzo" or "kdump-snappy". Without the patch, if an x86_64 guest kernel was loaded with a non-zero "phys_base", the "--machdep phys_base=<offset>" command line option was required as a workaround or the crash session would fail with the warning message "WARNING: cannot read linux_banner string" followed by the fatal error message "crash: vmlinux and <dumpfile name> do not match!". (anderson@redhat.com)

  • 2014-11-12 Dave Anderson Cosmetic fix for the "help -[n|D]" translation of the bitmap contents of the kdump_sub_header.dump_level flag in compressed kdump dumpfiles. (anderson@redhat.com)

  • 2014-11-11 Dave Anderson Implementation of a new "sys -t" option that displays kernel taint information. If the "tainted_mask" symbol exists, the option will show its hexadecimal value and translate each bit set to the symbolic letter of the taint type. On kernels prior to 2.6.28 which had the "tainted" symbol, only its hexadecimal value is shown. The relevant kernel sources should be consulted for the meaning of the letter(s) or hexadecimal bit value(s). (anderson@redhat.com)

  • 2014-10-31 Dave Anderson Implemented support for this Linux 3.18 commit for kernels that are configured with CONFIG_SLAB:

  • 2014-10-30 Dave Anderson If a kernel has been configured with CONFIG_DEBUG_INFO_REDUCED, then the crash utility will fail to initialize, typically with a message indicating "no debugging data available". However, it has been reported (on a 32-bit ARM system) that the initialization sequence continued on beyond that message point, and the session failed later on with the message "neither runqueue nor rq structures exist". As an aid to understanding why the session failed, if the target kernel is configured with CONFIG_IKCONFIG, and CONFIG_DEBUG_INFO_REDUCED has been set to "y", a relevant warning message will be displayed. (anderson@redhat.com)

  • 2014-10-30 Dave Anderson Added recognition of the new DUMP_DH_COMPRESSED_INCOMPLETE flag in the header of compressed kdumps, and the new DUMP_ELF_INCOMPLETE flag in the header of ELF kdumps. If the makedumpfile(8) facility fails to complete the creation of compressed or ELF kdump vmcore files due to ENOSPC or other error, it will mark the vmcore as incomplete. If either flag is set, the crash utility will issue a warning that the dumpfile is known to be incomplete during initialization, just prior to the system banner display. When reads are attempted on missing data, a read error will be returned. As an alternative, zero-filled data will be returned if the "--zero_excluded" command line flag is used, or the "zero_excluded" runtime variable is set to "on". In either case, the read errors or zero-filled memory may cause the crash session to fail entirely, cause commands to fail, or may result in other unpredictable runtime behavior. (anderson@redhat.com, zhouwj-fnst@cn.fujitsu.com)

  • 2014-10-30 Dave Anderson Correction of the copyright and authorship of ramdump.c. (oza@broadcom.com)

  • 2014-10-29 Dave Anderson Fix for data access from "split" compressed kdump dumpfiles. Without the patch, if a dumpfile read targets physical memory in the first memory page stored in the second or later sequential split dumpfile, incorrect data will be returned. (qiaonuohan@cn.fujitsu.com)

  • 2014-10-22 Dave Anderson Fix for a SIGSEGV generated by the "bt -a" or "help -r" commands if the NT_PRSTATUS notes in a compressed kdump are invalid/corrupt. If all cpus are online but the dumpfile initialization that cycles through the NT_PRSTATUS notes does not find exactly one note per cpu, then the register contents in those notes should not be used. (anderson@redhat.com)

  • 2014-10-22 Dave Anderson Fix for a possible SIGSEGV generated during session initialization while "please wait... (determining panic task)" is being displayed. This was caused by a patch introduced in crash-7.0.8, and can only happen when analyzing dumpfiles whose header does not contain the requisite information to determine the panic task and the active tasks do not have any crash-related traces in their kernel stacks. It should be noted that the SIGSEGV can be avoided by entering "--no_panic" on the crash command line. (anderson@redhat.com)

  • 2014-10-17 Dave Anderson Fix for the determination of the cpu count on ARM64 machines. Without the patch, if certain patterns of cpus are offline, the count may be too small, causing cpu-dependent commands to not recognize online cpus. (Jan.Karlsson@sonymobile.com, anderson@redhat.com)

  • 2014-10-16 Dave Anderson Fix for a missing exception frame dump by the X86_64 "bt" command when an IRQ is received while a task is running on its per-cpu interrupt stack with interrupts enabled. (anderson@redhat.com)

  • 2014-10-16 Dave Anderson Fix for the determination of the cpu count on 32-bit ARM machines. Without the patch, if certain patterns of cpus are offline, the count may be too small, causing cpu-dependent commands to not recognize online cpus. (Jan.Karlsson@sonymobile.com, anderson@redhat.com)

  • 2014-10-15 Dave Anderson Make the "bt -E" option conform to a "-c cpu(s)" specification when the the two options are used together. Without the patch, "bt -E" ignores a cpu specifier. (anderson@redhat.com)

  • 2014-10-15 Dave Anderson Adjustment to the "offline" patch-set to make the initial system banner, the "sys" command, and the X86_64 "mach" command, to only show the "OFFLINE" cpu count if there are actually offline cpus. (anderson@redhat.com)

  • 2014-10-06 Dave Anderson Implement a new "offline" internal crash variable that can be set to either "show" (the default) or "hide". When set to "hide", certain command output associated with offline cpus will be hidden from view, and the output will indicate that the cpu is "[OFFLINE]". The new variable can be set during invocation on the crash command line via the option "--offline [show|hide]". During runtime, or in a .crashrc or other crash input file, the variable can be set by entering "set offline [show|hide]". The commands or options that are affected when the variable is set to "hide" are as follows:

  • 2014-10-02 Dave Anderson Fortify the protection against the use of an invalid/corrupted CONFIG_SLAB kmem_cache per-cpu array_cache.limit value during session initialization. In a recently seen vmcore, several of the array_cache.limit values were corrupted such that they were stored as negative values, which in turn caused the "kmem -[sS]" options to fail immediately with a dump of the internal memory buffer allocation statistics and the error message "kmem: cannot allocate any more memory!". (anderson@redhat.com)

  • 2014-09-30 Dave Anderson Update the "ps" command's "ST" task state display to recognize the TASK_PARKED state in Linux 3.9 and later kernels. Without the patch, the command's "ST" column entry for parked tasks shows "??". The state column will now show "PA", and the foreach command will accept "PA" as a "state" argument. (anderson@redhat.com)

  • 2014-09-30 Dave Anderson Fix the error message displayed if the vmlinux or vmcore file is not the same endian as the crash utility binary. Without the patch the filename is shown with the incorrect/opposite endian type. (hukeping@huawei.com)

  • 2014-09-29 Dave Anderson Set the 32-bit ARM HZ value to a default value of 100 if the kernel was not configured with CONFIG_IKCONFIG. Without the patch, the initial system banner and the "sys" command show "UPTIME: (cannot calculate: unknown HZ value)", the "ps -t" option shows "RUN TIME: (cannot calculate: unknown HZ value)", and the "timer -r" option kills the crash session with a floating point exception. (hukeping@huawei.com)

  • 2014-09-22 Dave Anderson Fix for the "ps" command performance degradation patch the was introduced in crash-7.0.8. Without this patch, it is possible that the "ps" command may fail prematurely with the error message "ps: bsearch for tgid failed: task: <address> tgid: <number>" when running on a live system or against a "live" dumpfile. (panfy.fnst@cn.fujitsu.com)

  • 2014-09-22 Dave Anderson Fix "defs.h" for building extension modules outside of the crash utility source tree on PPC and PPC64 machines. Without the patch, both PPC and PPC64 will get #define'd if the extension module build procedure does not #define one or the other, which in turn causes multiple conflicting declarations. (anderson@redhat.com)

  • 2014-09-22 Dave Anderson Improve the method for determining whether a 32-bit ARM vmlinux is an LPAE enabled kernel by first checking whether CONFIG_ARM_LPAE exists in the vmcoreinfo data, and if it does not, by then checking whether the next higher symbol above "swapper_pg_dir" is 0x5000 bytes higher in value. (sdu.liu@huawei.com)

  • 2014-09-22 Dave Anderson Update the "extensions/snap.mk" file to allow the "snap.so" extension module to be built outside of a crash source tree on a ppc64le PPC64 little-endian host. Without the patch, "make -f snap.mk" would fail to compile, indicating "gcc: error: macro name missing after '-D'" (anderson@redhat.com)

  • 2014-09-19 Dave Anderson Fix for the one-time (dumpfile), or as-required (live system), gathering of tasks from the kernel pid_hash[] in 2.6.24 and later kernels. Without the patch, if an entry in a pid_hash[] chain is not related to the "init_pid_ns" pid_namespace structure, any remaining entries in the hlist chain are skipped. (vvs@parallels.com)

  • 2014-09-18 Dave Anderson Addressed 3 Coverity Scan issues: (1) task.c: initialize the "curr" and "curr_my_q" variables in the dump_tasks_in_task_group_cfs_rq() function. (2) ramdump.c: make the "rd" and "len" return values from read() and write() calls in write_elf() to be ssize_t types. (3) cmdline.c: make the parsed PATH string buffer equal to the size of the PATH string + 1 to prevent a possible buffer overflow when a command line starts with a "!". (anderson@redhat.com)

  • 2014-09-12 Dave Anderson Add "/lib/modules/<version>/build" to the list of directories that are searched for the currently-running kernel on live systems. This will automatically locate the vmlinux namelist for kernels that were locally installed with "make modules_install install". (lrintel@redhat.com)

  • 2014-09-12 Dave Anderson Fix the CPU timer and clock comparator output for the "bt -a" command on S390X machines. The output of CPU timer and clock comparator has always been incorrect because: - We added S390X_WORD_SIZE (8) instead of 4 to get the second word - We did not left shift the clock comparator by 8 The fix gets the complete 64 bit values and by shifting the clock comparator correctly. (holzheu@linux.vnet.ibm.com)

7.0.8

  • 2014-09-11 Dave Anderson crash-7.0.7 -> crash-7.0.8

  • 2014-09-11 Dave Anderson Address a "ps" command performance degradation that was introduced by a crash-7.0.4 patch which added per-thread task_struct.rss_stat page counts to the task's mm_struct.rss_stat page counts in order to show an accurate/synchronized RSS value. Without the patch, the "ps" command performance would degrade as the number of tasks increased, most notably when there were thousands of tasks. (panfy.fnst@cn.fujitsu.com, anderson@redhat.com)

  • 2014-09-09 Dave Anderson Maintain backwards-compatibility for "kvmdump" dumpfiles that were created by older development versions of KVM tools in which the cpu version id was 12, but the cpu device headers did not contain the additional XSAVE related fields. (uobergfe@redhat.com)

  • 2014-09-09 Dave Anderson Fix for SMP active task register-gathering from "kvmdump" dumpfiles that were created with a cpu version id of 12 or greater that contain additional XSAVE related fields in their cpu device headers. Without the patch, active tasks running on cpus above 0 may have truncated backtraces. (uobergfe@redhat.com)

  • 2014-09-05 Dave Anderson Implement support for the ppc64le PPC64 little-endian architecture. Since this required a large number of patches to be applied to architecture-neutral files in the gdb-7.6 tree, the changes are only applied if the host build system is a ppc64le. (ptesarik@suse.cz, normand@linux.vnet.ibm.com)

  • 2014-09-04 Dave Anderson Fortify the validity verification of the data structures traversed by the "kmem [-sS]" options for kernels configured with CONFIG_SLUB. Without the patch, the contents of several structure members are not validated, and may generate bogus or never-ending output, typically seen when running the commands on a "live dump" where the dumpfile was taken while the kernel was still running. The patch aborts the relevant parts of per-kmem_cache output when invalid data is encountered or if an object list contains duplicate entries, and error messages have been enhanced to more accurately describe the issues encountered. (anderson@redhat.com)

  • 2014-08-12 Dave Anderson On a live system during session initialization, delay the first read error message (typically when reading the "cpu_possible_mask") until it is confirmed that all of the following are true: (1) /dev/crash does not exist, and (2) /dev/mem is restricted via CONFIG_STRICT_DEVMEM, and (3) /proc/kcore cannot be read/accessed. The "kernel may be configured with CONFIG_STRICT_DEVMEM" and the "trying /proc/kcore as an alternative" messages will still be displayed when appropriate. The read error message be displayed only if all three live memory read options fail. (anderson@redhat.com)

  • 2014-08-12 Dave Anderson Fix to recognize that the live system "crash.ko" memory driver may be compressed and named "crash.ko.xz". Without the patch, the driver is not recognized and loaded, and as a result the /dev/mem driver and/or /proc/kcore will be tried as the live memory source. (anderson@redhat.com)

  • 2014-08-07 Dave Anderson Re-run a command in the history list by entering an "!" followed by the number identifying the command. However, unlike the similar "r" pseudo-command, if the number is a command name in the user's PATH, maintain the current behavior and execute that command. (anderson@redhat.com)

  • 2014-07-31 Dave Anderson Fix for the "help -[nD]" ELF header translation to recognize the EM_ARM and EM_AARCH values as "e_machine" types, and ELFOSABI_LINUX as an "e_ident[EI_OSABI]" type. Without the patch, the e_machine translation would show "40 (unsupported)" for 32-bit ARM, or "183 (unsupported)" on ARM64; and the ELFOSABI_LINUX type would be translated as "3 (?)". (anderson@redhat.com)

  • 2014-07-31 Dave Anderson Implement support for ARM and ARM64 raw RAM dumpfiles. One or more "ramdump" files may be entered on the crash command line in an ordered pair format consisting of the RAM dump filename and the starting physical address expressed in hexadecimal, connected with an ampersand:

  • 2014-07-30 Dave Anderson If an ARM or ARM64 dumpfile does not contain the register sets of the active tasks in the kernel's per-cpu crash_notes, there is an initialization-time warning message indicating "could not retrieve crash_notes". It has been changed to a more meaningful warning message indicating "cannot retrieve registers for active tasks". (anderson@redhat.com)

  • 2014-07-24 Dave Anderson Enhancement of the "kmem -S" option for Linux 3.2 and later kernels configured with CONFIG_SLUB to display the address of each per-cpu kmem_cache_cpu address and the contents of its per-cpu partial list. (qiaonuohan@cn.fujitsu.com)

  • 2014-07-23 Dave Anderson Determine the various ARM64 kernel virtual address ranges using the kernel's VA_BITS value. It currently is hardwired in the kernel to one of two values depending upon whether 4K or 64K pages are configured. However, there are plans to support 16K paqes, to make VA_BITS a configurable value, and to make the number of page-table levels configurable. Towards that end, the crash utility has been changed to determine the VA_BITS value based upon known kernel virtual addresses, and to then calculate the relevant kernel virtual address ranges on that value instead of hardwiring them based upon the page size. (anderson@redhat.com)

  • 2014-07-18 Dave Anderson When running against an ARM64 dumpfile created with the "snap.so" extension module, do not attempt to read the crash_notes. Since the dumpfile was taken while running on a live system, the crash_notes, if configured into the kernel, would not contain valid data. Without the patch, the message "WARNING: could not retrieve crash_notes" is displayed during session initialization. (anderson@redhat.com)

  • 2014-07-18 Dave Anderson During initialization, reject useless ARM64 "(A)" absolute symbols that begin with "__crc_". Without the patch, several thousand of them may be displayed by "sym -l" prior to the first kernel virtual address symbol. (anderson@redhat.com)

  • 2014-07-08 Dave Anderson Document the reason behind the deprecation of the "mount -f" option for Linux 3.13 and later kernels if the option is attempted, and in the "help mount" output, similar to the deprecated "mount -d" option. (anderson@redhat.com)

  • 2014-07-02 Dave Anderson Fix for an ARM64 compilation failure of the embedded gdb file "aarch-linux-nat.c" in the Fedora fc21 rawhide environment, which uses glibc-headers-2.19.90-24.fc21. (anderson@redhat.com)

  • 2014-06-27 Dave Anderson If a compressed kdump is damaged/truncated such that the bitmap data in the dumpfile header is not contained within the file, attempts to analyze it with a vmlinux file, or using the "crash --osrelease" or "crash --log" options with just the vmcore, will result in the crash utility spinning forever, endlessly performing reads of 0 bytes from the file without recognizing the EOF condition. (dwysocha@redhat.com)

  • 2014-06-27 Dave Anderson Deprecate the "mount -f" option for Linux 3.13 and later kernels containing commit eee5cc2702929fd41cce28058dc6d6717f723f87, which removed the super_block.s_files list_head member and the open files list that it contained. Without the patch, the command option fails with the error message "mount: invalid structure member offset: super_block_s_files" (anderson@redhat.com)

  • 2014-06-26 Dave Anderson Fix for the "mod -S" command to find the debuginfo data for Red Hat "kpatch" modules. Without the patch, the command would display "mod: cannot find or load object file for <kpatch-module> module". (anderson@redhat.com)

  • 2014-06-20 Dave Anderson Fix for the "search -t" option if the system has 2064 or more tasks. Without the patch, the command fails with a dump of the crash utility memory allocation statistics, ending with "search: cannot allocate any more memory!". (anderson@redhat.com)

  • 2014-06-16 Dave Anderson Fix for file-handling errors when a compressed vmlinux.debug file is followed by a vmlinux file on the crash command line. When the crash session ends, two errors will occur: (1) the vmlinux file will be deleted (2) the temporary uncompressed version of the vmlinux.debug file will remain in /var/tmp This problem also occurs in the highly unlikely case where a compressed vmlinux file is followed by a vmlinux.debug file on the command line, and the uncompressed temporary version of the vmlinux file is larger than the vmlinux.debug file. In that case: (1) the vmlinux.debug file will be deleted (2) the temporary uncompressed version of the vmlinux file will remain in /var/tmp (dmair@suse.com)

  • 2014-06-12 Dave Anderson Fix for the handling of 32-bit ELF xendump dumpfiles if the guest was configured with more than 4GB of memory. Without the patch, the crash session may fail during initialization with the error message "crash: vmlinux and <dumpfile> do not match!". (dslutz@verizon.com)

7.0.7

  • 2014-06-09 Dave Anderson crash-7.0.6 -> crash-7.0.7

  • 2014-06-05 Dave Anderson Introduce support for 32-bit ARM kernels that are configured with CONFIG_ARM_LPAE. The patch implements the virtual-to-physical address translation of 64-bit PTEs used by ARM LPAE kernels. (sdu.liu@huawei.com, weijitao@huawei.com)

  • 2014-06-05 Dave Anderson Fix for the "extend" command when running with an x86_64 crash binary that was built with "make target=ARM64" in order to analyze ARM64 dumpfiles on an x86_64 host. Without the patch, if the extend command is used with an extension module built in the same manner, it fails with the message "extend: <module>.so: not an ELF format object file". (Jan.Karlsson@sonymobile.com)

  • 2014-06-03 Dave Anderson Fix for the "runq -g" command on Linux 3.15 and later kernels, where the cgroup_name() function now utilizes kernfs_name(). Without the patch, the command fails with the error message "runq: invalid structure member offset: cgroup_dentry". (anderson@redhat.com)

  • 2014-06-02 Dave Anderson Fix to prevent a possible segmentation violation generated by the "runq -g" command when run on a very active live system due to an active task on a cpu exiting while the command is running. (anderson@redhat.com)

  • 2014-06-02 Dave Anderson Fix a harmless logic error in the last Makefile update to create an empty gdb-<version>/gdb-<version>.patch file if it doesn't exist. (anderson@redhat.com)

  • 2014-05-30 Dave Anderson If the gdb-<version>.patch file has changed and a rebuild is being done from within a previously-existing build tree, "patch -N" the gdb sources, and start the rebuild from the gdb-<version> directory instead of the gdb-<version>/gdb directory. (anderson@redhat.com)

  • 2014-05-28 Dave Anderson Fix for the "DEBUG KERNEL:" display in the initial system banner and by the "sys" command when using a System.map file with a Linux 3.0 and later debug kernel. Without the patch, the kernel version is not displayed in parentheses following the debug kernel name. (anderson@redhat.com)

  • 2014-05-28 Dave Anderson If the kernel (live or dumpfile) has the "kpatch" module installed, the tag "[KPATCH]" will be displayed next to the kernel name in the initial system banner and by the "sys" command. (anderson@redhat.com)

  • 2014-05-22 Dave Anderson Fix for displaying enum values that are greater than 32-bits in size. Without the patch, the upper 32-bits are clipped off and displayed as in integer-sized value. (anderson@redhat.com)

  • 2014-05-21 Dave Anderson Fix failure to build from source when compiling the crash utility with gcc-4.9. Without the patch, the crash utility build generates the following error:

  • 2014-05-20 Dave Anderson Fix for the "arguments-input-file" feature to protect against a called command modifying an argument string. For example, the "struct" command modifies "-l struct_name.member" argument strings, and so without the patch, all iterative calls after the first one will fail. (anderson@redhat.com)

  • 2014-05-19 Dave Anderson Implemented a new "ps -S" option that displays a summary consisting of the number of tasks in a task state. (anderson@redhat.com)

  • 2014-05-16 Dave Anderson Implemented a new "kmem -h" option that displays the address of each hugepage hstate array entry, its hugepage size, its free and total counts, and name string. (anderson@redhat.com)

  • 2014-05-09 Dave Anderson Implemented a new "runq -m" option that is a simliar, complementary option to "runq -t", but which displays the amount of time that the active task on each cpu has been running, expressed in a format consisting of days, hours, minutes, seconds and milliseconds. (anderson@redhat.com)

  • 2014-05-08 Dave Anderson Implemented a new "ps -m" option that is a similar, complementary option to "ps -l", but which translates the task timestamp value from a decimal or hexadecimal nanoseconds value into a more human-readable string consisting of the number of days, hours, minutes, seconds and milliseconds that have elapsed since the task started executing on a cpu. More accurately described, it is the time difference between the timestamp copied from the per-cpu runqueue clock when the task last started executing compared to the most current value of the per-cpu runqueue clock. (anderson@redhat.com, bud.brown@redhat.com)

  • 2014-05-05 Dave Anderson Fix fprintf warning in previous patch when building with "make [wW]arn".

  • 2014-05-05 Dave Anderson Implemented a new capability for the "ptov" command that takes a per-cpu offset and cpu specification argument and translates it into the kernel virtual addresses for the cpus specified. (anderson@redhat.com)

  • 2014-05-02 Dave Anderson Fix for the "p", "irq", "struct", "union" and "*" commands if a cpu specification contains an invalid cpu number. Without the patch, a segmentation violation may be generated. (anderson@redhat.com)

  • 2014-04-30 Dave Anderson Removed the BASELEVEL_REVISION string from defs.h, which serves no purpose since the deprecation of the remote daemon, and typically has been out of sync with the crash version. (anderson@redhat.com)

  • 2014-04-30 Dave Anderson Fix for the built-in "g" alias, which apparently has not worked correctly since crash-5.1.4. Without the patch, if the "g" alias and the first argument are separated by one space, then the first first character of that argument would get stripped prior to being passed to the embedded gdb module. (anderson@redhat.com)

  • 2014-04-30 Dave Anderson Fix for the X86_64 "bt" command on Linux 3.3 and later kernels to properly display exception frame register contents on NMI stacks. Kernel commit 3f3c8b8c4b2a34776c3470142a7c8baafcda6eb0 added 12 more values to the NMI exception stack to handle nested NMIs caused by page faults or breakpoints that could occur while handling an NMI exception. The fix has two parts:

  • 2014-04-29 Dave Anderson Fix for compiler warning on older gcc versions (4.1.2-42 and 4.4.6-4) introduced by previous "bt -c" patch:

  • 2014-04-28 Dave Anderson Fix for Linux 3.11 and later ARM kernels, in which all non-panicking cpus offline themselves during a kdump procedure. This causes an invalid cpu count determination during crash session initialization from an ARM vmcore. The patch utilizes the cpu count found in the cpu_active_map if it is greater than the count in the cpu_online_map. In addition, the maximum NR_CPUS value for the ARM architecture has been raised from 4 to 32. (sdu.liu@huawei.com)

  • 2014-04-28 Dave Anderson Implemented a new "bt -c cpu(s)" option to display the backtrace of the active task on one or more cpus. The cpus must be specified in a comma- and/or dash-separated list; for examples ""3", "1,8,9", "1-23", or "1,8,9-14". Similar to "bt -a", the option is only applicable with crash dumps. (atomlin@redhat.com)

  • 2014-04-23 Dave Anderson Linux 3.15 and later kernels configured with CONFIG_RANDOMIZE_BASE can be now be readily identified because of new kernel symbols that have been added. For those kernels, the new "--kaslr=<offset>" and/or "--kaslr=auto" options are not necessary for ELF or compressed kdump vmcores, or for live systems that have /proc/kallsyms showing the relocated symbol values. A new KASLR initialization function called kaslr_init() is now called by symtab_init() prior to the initial symbol-sorting operation. If kaslr_init() determines that KASLR may be in effect, it will trigger a search for the relevant vmlinux symbols during the sorting operation, which in turn will cause the relocation value to be automatically calculated. (anderson@redhat.com)

  • 2014-04-17 Dave Anderson Export the static ELF and compressed kdump vmcoreinfo_read_string() functions from netdump.c and kdump.c via a new read_vmcoreinfo() method in the global program_context structure. The function get_log_from_vmcoreinfo() will access vmcoreinfo data via the new pointer instead of requiring its callers to pass pointers to their dumpfile-specific function. (anderson@redhat.com)

7.0.6

  • 2014-04-15 Dave Anderson crash-7.0.5 -> crash-7.0.6

  • 2014-04-14 Dave Anderson Fix for ARM64 /proc/kcore support. Without the patch, the crash session fails with the warning message "WARNING: cannot read linux_banner string" followed by the fatal error message "crash: vmlinux and <dumpfile name> do not match!". At this point in time, the kernel requires a patch to the ARM64 kern_addr_valid() function to properly allow memory to be read from the kernel logical memory map region. (anderson@redhat.com)

  • 2014-04-14 Dave Anderson Fix for the ARM64 "vtop <address>" command on kernels configured with 64K pages if the address argument is located in the kernel logical memory map region, which uses 512MB hugepage mappings. Without the patch, the verbose page table walk mistakenly continues to the PTE level. (anderson@redhat.com)

  • 2014-04-11 Dave Anderson Fix for a segmentation violation generated by the "crash -g vmlinux" command on ARM64. (anderson@redhat.com)

  • 2014-04-08 Dave Anderson Increment maximum ARM64 physical address from 40 to 48 bits to match upstream kernel commit 87366d8cf7b3f6dc34633938aa8766e5a390ce33. (anderson@redhat.com)

  • 2014-04-08 Dave Anderson Fix for the "vm -p" option on ARM64 so that file-backed pages are properly translated to the filename and offset. Without the patch, file-backed pages are erroneously shown as being backed on a swap device. (anderson@redhat.com)

  • 2014-04-07 Dave Anderson Increase the ARM64 PTRS_PER_PGD_L2_64K from 1024 to 9182 to account for the Linux 3.13 increase of the ARM64 virtual address space size from 39 to 42 bits when 64K pages are configured. Without the patch, the warning message "WARNING: cannot access vmalloc'd module memory" is displayed during session initialization. (anderson@redhat.com)

  • 2014-04-04 Dave Anderson Implemented support for the ARM64 "bt -f" and "bt -F[F]" options. (anderson@redhat.com)

  • 2014-04-04 Dave Anderson Added support for the ARM64 architecture in the extensions/snap.c extension module. Also fixed the progress percentage display to correct for systems which have non-zero starting physical addresses. (anderson@redhat.com)

  • 2014-04-04 Dave Anderson Fix for the ARM64 virtual-to-physical translation of vmemmap page structure addresses for kernels configured with 4K pages. Without the patch, any command that required the contents of a page structure would fail with a readmem error. (cldu@marvell.com, anderson@redhat.com)

  • 2014-04-03 Dave Anderson Fix false-alarm warning from older compilers resulting from previous "bt -l" update:

  • 2014-04-03 Dave Anderson Update for the X86_64 "bt -l" option such that it also displays the available file and line number information for functions indicated as the "exception RIP" in kernel exception frames. The line number information will follow the exception frame register dump. (anderson@redhat.com)

  • 2014-04-03 Dave Anderson Implemented support for the ARM64 "bt -l" option. (anderson@redhat.com)

  • 2014-04-03 Dave Anderson Implemented support for the ARM64 "bt -e" option. (anderson@redhat.com)

  • 2014-04-02 Dave Anderson Cleaned up the exception frame displays of 64-bit in-kernel and both 32-bit and 64-bit user-mode exceptions. (anderson@redhat.com)

  • 2014-04-01 Dave Anderson Initial working implementation of the basic ARM64 "bt" command, with several command options still under development. In-kernel exception frames are only dumped if the exception handler function is contained within the symbol boundaries from "__exception_text_start" to "__exception_text_end"; when ARM64 kdump is eventually implemented, further exception-related work will be resumed. (anderson@redhat.com)

  • 2014-04-01 Dave Anderson Fix for KVM dumpfiles created with "virsh dump --memory-only" if an X86_64 kernel was loaded with a non-zero "phys_base". Without the patch, the crash session fails with the warning message "WARNING: cannot read linux_banner string" followed by the fatal error message "crash: vmlinux and <dumpfile name> do not match!". (anderson@redhat.com)

  • 2014-03-28 Dave Anderson Document the "--machdep phys_offset=<physical-address>" command line option for the ARM64 architecture in the crash.8 man page and the "crash -h" output. (anderson@redhat.com)

  • 2014-03-27 Dave Anderson Updated the ARM64 implementation to support Linux 3.13 and later kernels that expand to a 42-bit address space when 64K pages are configured. This is also the first crash version that has been tested on a live ARM64 system with 4K pages, where it cleanly make it to the "crash>" prompt. However, it should be noted that some commands (most notably "bt") still do not work as of yet. (anderson@redhat.com)

  • 2014-03-21 Dave Anderson If a host build system does not have /usr/bin/wget installed, and the crash package is built from a directory that was git-cloned from github.com/crash-utility/crash.git, the error message has been clarified to indicate "/usr/bin/wget is required to download gdb-7.6.tar.gz". Without the patch, the message indicates "tar (child): gdb-7.6.tar.gz: Cannot open: No such file or directory". (anderson@redhat.com)

  • 2014-03-20 Dave Anderson Correction for the "crash -h" and crash.8 man page documentation of the "--machdep phys_base=<physical-address>" command line option. In both places the parameter mistakenly indicated "physbase". (ptesarik@suse.cz)

  • 2014-03-18 Dave Anderson If the first assembly language instruction in an X86_64 function is "nopl 0x0(%rax,%rax,1)" or "data32 data32 data32 xchg %ax,%ax", which are generated when the ftrace facility is configured, the X86_64 "dis" command will append "[FTRACE NOP]" to the line. (anderson@redhat.com)

  • 2014-03-17 Dave Anderson Made the "kmem -f <address>" and "kmem <address>" options more efficient by using the new do_list() callback function feature as well as restricting the search to only the NUMA node that contains the address. (anderson@redhat.com)

  • 2014-03-17 Dave Anderson Created a new feature for the internal do_list() function if it is necessary to immediately perform a function for each entry in a list while the list is being traversed. A callback function, and an option callback data pointer, can be registered in the list_data structure. The address of each entry in the list along with the optional callback data pointer will be passed to the callback function. If desired, the callback function may also dictate that do_list() should stop the list traversal and return immediately to its caller. (anderson@redhat.com)

  • 2014-03-14 Dave Anderson Fix for the "kmem -F" display and the "kmem -f <page-address>" or "kmem <page-address> options. Without the patch, the first page in a list of free page blocks is not displayed on its own line by "kmem -F", but rather at the end of the line showing the area number, block size, and free_area struct address that the page is linked to. Due to this error, both "kmem <page-address>" and "kmem -f <page-address>" would not find a page if it happened to be the first page, or any of the contiguous pages in a multi-page block, in the list of free pages or page blocks. (anderson@redhat.com)

  • 2014-03-13 Dave Anderson Increase the internal hash queue head count from 128 to 32768. The hash queue is used for gathering and verifying lists, and the original count of 128 may be overwhelmed if a list is extremely large. For example, on a 256GB system with 192GB of free pages, the "kmem -f" command takes hours to complete; with this patch, the time is reduced to a few minutes. In addition, a new command line option "--hash <count>" has been added to allow a user to override the default hash queue head count of 32768. (anderson@redhat.com)

  • 2014-03-05 Dave Anderson Adjustment to the internal symbol-handling to prevent the usage of kernel system call alias/wrapper names, for examples, "SyS_read" and "compat_SyS_futex" instead of "sys_read" and "compat_sys_futex". Without the patch, commands such as "dis", "sym <address>", and "sys -c" display the alias/wrapper name instead of the real system call name in Linux 3.10 and later kernels. (anderson@redhat.com)

  • 2014-02-28 Dave Anderson Fix for the "crash --log vmcore" command to account for the kernel data structure and VMCOREINFO string name changes from "log" to "printk_log" in Linux 3.11-rc4 and later kernels. Without the patch, the command fails with the error message "crash: VMCOREINFO: no log buffer data". (anderson@redhat.com)

  • 2014-02-27 Dave Anderson Enable kernel text line number capability for the "dis -l", "bt -l", "sys -c", and "sym" commands for kernels that are configured with CONFIG_RANDOMIZE_BASE. (anderson@redhat.com)

  • 2014-02-25 Dave Anderson Added a new "--kaslr=auto" command line option for X86_64 kernels that that are configured with CONFIG_RANDOMIZE_BASE. When set to "auto", the KASLR relocation value will be determined automatically by comparing the "_stext" symbol value compiled into the vmlinux file with the _stext symbol value stored in kdump vmcoreinfo data; on live systems the comparison will be made with the "_stext" symbol value that is found in /proc/kallsyms. (ahonig@google.com, anderson@redhat.com)

  • 2014-02-21 Dave Anderson Added a new "--kaslr <offset>" command line option for X86 or X86_64 kernels that are configured with CONFIG_RANDOMIZE_BASE. The offset value must be equal to the difference between the symbol values compiled into the vmlinux file and their relocated value. (ahonig@google.com, anderson@redhat.com)

  • 2014-02-20 Dave Anderson Fix to prevent a possible invocation-time error on Linux 3.7 and later kernels configured with CONFIG_SLAB, running against vmcore files filtered with the makedumpfile(8) facility. Without the patch, the message "crash: page excluded: kernel virtual address: <address> type: kmem_cache buffer" is immediately followed by the message "crash: unable to initialize kmem slab cache subsystem". Because of a kernel data structure name change from "cache_cache" to "kmem_cache_boot", the crash utility failed to properly downsize the stored size of the kernel's kmem_cache data structure from the size indicated by the vmlinux debuginfo data. This in turn could lead to reading beyond the end of a kmem_cache data structure into a page of memory that had been excluded from the vmcore. The fix was also applied to kernels configured with CONFIG_SLUB. (anderson@redhat.com)

  • 2014-02-20 Dave Anderson Fix for custom X86_64 kernels that change the declaration of the context_switch() function so that it is not an inline function. Without the patch, the message "crash: cannot determine thread return address" is displayed during invocation, and backtraces of blocked tasks may have missing or invalid frames. (ahonig@google.com)

crash-7.0.5

  • 2014-02-14 Dave Anderson crash-7.0.4 -> crash-7.0.5

  • 2014-02-12 Dave Anderson Fix for the X86_64 "bt" command if an async page fault exception occurred in a KVM guest running a Linux 2.6.38 or later kernel. Without the patch, the exception frame register dump is not displayed above the "async_page_fault" stack frame. (anderson@redhat.com)

  • 2014-02-06 Dave Anderson Update crash banner copyright to 2014 (anderson@redhat.com)

  • 2014-01-31 Dave Anderson Reduce the number of CTRL-c entries required to unconditionally terminate any manually-entered command from three to one. (anderson@redhat.com)

  • 2014-01-29 Dave Anderson When invoking a crash session with a compressed vmlinux file, make the same host-machine/vmlinux endian verification that is done with uncompressed vmlinx files. (anderson@redhat.com)

  • 2014-01-29 Dave Anderson Fix for the X86_64 "bt" command if a page fault exception was generated by the invalid contents of the RIP register. Without the patch, the exception frame register dump is not displayed above the "page_fault" stack frame; and in a related issue, the "bt -e" option will not find and display the exception frame. (anderson@redhat.com)

  • 2014-01-29 Dave Anderson Enhancement of the X86_64 "bt" command to more correctly determine the function frame that called into a function that was interrupted. Without the patch, the first frame just above an IRQ exception frame register dump may show an invalid/stale function. (anderson@redhat.com)

  • 2014-01-29 Dave Anderson Fix for the X86_64 "bt" command to prevent an unwarranted message indicating "WARNING: possibly bogus exception frame" generated from a task that was in the process of being exec'd from a kernel thread via the call_usermodehelper() facility. (anderson@redhat.com)

  • 2014-01-29 Dave Anderson Create a new memory display format for an address that comes from a slab object, consisting of the slab cache name and the address value, separated by a colon, and encompassed in brackets:

  • 2014-01-29 Dave Anderson When executing the commands from an input file specified by the "-i <file>" command line option, or when accepting input from a file as a set of commands or as a set of command arguments using the "<" redirection character, unconditionally cease the operation if CTRL-c is entered. Without the patch, depending upon the command that was running when the SIGINT was received, the operation may continue uninterruptibly until the file contents are consumed. (anderson@redhat.com)

  • 2014-01-29 Dave Anderson Fix for the "kmem -S" command for kernels that are configured with CONFIG_SLUB. Eash per-cpu slab object dump may show incorrect ALLOCATED and FREE values; and as seen on Linux 3.5 and later kernels, the TOTAL value and the number of individual objects dumped may also be incorrect (too small). (anderson@redhat.com) Please enter the c mmit message for your changes. Lines starting

  • 2014-01-29 Dave Anderson Fix for the "kmem -S" command on Linux 3.1 and later kernels that are configured with CONFIG_SLUB. Because the the page structure's inuse and objects fields used by SLUB were changed from discrete u16 types to bit-fields within an unsigned int, the display of per-node partial slab statistics are incorrect. Without the patch, the TOTAL and ALLOCATED values are incorrectly shown as equal values, and therefore the FREE value is always zero. (anderson@redhat.com)

  • 2014-01-29 Dave Anderson Add support for Xen PVH guest types introduced in Xen 4.4. Without the patch, running against a Xen 4.4 hypervisor binary would fail during session initialization with the error message "crash: invalid structure member offset: domain_is_hvm". In addition, the PVH guest type is being registered internally as an HVM guest type, the debug "help -X ofs" command's display of the domain_domain_flags offset has been fixed to show it in decimal, and the setting of the internal dc->domain_flags has been fixed to contain all flags set, not just the first one found. (dslutz@verizon.com)

  • 2014-01-29 Dave Anderson Fix for the "runq -g" option for kernels that are configured with CONFIG_FAIR_GROUP_SCHED, but not CONFIG_CFS_BANDWIDTH. Without the patch, the command fails with the message "runq: invalid structure member offset: cfs_rq_throttled". (vinayakm.list@gmail.com)

crash-7.0.4

  • 2014-01-28 Dave Anderson Initial commit: crash-7.0.4