SystemTap release 4.9

From: Frank Ch. Eigler
Date: Fri Apr 28 2023 - 18:34:20 EST


The SystemTap team announces release 4.9

Enhancements to this release include: Jupyter web-based interactive
frontend, language-server-protocol backend


= Where to get it

https://sourceware.org/systemtap/ - our project page
https://sourceware.org/systemtap/ftp/releases/
https://koji.fedoraproject.org/koji/packageinfo?packageID=615
git tag release-4.9 (commit ebb424eee5599fc)

There have been over 70 commits since the last release.
There have been 10 bugs fixed / features added since the last release.


= SystemTap backend changes

* Corrected handling of DWARF5 implicit-pointer and entry-value data
and bit-fields.

* Corrected accidental runtime double-hit of some types of synthetic
probes.

* Improved kernel backtrace repeated artifacts.


= SystemTap frontend (stap) changes

* Added a Jupyter based front-end to stap. This may be invoked via a
container - or built locally (likely via pip3 downloads). The user
interface becomes an interactive notebook in a web browser. See the
"stap-jupyter" man page.

* Added a "--language-server" option to stap, which switches it into
an LSP server on stdin/stdout. This allows users of a variety of
editors to trigger symbol-completions and similar operations in
context. This code includes a small reusable jsonrpc server library
implementation in C++.

* Improved documentation generation scripts, so the website doc
snapshots can be fresher.

* Improved deterministic buildability of dtrace-flavoured .h/.c file
generation.

* Temporarily disabled $context-variable liveness safety checks on
retpoline kernels.


= SystemTap tapset changes

* Python3 version range compatibility much improved.

* Updated for NFS, VFS and other kernel changes.

* Updated system call name tables.


= SystemTap sample scripts

* All 180+ examples can be found at https://sourceware.org/systemtap/examples/

* The new Jupyter front-end includes a default notebook that includes
several scripts and fragments, equipped with webby eyecandy!

* The livepatch.stp sample script for CVE band-aids is better
documented.


= Examples of tested kernel versions

3.10.0 (RHEL7)
4.18.0 (RHEL8 + CentOS Stream 8 x86_64, aarch64, ppc64le, s390x)
5.14.0 (RHEL9 + CentOS Stream 9 x86_64, aarch64, ppc64le, s390x)
5.19.16 (Fedora 36 x86_64)
6.2.11 (Fedora 37 x86_64)
6.3.0-rc (Fedora rawhide x86_64)


= Known issues with this release

- There are intermittent buffer transmission failures for high-trace-rate
scripts. Bulk mode (stap -b) helps. (see PR29108)

- There are known issues on kernel 5.10+ after adapting to set_fs()
removal, with some memory accesses that previously returned valid data
instead returning -EFAULT. (see PR26811)


= Contributors for this release

Aaron Merey, Frank Ch. Eigler, *Gioele Barabucci, Mark Wielaard,
Martin Cermak, Ryan Goldberg, Serhei Makarov, Stan Cox, William Cohen

Special thanks to new contributors, marked with '*' above.


= Bugs fixed for this release <https://sourceware.org/PR#####>

29801 --monitor mode gets 2 hits to procfs("monitor_control").write for every 1 write
29838 DWARF5 DW_OP_implicit_pointer and DW_OP_entry_value unhandled
29676 wildcard function/symbol expansion inconsistent in debuginfo vs nondebuginfo cases
29837 kernel build compiler warning makes testsuite fail
29832 probe python.function.entry does not get hits (while .return does)
29766 kernel.function("__set_page_dirty_buffers") not found in tapset/linux/vfs.stp
29037 Systemtap unable to find struct bitfield members for gcc11 compiled code
30123 bitfield.exp fails with fresh kernels
29824 BUG: using smp_processor_id() in preemptible [00000000] code: stapio/58567
30372 dyninst liveness analysis with retpoline kernels slow
30396 kernel 6.3.* objtool/ibt warnings during pass 4