Updated systemtap packages that fix several bugs and add various enhancements are now available for Red Hat Enterprise Linux 6.
SystemTap is a tracing and probing tool to analyze and monitor activities of the operating system, including the kernel. It provides a wide range of filtering and analysis options.
The systemtap packages have been upgraded to upstream version 2.3, which provides a number of bug fixes and enhancements over the previous version.
The most notable enhancements are:
* new support for regular expression matching in script language, using the "=~" and "!~" operators;
* improved error diagnostics with references to man pages that give further information and corrective advice;
* new ability to read the perf-counter values in process probes, using the "@perf()" operator;
* faster stack unwinding functions, especially for partial "unwinds" of only one or a few call levels;
* new support for a macro processing in the scripting language, using the "@define" operator;
* various tapset and runtime improvements.
- Previously, the SystemTap "nfs.proc.commit_done" probe alias interpreted the underlying arguments incorrectly. As a consequence, incorrect information was returned. The SystemTap "nfs_proc.commit_done" probe alias has been modified to interpret the underlying arguments correctly, and it now returns the correct information.
- Prior to this update, the ioblktime.stp example script did not track properly when I/O block pending requests were merged together with other requests. Consequently, the associative array could overflow, and an error occurred. The script has been modified to delete the merged I/O block requests. As a result, the script no longer fails after array overflow errors.
- The stap-serverd daemon did not use the avahi-client API properly. As a consequence, stap-serverd terminated unexpectedly when the avahi daemon was stopped or restarted. The underlying source code has been modified to use the avahi-client API properly, and stap-serverd now handles the described scenario without crashing.
- If the main thread of an application did not go through at least one quiesce, such as a system call, the SystemTap utility was unable to attach to the application. Consequently, SystemTap could not detect the events of the application. SystemTap now interrupts the main application thread so that it can attach to it. As a result, Systemtap no longer misses any events.
- Previously, the SystemTap utility used an arbitrary order when searching for kernel modules under the /lib/modules/ directory and identified the base module first. As a consequence, SystemTap could not probe some modules that were overridden by updates. SystemTap now uses the modules.dep file to order the module searches so that they match the order of the modprobe program. As a result, the overridden modules can be probed successfully.
- Previously, the SystemTap translator did not always include the correct code to be able to use the caller() function, which could lead to compile errors. This update ensures that the SystemTap translator includes the proper runtime code when using the caller() function. As a result, using caller() no longer causes compile errors.
- Prior to this update, the scope specifiers and IDs for IPv6 addresses were not handled correctly in SystemTap. Consequently, the user could not connect to stap-server using IPv6. This update corrects the handling of scope specifiers or IDs for IPv6 addresses, and the user can now connect to stap-server using IPv6 as expected.
- Previously, the "trace" utility in SystemTap generated a low-quality C code. As a consequence, when the generated code was compiled, the gcc compiler displayed error messages. This update improves the quality of the generated code, and no warnings are now displayed as expected.
Users of systemtap are advised to upgrade to these updated packages, which fix these bugs and add these enhancements.