This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

systemtap 4.2 release


The SystemTap team announces release 4.2!

support for generating backtraces of different contexts; improved backtrace
tapset to include file names and line numbers; eBPF support extensions
including raw tracepoint access, prometheus exporter, procfs probes and
improved looping structures

= Where to get it

  https://sourceware.org/systemtap/ - Project Page
  https://sourceware.org/systemtap/ftp/releases/
  https://koji.fedoraproject.org/koji/packageinfo?packageID=615
  git tag release-4.2 (commit 044a0640985ef0)

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

= SystemTap frontend (stap) changes

- When the -v option is set along with -L option, the output includes
  duplicate probe points which are distinguished by their PC address.

- Now it is possible to issue a backtrace using user specified pc, sp,
  and fp which can be used to generate backtraces of different contexts.
  This was introduced to get backtraces of user code from within the go
  runtime but it can also be used to do things like generating backtraces
  of user code from within signal handlers.

- The automatic printing implementation now differentiates between
  pointer and integer types, which are printed as hex or decimal
  respectively.

= SystemTap backend changes

- Initial support for multi-dimensional supports has been added to
  the stapbpf backend. Note that these arrays cannot be iterated upon
  with a foreach loop.

- The stapbpf backend now supports sorting by value in foreach loops.

- The stapbpf backend now supports the concatenation operator for
  userspace probes.

- The stapbpf backend now supports the target() function and -x option.

- The gettimeofday_* functions are now provided for the stapbpf backend.

- The stapbpf backend now supports order parameterization for begin
  and end probes.

- The stapbpf backend now supports stap-exporter extensions.

- The stapbpf backend now supports procfs probes. The implementation
  uses FIFO special files in /var/tmp/systemtap-$EFFUSER/MODNAME instead
  of the proc filesystem files.

- The eBPF backend now uses bpf raw tracepoints for kernel.trace("*")
  probes.  These have target variable arguments that match the
  arguments available for the traditional linux kernel modules
  tracepoints.  Support for the older bpf tracepoint arguments can be
  forced with a --compatible=4.1 option on the command line.

- The compiler optimizes out probes with empty handlers. Previously,
  warnings were issued but, the probe was not internally removed. For
  example, this script now outputs a warning and an error as the only
  probe handler is empty:

      probe begin {}

  Additionally, probe handlers that evaluate to empty are also removed.
  For example, in this script, the begin probe is elided as $foo does
  not exist, however, an error won't be outputted because atleast one
  probe with a non-empty handler exists (probe begin):

      probe begin {
          print("Protected from elision")
      }

      probe end {
          if (@defined($foo)) { print("Evaluates to empty handler") }
      }

- The sys/sdt.h file changes the way i386 registers operands are
  sometimes named, due to an ambiguity.  A comment block explains.

= SystemTap tapset changes

- New backtracing functions print_[u]backtrace_fileline() have been added
  to the tapset. These functions behave similarly to print_[u]backtrace(),
  the only difference being that file names and line numbers are added
  to the backtrace.

= SystemTap sample scripts

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

- Several sample scripts have been enabled to run on the stapbpf backend:

apps/libguestfs_log.stp
network/sk_stream_wait_memory.stp
memory/mmfilepage.meta
memory/mmwriteback.meta
general/ansi_colors.meta

- New stap-exporter sample script for the stapbpf backend:

syscallsrw.stp    Tallies the read and write syscalls.

= Examples of tested kernel versions

2.6.32 (RHEL6 x86_64)
4.15.0 (Ubuntu 18.04 x86_64)
4.18.0 (RHEL8 x86_64, aarch64, ppc64le, s390x)
5.0.7  (Fedora 29 x86_64)
5.3.8  (Fedora 30 i686)
5.3.9  (Fedora 31 x86_64)
5.4.0-rc  (Fedora 32 x86_64)

= Known issues with this release

- The array dump macros which are used with prometheus probes do not
entirely
  work with stapbpf as the macros use foreach loops which cannot be used
with
  multi-dimensional arrays yet.

- The user_string() function in the BPF tapsets uses the BPF
probe_read_str()
  helper, which only works correctly when there is no address translation
  between user and kernel address spaces. It has been restricted to x86_64
  only until the BPF infrastructure provides separate helpers for reading
user
  and kernel data.

= Coming soon

- More stapbpf functionality including full statistics aggregate support
and
  try-catch blocks.

= Contributors for this release

*Carlos O'Donell, Frank Ch. Eigler, Jafeer Uddin,
*Richard Purdie, Ross Burton, *Sagar Patel, Serhei Makarov
Stan Cox, *Wenzong Fan, William Cohen

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

Special thanks to Sagar for assembling these notes.

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

9922    need to configure with --disable-pie on ubuntu
25174   string auto-concat doesn't work in @var / @cast module parameter
25169   strcpy overlap between transport arg and string on-stack
25133   stapbpf foreach loop crashing
24953   foreach (v = v1,v2) syntax not behaving correctly in stapbpf
24812   stapbpf: support order-parametrized begin/end probes
25113   Explanation and "code" mismatch in section ⁠2.3.1.2. File Flight
Recorder
25107   need -L variant that doesn't merge duplicate probe points
23285   stapbpf procfs probes
24946   printing hex sequences causes crash
24947   valid hex and octal sequences not checked for
24926   non-ascii characters not printing on stapbpf
24934   stapbpf stack-smash on EXIT message processing
23879   print_ubacktrace can not print function name
24875   VMA tracker is broken on Fedora 29
24904   stack_trace struct undefined on kernel 5.2
23858   sorted iteration on bpf arrays can't sort values
24885   add test_{,install}check_dyninst tag to check.exp
23866   dissonance between kernel tracepoint parametrization, lkm vs bpf
24811   stapbpf segfault: nested foreach loops can corrupt sorted key data
when limit==0
11353   elide side-effect-free probes
24528   stapbpf-next housekeeping: bpf-translate.cxx should distinguish
codegen for kernel/userspace targets
24543   stapbpf breaks when cpu0 is disabled
12025   Have appropriate selection of hex and decimal formatted output for
automatic output
24639   "next" statement not recognized by stap bpf backend
24343   Some syscall.*.return missing name and retstr variables


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]