docs: add 0.0.26 release highlights

Signed-off-by: Omar Sandoval <osandov@osandov.com>
This commit is contained in:
Omar Sandoval 2024-03-11 16:20:34 -07:00
parent 45f7f6dce1
commit 1515b4a3b7
2 changed files with 101 additions and 0 deletions

View File

@ -6,6 +6,7 @@ from the full `release notes <https://github.com/osandov/drgn/releases>`_.
.. toctree::
release_highlights/0.0.26.rst
release_highlights/0.0.25.rst
release_highlights/0.0.24.rst
release_highlights/0.0.23.rst

View File

@ -0,0 +1,100 @@
0.0.26 (Released March 11th, 2024)
====================================
These are some of the highlights of drgn 0.0.26. See the `GitHub release
<https://github.com/osandov/drgn/releases/tag/v0.0.26>`_ for the full release
notes, including more improvements and bug fixes.
.. highlight:: pycon
Miscellaneous Helpers
---------------------
This release added several new Linux kernel helpers with no particular theme:
- :func:`~drgn.helpers.linux.printk.print_dmesg()`, a shortcut for printing the
kernel log buffer.
- :func:`~drgn.helpers.linux.idr.idr_for_each_entry()`, a shortcut for
iterating over an IDR and casting its entries to a specific type.
- :func:`~drgn.helpers.linux.stackdepot.stack_depot_fetch()` for getting stack
traces from the storage used by KASAN and other kernel debugging tools. This
was contributed by Peter Collingbourne.
- :func:`~drgn.helpers.linux.plist.plist_head_empty()`,
:func:`~drgn.helpers.linux.plist.plist_node_empty()`,
:func:`~drgn.helpers.linux.plist.plist_first_entry()`,
:func:`~drgn.helpers.linux.plist.plist_last_entry()`,
:func:`~drgn.helpers.linux.plist.plist_for_each()`, and
:func:`~drgn.helpers.linux.plist.plist_for_each_entry()`, helpers for working
with the kernel's priority-sorted lists.
``fsrefs.py`` Tool
------------------
The ``fsrefs.py`` tool was added to the ``tools`` directory. It prints
information about everything that is referencing a file or filesystem. This is
similar to :manpage:`fuser(1)` and :manpage:`lsof(8)`, but it can find more
since it has access to kernel internals.
.. code-block:: console
$ ./tools/fsrefs.py --inode /dev/urandom
pid 1349 (bluetoothd) fd 16 (struct file *)0xffff8881458cf000
pid 1368 (udisksd) fd 15 (struct file *)0xffff888145c13100
...
$ ./tools/fsrefs.py --super-block /run
mount /run (struct mount *)0xffff8881015cc140
pid 1 (systemd) fd 256 (struct file *)0xffff8881012f3d00 /run/initctl
pid 1 (systemd) fd 380 (struct file *)0xffff88810bf88800 /run/dmeventd-server
pid 1 (systemd) fd 385 (struct file *)0xffff88810bf88f00 /run/dmeventd-client
mount /run (mount namespace 4026532545) (struct mount *)0xffff8881474028c0
pid 2135770 (systemd-journal) vma 0x7f7d94f2a000-0x7f7d94f2b000 (struct file *)0xffff88813925bf00 /run/systemd/journal/kernel-seqnum
pid 2135770 (systemd-journal) vma 0x7f7d94f2b000-0x7f7d94f2c000 (struct file *)0xffff88813925a100 /run/systemd/journal/seqnum
...
``fsrefs.py`` currently checks:
- File descriptors
- Task working directories
- Task root directories
- Memory mappings
- Filesystem mounts
- `binfmt_misc <https://docs.kernel.org/admin-guide/binfmt-misc.html>`_
- :manpage:`loop(4)` devices
- Swap files
- `uprobes <https://docs.kernel.org/trace/uprobetracer.html>`_
It will be extended to check more as the need arises, so feel free to report
anything it missed.
(Note that as opposed to the ``contrib`` directory, scripts in the ``tools``
directory are regularly maintained and tested.)
DWARF Package Files
-------------------
drgn now supports split DWARF package (.dwp) files. These are generated by the
``dwp`` and ``llvm-dwp`` tools.
Linux 6.8 Support
-----------------
Linux 6.8 changed some filesystem internals in a way that broke a couple of
drgn helpers. Here are some errors you might see with older versions of drgn
that are fixed in this release.
From :func:`~drgn.helpers.linux.fs.path_lookup()` or
:func:`~drgn.helpers.linux.fs.for_each_mount()` (fixed by Johannes Thumshirn)::
AttributeError: 'struct mnt_namespace' has no member 'list'
From :func:`~drgn.helpers.linux.fs.path_lookup()`::
AttributeError: 'struct dentry' has no member 'd_subdirs'
Python 3.13 Support
-------------------
Python 3.13, currently in alpha, removed or changed some private APIs
(``_PyDict_GetItemIdWithError()``, ``_PyDict_SetItemId()``, and
``_PyLong_AsByteArray()``) that drgn depended on, which caused build failures.
This was fixed by using public APIs instead.