Project News: DTrace
2014.10.13: DTrace userspace 0.4.4, kernel modules 0.4.3, libdtrace-ctf 0.4.2
All RPMs are available on the Unbreakable Linux Network.
Packaging and build changes:
- libdtrace-ctf can now be built with GNU Make 4.0.
- Timer based profile-* probes (profile provider). These probes use the
omni-present cyclic support in the UEK3 kernel (3.8.13-32 and later) to
fire probes at a speciic frequency/interval on every active CPU.
New userspace options:
- -xcppargs: Additional arguments to pass to the preprocessor when run over D
scripts by DTrace.
- pid and ppid are now correctly derived for multithreaded processes, pointing
to the POSIX pid and parent respectively rather than the thread and thread
- Major reworking of the dtrace_getufpstack() implementation to handle
locking, stack detection, and potential page fault while accessing the
stack of a task. As a consequence, ustack(), usym(), uaddr() and umod() of
multithreaded processes no longer crashes the system, oopses the kernel,
hangs the process being probed, crashes dtrace(1) itself, or runs dtrace
or the system as a whole out of filehandles.
- Kill -9'ing a running dtrace will no longer leave breakpoints outstanding in
processes with no controlling terminal that were grabbed as a side effect of
ustack(), usym(), uaddr() or umod); as a side effect, symbol resolution will
be less accurate for such processes. Grabbing a process with no controlling
terminal via dtrace -p restores full symbol resolution accuracy for these
processes, at the cost of dropping breakpoints in them again. Processes with
a controlling terminal are still treated as in prior releases.
- Interrupting dtrace with a SIGINT while monitored processes are dying
simultaneously now consistently stops it rather than hanging forever.
- dtrace's symbol-resolution paths are armoured against various problems which
could occur when processes died while lookups were underway.
- Resolving kernel symbols located at the start of modules will no longer
cause dtrace userspace to dereference uninitialized memory as a pointer.
- Several memory-allocation, underrun and overrun bugs in process handling
were fixed. With sufficient ingenuity these may be exploitable by local
users who can craft and run unusual ELF executables and arrange for dtrace
to attach to them.
- The DOF ELF object generated by dtrace -G no longer requires an executable