Myths about Systemtap
We list some common myths about systemtap here, in the hope that they don't become "common knowledge".
"Nobody can use systemtap"
False. We have heard from happy users on a dozen different linux distributions, half-dozen platforms, ranging from kernel developers right up to developers of complex user-space programs, sysadmins, and university students. People who ask for help with build or installation issues tend to receive some.
"Systemtap won't be merged 'upstream'"
Probably true, but this does not affect systemtap's capabilities. It operates just fine without being "in-tree".
"Systemtap doesn't take patches from anybody"
False. 19 different people from >6 organizations contributed between release 0.6.2 and 0.7; 25 different people from >8 organizations between 0.7 and 0.8; 20 people between 0.8 and 0.9. Several of those are not core project members, and several more were anonymous. See also Ohloh's analysis. Systemtap has been an open public project since the beginning in 2005.
"Systemtap doesn't run on the upstream kernel"
Rarely true. Development versions of systemtap have always had broad compatibility with kernels. Even now we run on nearly anything between 2.6.9 and current -rc's. When the kernel internal or module APIs change, it may take a few hours or days to catch up. These changes show up on our automated weekly snapshots and eventually on the formal releases. (Kernel developers should therefore generally build systemtap out of git or the snapshots.)
"Systemtap does not work with the upstream community"
... where "upstream" means the core linux kernel people. False. Many kernel subsystems have benefited from direct code contributions from systemtap-related people (kprobes, markers, tracepoints, relayfs). Many others have received motivational advice about how those subsystems could benefit from tracing; how they could expose their existing tracing machinery to other tools. Systemtap design/architecture notes have been repeatedly posted on LKML.
"No user-space tracing"
False. Systemtap per se can do it -- if the kernel can. Where suitable kernel services exist (utrace patches applied, uprobes code available), systemtap supports probing user-space executables and shared libraries. Without the necessary kernel services, indeed systemtap users cannot use this feature. We hope that utrace and uprobes are merged into upstream before too long so more linux users can enjoy this functionality.
"Systemtap requires utrace"
False. Systemtap works fine on unpatched kernel.org kernels. Scripts that use user-space features will simply refuse to run.
"utrace is invasive to the core kernel"
False. All the invasive parts of old utrace have been already separately merged into upstream kernels (tracehook, user_regset, ...). The remaining parts just adds a nice callback API for the tracehook.h points.
"Systemtap requires some oddball version of elfutils"
False. Systemtap works with any elfutils version from the last year or two. If your distribution includes it, you can build systemtap against it. Otherwise, you can build a "bundled" subset of elfutils libraries right alongside systemtap. See the --with-elfutils=DIR configure option.