drgn 0.0.27
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 todrgn.helpers.common.memory
. It dumps a region of memory and annotates values that can be identified. - The
identify_address()
helper indrgn.helpers.common.memory
can now identify Linux kernel vmap addresses and vmap kernel stacks. - The
member_at_offset()
helper was added todrgn.helpers.common.type
. It returns the name of the member at an offset in a type. - The
bdev_partno()
helper was added todrgn.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()
anddrgn.helpers.linux.mm.PageSlab()
helpers were updated for Linux 6.10.
- The
- 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.