1.148. systemtap

1.148.1. RHEA-2011-0037: systemtap bug fix and enhancement update

SystemTap is an instrumentation system for systems running the Linux kernel, version 2.6. Developers can write scripts to collect data on the operation of the system.
This update re-bases SystemTap to upstream version 1.3 (BZ#606726). This re-base applies several upstream enhancements, highlights of which include:
  • A new integrated compile-server client is now available as part of stap.
  • A new option, --ldd, automatically adds any additional shared libraries needed by probed or "-d"-listed userspace binaries to the -d list; this enables symbolic backtracing through them. Similarly, the new --all-modules option automatically adds any currently loaded kernel modules (listed in /proc/modules) to the -d list.
  • By default the systemtap-runtime RPM builds now includes a shared library: staplog.so. This library allows crash to extract systemtap data from a vmcore image.
  • This re-base also introduces backward-compatibility flags and a deprecation policy, which is useful in preventing future tapset/language changes from breaking valid scripts.
  • The <sys/sdt.h> user-space markers no longer default to an implicit MARKER_NAME_ENABLED() semaphore check for each marker. To check for enabled markers use a .d declaration file, then:
    if (MARKER_NAME_ENABLED()) MARKER_NAME()
  • A new stap option, -G VAR=VALUE, allows users to override global variables by passing the settings to staprun as module options.
  • Iterating with foreach can now explicitly save the value for the loop.
  • A new operator, @entry, is available for automatically saving an expression at entry time for use in a .return probe.
This update also applies the following fixes:
  • The stap-prep script, packaged with SystemTap, requires yumdownloader (supplied by yum-utils). However, yum-utils is not a dependency of SystemTap. With this update, yum-utils is now a dependency of SystemTap. (BZ#513672)
  • Whenever SystemTap invoked useradd, it did so without specifying a UID; as such, any such invocations could result in a 'BAD level' warning. With this update, stap-server checks the existence of a system UID/GID before invoking an adduser/groupadd command. A 155:155 static UID:GID pair will then be assigned to the stap-server user without UID/GID reservation. In the rare case that such a user already exists on the system, dynamic UID/GID allocation will be used. (BZ#555808)
  • When loading a module, stap executes stapio to handle interactions. A bug in runtime/staprun/mainloop.c made it possible for stapio to fail in executing a module control file even after successfully opening it. When this occurred, stapio returned an "ERROR: unexpected EOF" when loading/unloading a kernel module concurrently. This update applies an upstream patch to runtime/staprun/mainloop.c that instructs stapio to quit (instead of retrying) when a read error occurs, avoiding a loop. (BZ#557165)
  • When running rpm -V systemtap systemtap-server, TPS reported two verification failures: systemtap-server.ppc64: /var/log/stap-server.log .M...UG. [tps:B] and systemtap.ppc64: /usr/share/systemtap/runtime/uprobes .M....G. [tps:B]. This update applies an upstream patch that corrects this. (BZ#559633)
  • The Red Hat Enterprise Linux 5.4 version of SystemTap contained a stap-prep script that is missing in 5.5. This update returns the stap-prep script. (BZ#573031)
  • When running multiple stap engines simultaneously, it was possible for SystemTap to unload the stap module before running all utrace callback handlers. This could result in the kernel calling code in an unloaded module, which would result in a crash. To prevent this from occurring, this update patches runtime/itrace.c and runtime/task_finder.c accordingly, adding a loop that checks for running handlers. SystemTap will now only unload a module when it is safe to do so. (BZ#602706)
  • When running service systemtap restart on a previously stopped script, the script remained halted instead of restarting. This was because the SystemTap initscript incorrectly defined the SCRIPTS variable. With this update, SystemTap makes local copies of the $SCRIPTS global variable. This update also adds force-reload, reload, condrestart, and try-restart commands. (BZ#607232)
  • The prelink utility is no longer a SystemTap dependency on Itanium. This dependency was added in previous releases for specific SystemTap test cases. (BZ#629190)
  • The -I option when running stap terminated abnormally with a segmentation fault because of the string literal at the end of the file. This update provides a workaround by adding a semi-colin (;) after the string literal, and a fix in parse.cxx that only inspets the next token if there is one. (BZ#648420)
The following fixes were previously released in a separate, asynchronous errata:
  • Due to a string copy being used instead of a formatted string copy, the argstring of the socketpair system call had a wrong "UNKNOWN VALUE". This issue is now resolved. (BZ#560720)
  • Although the kernel in Red Hat Enterprise Linux 5.5 for the Itanium architecture introduced a new pipe system call handler, sys_ia64_pipe, the function was not added to the SystemTap tapset. As a result, probing the system call from the script via probe syscall.pipe did not succeed. This error has been fixed, the new function has been added to the tapset, and the pipe system call should now be probed correctly. (BZ#568032)
  • Previously, a change in register contents (such as $return) on the Itanium architecture caused a crash due to a flaw in the way the values in the memory were set. Now, a change in register contents no longer results in a crash. (BZ#598615)
For a more detailed list of upstream enhancements and bug fixes applied by the re-base, refer to the following link:
All SystemTap users are advised to apply this update.

1.148.2. RHBA-2010:0608: bug fix update

Updated systemtap packages that resolve two bugs are now available for Red Hat Enterprise Linux 5.
SystemTap is an instrumentation system for systems running the Linux kernel, version 2.6. Developers can write scripts to collect data on the operation of the system.
This update resolves the following bugs:
* due to a string copy being used instead of a formatted string copy, the argstring of the socketpair system call had a wrong "UNKNOWN VALUE". This issue is now resolved. ( BZ#617099)
* previously, a change in register contents (such as $return) on Itanium caused a crash due to a flaw in the way the values in the memory were set. Now, no crash happens when register contents change. ( BZ#617100)
All SystemTap users are advised to upgrade to these updated packages, which fix these bugs.

1.148.3. RHBA-2010:0525: bug fix update

Updated systemtap packages that fix a bug are now available.
SystemTap is an instrumentation system for systems running the Linux kernel, version 2.6. Developers can write scripts to collect data on the operation of the system.
This update fixes the following bug:
* although the kernel in Red Hat Enterprise Linux 5.5 for the Itanium architecture introduced a new pipe system call handler, "sys_ia64_pipe", the function was not added to the SystemTap tapset. As a result, probing the system call from the script via "probe syscall.pipe" did not succeed. This error has been fixed, the new function has been added to the tapset, and the pipe system call should now be probed correctly. ( BZ#604022)
Affected SystemTap users should upgrade to these updated packages, which resolve this issue.