systemtap release 5.1

From: Frank Ch. Eigler
Date: Fri Apr 26 2024 - 19:34:16 EST



The SystemTap team announces release 5.1

An experimental "--build-as=USER" flag to reduce privilege during
script compilation. Dynamic namespace switching for processes
targeted via "-x PID", for probing containerized processes. New
probe points for userland hardware breakpoints/watchpoints. Support
for --remote=bpf operation. Improved message transport robustness.

= 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-5.1 (commit 3a0c9c15163)

There have been over 110 commits since the last release.
There have been over 40 bugs fixed / features added since the last release.

= SystemTap frontend (stap) changes

- An experimental "--build-as=USER" flag to reduce privilege during
script compilation, which is a security improvement effort.

- New probe-points for userland hardware breakpoints/watchpoints
targeting processes (PR31180):
probe process.data(ADDRESS).write
probe process.data(ADDRESS).rw
probe process.data(ADDRESS).length(LEN).write
probe process.data(ADDRESS).length(LEN).rw

- Support for stap --remote=bpf.

- Improved searching heuristics for probing symbol names with/without
symbol-version suffixes and with/without weak names.

- Made long-running debuginfod downloads more cleanly interruptible.

- Improved stap-prep heuristics for finding debuginfo for "-rt"
(real-time) kernels.

= SystemTap backend changes

- Dynamic namespace switching for processes targeted via "-x PID",
allowing processes running within containers to be probed.

- Improved message transport robustness for heavy traffic (individual
messages spanning pages) and for short runs (avoiding loss of
last-gasp messages).

- Added MTAG macro on several internal memory allocation routines
to improve leak warnings. Corrected a bunch of leaks.

- "stap -t" now reports module initialization timings too.

- Ported runtime for GCC14 compatibility, with its more recent C
dialect warnings.

- Support for DW_OP_bra in DWARF location lists, which makes a few
more $context variables accessible to systemtap.

= SystemTap tapset changes

- Portability fixes for more recent kernels, as always.

- set_kernel_string* tapset functions improved range checking.

- print_ubacktrace_fileline() works with PIE binaries.

- Many portability improvements and some fixes in the testsuite.

- Enhancements for the tcp, nfs, memory tapsets.

= SystemTap sample scripts

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

= 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)
6.4.15 (Fedora 38 x86_64)
6.8.7 (Fedora 39 x86_64)
6.9.0-rc (Fedora rawhide x86_64)

= Contributors for this release

Aaron Merey, Carl Shapiro*, Di Chen, Frank Ch. Eigler, Martin Cermak,
Sergei Trofimovich, Tim Haines*, Victor Kamensky, William Cohen,
Xinhua Li*, Yichun Zhang (agentzh)

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

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

31020 Use of symlinks in probe process(PATH).* would confuse task finder when matching procname
31014 Uprobes registered in task finder would block the target processes for long time
31051 Error handling is incomplete in the early uprobe registration code
31052 enabling -DDEBUG_MEMALLOC_MIGHT_SLEEP results in a lot of kernel errors
31053 The stap runtime's allocator might sleep in atomic contexts
31054 non-system-wide perf event probes should not use work queues for registration
31024 uprobes might work on the fake proxy inodes instead of the real inodes when overlay fs is used
31074 On aarch64 the systemtap.base/set_kernel.stp triggers "Unable to handle kernel paging request"
30999 _kretprobe_data needs to be adjusted to support changes in the kernel's struct kretprobe_instance
18320 ring_buffer.exp error: implicit declaration of function '__get_cpu_var'
27803 doc/SystemTap_Tapset_Reference/tapsets.pdf is removed during cleaning but not rebuilt
31039 implicit declaration of function ‘stap_task_finder_complete’
31176 Spin lock deadlocks in memory pool allocations for mixed NMI and non-NMI contexts
31180 Feature request: new probe process.data(ADDR).* probe-points
31060 Early uprobe registration and task-finder target executable path resolving should switch mount namespace to the target process's
31215 @__compat_task misbehaves on RHEL9 x86_64
31235 systemtap ../configure --with-dyninst=<path> doesn't propagate <path>
31242 Support namespaced include directories in Dyninst
31280 add configury option to disable -Werror
26843 print_ubacktrace_fileline() fails with PIE binaries
31288 5.0: build fails with gcc 14x
31309 Recent PIE binary support cause fileline-profile.stp example to crash the machine
29997 search elf symbol table for aliases (fopen -> _IO_new_fopen)
31373 Allow systemtap to work on kernels without strlcpy (removed in the linux-6.8.0-rc3 kernels)
18851 new --interactive mode
19360 Verify that examples and tapsets with return probes use @entry for function arguments
31274 Unsatisfied references to _stp_module_0_debug_line_str
26811 adapt to kernel 5.10 set_fs() removal
31404 Systemtap unable to find kernel.trace("*") probe points on Fedora rawhide Linux 6.8 kernels
31368 make debuginfod downloads interruptible
31117 transport failures
30716 On x86_64 get objtool warnings: call to __get_user_nocheck_1() with UACCESS enabled
31490 add some tcp.stp tapset extensions
31491 support --remote=bpf
31495 stap-prep support for kernel-rt
31472 systemtap.base/tracepoints.stp causes reboot with RHEL9 linux 5.14.0-428.el9.x86_64
31519 sys/sdt.h causes compiler warnings when compiling with C++
31525 some smp_processor_id warnings during make installcheck
31500 stapio exited with irqs disabled
31616 Fix git_pretty_rev error,git_build checks in git_version.sh
31496 support DW_OP_bra (conditional branches) in dwarf location lists
31597 Systemtap not extracting all the data sent to the print data in the buffers before shutdown