4.60. ltrace
Updated ltrace packages that fix several bugs are now available for Red Hat Enterprise Linux 5.
The ltrace utility is a debugging program that runs a specified command until the command exits. While the command is executing, ltrace intercepts and records both the dynamic library calls called by the executed process and the signals received by the executed process. The ltrace utility can also intercept and print system calls executed by the process.
Bug Fixes
- BZ#239057
- On a system with the Itanium architecture, a SIGILL signal was occasionally delivered as a valid signal that informed the ltrace utility about events in a traced binary. However, ltrace misinterpreted the SIGILL signal as a signal delivered to the traced binary. With this update, ltrace handles SIGILL as expected.
- BZ#526007
- When tracing a process with many threads, the traced process was often killed as the threads ran into breakpoints that could not be handled by the ltrace utility. With this update, ltrace attaches to the newly created threads and carefully handles the breakpoints so that tracing events are not missed. Note that when ltrace attached to a running process, that process could have been detached from with the instruction pointer pointed to mid-instruction, or with pending events, which would kill the process. This update improves the detach logic so that the process is left in a consistent state before detaching.
- BZ#639947
- Due to a bug in the logic of tracing processes, the ltrace utility missed tracing events in forked processes on PowerPC systems. The logic of tracing processes that fork or clone has been improved and ltrace now works as expected.
- BZ#754096
- On PowerPC systems, the "-e" option did not work correctly. Consequently, when the option was given with a symbol name that did not match any of the symbols in the traced binary, the ltrace utility terminated unexpectedly. This update provides a patch to fix this bug and ltrace no longer crashes in the described scenario.
- BZ#868281
- Previously, the ltrace utility did not support PIE (Position Independent Executables) binaries, which are linked similarly to shared libraries, and processes. Consequently, addresses found in images of those binaries needed additional adjustment for the actual address where the binary was loaded during the process startup. With this update, the support for PIE binaries and processes has been added and ltrace now handles the additional processing for the PIE binaries correctly.
- BZ#890961
- When copying internal structures after cloning a process, the ltrace utility did not copy a string containing a path to an executable properly. This behavior led to errors in heap management and could cause ltrace to terminate unexpectedly. The underlying source code has been modified and ltrace now copies memory when cloning traced processes correctly.
Users of ltrace are advised to upgrade to these updated packages, which fix these bugs.