The SystemTap team announces release 3.2! Highlights include an early experimental eBPF (extended Berkeley Packet Filter) backend, new regex engine that supports extraction of matched expressions, new probe aliases for accepting input from stdin, improved translator diagnostics, support for new statx syscall and new string function strpos().
= Where to get it https://sourceware.org/systemtap/ - our project page https://sourceware.org/systemtap/ftp/releases/systemtap-3.2.tar.gz https://koji.fedoraproject.org/koji/packageinfo?packageID=615 git tag release-3.2 (commit 4051c70c9318c837) There have been over 330 commits since the last release. There have been over 50 bugs fixed / features added since the last release. = How to build it See the README and NEWS files at https://sourceware.org/git/?p=systemtap.git;a=tree Further information at https://sourceware.org/systemtap/wiki/ = SystemTap frontend (stap) changes - SystemTap now includes an eBPF backend. This early experimental backend does not use kernel modules and instead produces eBPF programs that are verified by the kernel and executed by an in-kernel virtual machine. Select this backend with the new stap option '--runtime=bpf'. For example: stap --runtime=bpf -e \ 'probe kernel.function("sys_read") { printf("Hi from stapbpf!\n"); exit() }' Please see the stapbpf(8) man page for more information. - "stap -k" build trees in $TMPDIR now also include a preprocessed .i form of the generated module .c code, for problem diagnostics purposes. - The translator produces better diagnostics for common/annoying case of missing debuginfo that blocks use of context $variables. = SystemTap tapset changes - The regular expression engine now supports extraction of the matched string and subexpressions using the matched() tapset function: if ("regexculpicator" =~ "reg(ex.*p).*r") log(matched(1)) -> exculp - New probe aliases input.char and input.line allow scripts to access input from stdin during runtime. - Support for multiple procfs.write probes per procfs file. - A new function strpos returns the location of a substring within another string. - Support for new statx syscall. - syscall.execve probes now provide a decoded env_str string vector, just like the argument vector. - The task_exe_file() function has been deprecated and replaced by current_exe_file(). - task_dentry_path() now handles chroot(). = SystemTap sample scripts All 169 examples can be found at https://sourceware.org/systemtap/examples/ - New Samples: hugepage_split.stp Log the kernel splitting huge pages in normal pages hugepage_cow_delays.stp Summarize time doing copy on write for huge pages hugepage_collapse.stp Log the kernel collapsing normal pages into huge pages hugepage_clear_delays.stp Summarize time spent clearing huge pages eventcount.stp Counts specified events. Updated with sort parameters that can be modified at runtime. cve-2017-6074.stp historical emergency security band-aid, for reference/education only = Examples of tested kernel versions 2.6.18 (RHEL 5 x86 and x86_64) 2.6.32 (RHEL 6 x86 and x86_64) 3.10.0 (RHEL 7 x86_64) 4.11.4 (Fedora 25 x86_64) 4.12.0 (Fedora 26 x86_64) 4.13.5 (Fedora 26 x86_64) 4.14.0-rc4 (Fedora rawhide x86_64) = Known issues with this release - The BPF backend is in an early stage of development and lacks support for a number of features found in the default backend. See the stapbpf man page for more information. - Some kernel crashes continue to be reported when a script probes broad kernel function wildcards. (PR2725) - An upstream kernel commit #2062afb4f804a put "-fno-var-tracking-assignments" into KCFLAGS, reducing debuginfo quality which can cause debuginfo failures. A proposed workaround to this issue exists in: https://lkml.org/lkml/2014/11/21/505 . Fedora kernels are not affected by this issue. = Contributors for this release Aaron Merey*, Arjun Shankar*, Bernhard M. Wiedemann*, Cody Santing, Daan Spitz*, David Smith, Frank Ch. Eigler, Guilherme G. Piccoli*, Jakub Jelinek*, Mark Wielaard, Martin Cermak, Mikael Dubik*, Richard Fontana*, Richard Henderson*, Ritesh Raj Sarraf*, Ruslan Kuprieiev*, Sandipan Das*, Saul Wold*, Serhei Makarov, Stan Cox, Tetsuo Handa, Torsten Polle, Vitaly Mayatskikh*, William Cohen Special thanks to new contributors, marked with '*' above. Special thanks to Aaron Merey for drafting these notes. = Bugs fixed for this release <https://sourceware.org/PR#####> 22278 the nss client code doesn't handle '-I DIR' well 22287 the ioblock.stp tapset needs to be updated for rawhide 20516 "BUG: spinlock recursion on CPU#0" crash on s390x 20734 "sleeping function called from invalid context" bogus kernel BUG on s390x 22124 RHEL6 ppc64 system crash when running the perf.exp test case 21887 bpf: exit() 22222 on rawhide, we're getting a "spinlock bad magic" BUG 22155 kernel panic due to NULL vma_cache_p->f_path.dentry 22151 on rhel6 i686, the nettop.stp example script causes a kernel BUG 22158 on rawhide, we're getting a compile error that spin_unlock_wait() doesn't exist 15065 regular expressions: subexpression capture support 22117 on 32-bit systems, getting "noncontiguous location for base fetch" errors 22110 semok/autocast07.stp internal error 22097 the semko/target_addr[23].stp test cases are passing 22109 on rawhide, we're getting errors in the nfsd tapset 22087 implicitptr.exp failing after the bpf merge 22054 on 32-bit systems, buildok/twentynine.stp fails 22066 stap fails to link correctly when not using nss or http 22036 compiler errors when using tapset/linux/ioblock.stp 22031 failure in pthread_stacks.exp 22012 "BUG: scheduling while atomic" when probing syscall.open 22005 @min and @max functions return a wrong value 22008 missing rt_sigreturn return probe hits 21998 receiving lots of "kbuild exited with status: 2" warnings when using tapset/linux/ip.stp 21996 on 32-bit f26, we're getting dyninst errors when using intptr_t 21984 on 32-bit systems, getting gcc "cast to pointer from integer of different size" errors 21802 improve the syscall/nd_syscall test case 21917 on rawhide, we're getting a fault in the panic handler 21901 on rawhide, we're getting an "inconsistent lock state" kernel WARNING 14021 --sysroot=/ not a no-op 21834 on rawhide, the context.exp test case causes a kernel warning 21811 java probe crashes upon null argument 13350 dwarf unwinder_stp_valid_pc_addr() invalid for s390x 21726 on rawhide, the backtrace.exp test case causes a kernel panic 21283 cannot use --dyninst and --remote together 21362 more syscall nesting problems 14923 dyninst: misses events when main thread does not go through at least one quiesce 16795 utrace_p5.exp leaves stapdyn processes running 15144 occasional (40%) stapdyn spin/hang during sdt.exp 18688 stapdyn hang in testsuite 21463 stap -t --dyninst fail un-cleanly 10712 standardize syscall trace rendering 11206 support stdin script input 21435 convenience groupadd for the make install target 20988 string tapset could use a strstr() type function 20333 merge syscall and nd_syscall tapsets 21363 on rawhide, _struct_sched_attr_u() is failing 21353 syscall nesting in fcntl 21297 support needed for new statx syscall 21238 failed user probing does not return proper error 21255 "make installcheck" Smoke test fails with Fedora rawhide kernels 4.11.0-0.rc2.git1.1.fc27.x86_64 21190 stap fails to build on rhel6 with --enable-sqlite where sqlite-3.6 is available