0.4.6 (Jun 30th, 2015)

New dependencies:

  • dtrace-utils-devel now always pulls in the corresponding version of dtrace-utils, rather than being satisfied with whatever version is installed. [Introduced in DTrace 0.3.0.]

  • The DTrace kernel header package was renamed dtrace-modules-shared-headers in dtrace-modules 0.4.4; dtrace-utils now follows this renaming.

New options:

  • dtrace -vV now reports information on the released version of dtrace, as well as the internal version-control ID of dtrace(1) and libdtrace(1). (The last two should always be the same unless the installation is faulty.)

Bugfixes:

  • Processes that receive SIGTRAP in normal operation now work even when being dtraced for a ustack(), etc. Previously, the SIGTRAP would be ignored. [Introduced -- intentionally -- in DTrace 0.4.5, though this case would have misbehaved in other ways since 0.4.0.]

  • DTrace no longer loses track of processes that exec() while DTrace is looking at their dynamic linker state.

  • DTrace no longer leaves breakpoints lying around in fork()ed processes, but properly detaches from them and removes its breakpoints.

  • DTrace no longer considers that it knows the state of the symbol table of processes it has since stopped monitoring.

  • DTrace no longer crashes multithreaded processes that do dlopen() / dlclose(). [All introduced in DTrace 0.4.0.]

Library interface changes:

  • Including <dtrace.h> used to fail because of the absence of a Solaris-specific header we did not ship. That header is no longer called for.

Changes to user-visible internals:

  • DTrace now loads D libraries (with translators, etc) from directories with a name that depends upon the running kernel, so can support multiple kernels with the same userspace package.

Known problems:

  • Multithreaded processes under u{stack,sym,addr,mod}() which do dlopen() in threads other than the first may not have accurate symbol resolution for symbols introduced by such dlopen()s.