Skip to content

drgn 0.0.27

Compare
Choose a tag to compare
@osandov osandov released this 01 Jul 18:41
· 143 commits to main since this release

This release adds a few helpers, more pluggability for finding types, objects, and symbols, lots of new or improved scripts in contrib, and other improvements and bug fixes.

New features:

  • The print_annotated_memory() helper was added to drgn.helpers.common.memory. It dumps a region of memory and annotates values that can be identified.
  • The identify_address() helper in drgn.helpers.common.memory can now identify Linux kernel vmap addresses and vmap kernel stacks.
  • The member_at_offset() helper was added to drgn.helpers.common.type. It returns the name of the member at an offset in a type.
  • The bdev_partno() helper was added to drgn.helpers.linux.block. It returns the partition number of a block device.
  • More flexible APIs for naming, reordering, and disabling type and object finders were added.
  • An API for registering custom symbol finders was added. Contributed by Stephen Brennan.
  • Support for Linux 6.9 and 6.10 was added.
    • The drgn.helpers.linux.stackdepot.stack_depot_fetch() helper was updated for Linux 6.9 (and 6.8.5).
    • The drgn.helpers.linux.block.for_each_disk() and drgn.helpers.linux.mm.PageSlab() helpers were updated for Linux 6.10.
  • The VMCOREINFO metadata for a kernel core dump can now be manually overridden through the Python API or the CLI. Contributed by Stephen Brennan.
  • x86-64 kernel core dumps without virtual memory information can now be read. Contributed by Stephen Brennan and Illia Ostapyshyn.
  • RISC-V kdump-compressed core dumps are now recognized as RISC-V when compiled with libkdumpfile 0.5.4 or newer. Contributed by Stephen Brennan.

Bug fixes:

  • A case where drgn would fail to get the value of a local variable in an inlined function (usually when it had been spilled to the stack) was fixed.
  • Stack traces from kernel core dumps with missing (offline or unresponsive) CPUs were fixed.
  • Missing exception throws were added for some internal allocation failure checks in the drgn Python bindings.

contrib directory:

  • contrib/search_kernel_memory.py was added. It searches all of kernel RAM for a given byte string.
  • contrib/gcore.py was added. It can extract a core dump of a running process without stopping it, or of a process from a kernel core dump.
  • contrib/btrfs_tree.py was substantially improved with new helpers and support for almost all Btrfs item types.
  • contrib/negdentdelete.py was added. It frees negative dentries. Contributed by Stephen Brennan.
  • contrib/bpf_inspect.py was updated to work on Linux 6.4 and later, gained a new command to list BPF links, gained an interactive mode, and added more detailed information. Contributed by Leon Hwang.
  • contrib/irq.py was updated to work on Linux 6.5 and later. Contributed by Imran Khan.
  • contrib/lsmod.py was updated to work on Linux 6.4 and later.

Internal:

  • libdrgn's internal hash table implementation was optimized to use slightly less memory.
  • Unit tests were added for a lot of libdrgn internals.
  • Stephen Brennan fixed an issue with builds for free-threaded Python.
  • Michel Lind enabled Packit builds for CentOS Stream 9.