0.0.32 (Released June 18th, 2025)¶
These are some of the highlights of drgn 0.0.32. See the GitHub release for the full release notes, including more improvements and bug fixes.
MiniDebugInfo Symbol Support¶
Stephen Brennan added support for MiniDebugInfo, a format providing additional, compressed symbols for stack traces used in Fedora Linux and its derivatives. Support for this feature requires liblzma.
Page Pool Helper and Leak Scripts¶
Dragos Tatulea contributed the is_pp_page()
helper for identifying page pool pages, as well as contrib/pp_leak
containing scripts from his talk
at Netdev 0x19.
Timekeeping Helpers¶
This release adds drgn.helpers.linux.timekeeping
containing helpers for
getting various timestamps in seconds:
>>> ktime_get_seconds()
(time64_t)1586340
>>> ktime_get_real_seconds()
(time64_t)1750283629
>>> ktime_get_boottime_seconds()
(time64_t)3625799
>>> ktime_get_clocktai_seconds()
(time64_t)1750283674
and nanoseconds:
>>> ktime_get_coarse_ns()
(u64)1586359078118365
>>> ktime_get_coarse_real_ns()
(u64)1750283652394676256
>>> ktime_get_coarse_boottime_ns()
(u64)3625825587469558
>>> ktime_get_coarse_clocktai_ns()
(u64)1750283701569703118
There are also shortcuts for getting the system uptime:
>>> uptime()
3625837.988496921
>>> uptime_pretty()
'5 weeks, 6 days, 23 hours, 10 minutes, 42 seconds'
Note that these helpers have a maximum granularity of one tick (~1-10 ms) and can race with timekeeping updates for an error of up to 1 second.
CPU Mask Weight Helpers¶
This release adds helpers for getting the number of CPUs to
drgn.helpers.linux.cpumask
:
>>> num_online_cpus()
8
>>> num_possible_cpus()
8
>>> num_present_cpus()
8
Relative Paths for --debug-directory
¶
The --debug-directory
command line option (and the underlying
drgn.DebugInfoOptions.directories
setting) now supports relative paths.
Previously, a relative path was used for searches by debug link. That has been
split into a separate option, --debug-link-directory
(drgn.DebugInfoOptions.debug_link_directories
). This is a breaking
change that was deemed necessary to fix the previous surprising behavior.
Bug Fixes¶
The following bugs were fixed in this release:
Symbols from data sections in Linux kernel loadable modules could previously not be found since Linux 6.4.
If a partial ELF symbol table (i.e.,
.dynsym
) was found, then later a full ELF symbol table (i.e.,.symtab
) was found, then the latter was supposed to override the former, but previously it wouldn’t.Stack unwinding through Linux kernel modules using ORC would previously fail when the
--main-symbols
command line option was used. Fixed by Stephen Brennan.
Linux 6.16 Support¶
No drgn changes were required to support Linux 6.16 as of rc2.
Last Release With Python 3.6 & 3.7 Support¶
This will be the last release of drgn with support for Python 3.6 and 3.7. Both versions have been EOL for awhile, and the maintenance burden has become unsustainable. See here for the announcement. Python 3.8 support will probably follow suit soon.
(drgn 0.0.31 was intended to be the last release to support Python 3.6 and 3.7, but it was postponed by one release.)