0.4.1 (Nov 6th, 2013)

Kernel release:

3.8.13-16.2.1.el6uek

New features:

  • DTrace now automatically modprobes for dtrace.ko if needed, and yum installs it if it is not found on the system. Provider modules are not automatically modprobed, but running (for example) dtrace -l is now a good way to make sure that the modules are present on the system so you can modprobe them.

  • It is no longer permissible to have non-unique provider names within the context of a userspace process. I.e. it is not permissible for the main executable and a loaded shared library, or two loaded shared libraries, to list the same provider name in their DOF sections.

  • A new cyclic implementation has been included in the UEK3 kernel, replacing the more error prone former version. The modules code has been updated to use that new implementation.

  • New development tools showUSDT (for dumping of DOF sections) and ctf_module_dump (for dumping of CTF in kernel modules). (The former tool is an example only, and is installed in the documentation directory.)

Bugfixes:

  • A lexer bug was fixed which caused spurious errors if D scripts contained a pragma or comment at intervals of 8192 characters, and prevented the use of scripts >16KiB entirely. [Introduced in the original Linux port]

  • A variety of memory leaks and uninitialized memory reads are fixed.

  • A bug whereby breakpoints could be left outstanding in a process if dtrace was interrupted with an ordinary SIGINT at just the wrong instant is fixed. [Introduced in DTrace 0.4.0.]

  • The visibility of .SUNW_dof sections was wrong. [Introduced in DTrace 0.4.0.]

  • Fix devinfo_t's dev_statname and dev_pathname for cases where the device does not have partitions. [Introduced in DTrace 0.4.0.]

  • drti.o, which contributes a constructor to programs and shared libraries that contain DOF, now has lower overhead when DTrace is not running, emits its errors to stdout, not stderr, and opens its files with O_CLOEXEC. [Introduced in DTrace 0.4.0.]

  • Lock ordering problems that were inherited from the original code are fixed.

  • Userspace stack memory accesses are now performed in a safe manner.

  • A race condition between speculative tracing buffer cleaning and destroying consumer state has been resolved.

  • A memory leak related to consumer state has been fixed.

  • A provider reference counter calculation problem was resolved.

  • The 'errno' D variable now holds the correct value during syscall:::return probe action execution, i.e. 0 if the syscall completed without an error, and a valid error code if the syscall failed.