0.6.2 (Sep 12th, 2017)

Packaging changes:

  • The DTrace headers in /usr/include/linux/dtrace were formerly provided by the dtrace-modules-shared-headers package. They are now pulled in from the kernel-uek-devel package in /usr/src/kernels at dtrace-utils package build time and shipped out into the dtrace-utils-devel package.

  • libdtrace-ctf 0.7 or above is now required.

  • CTF type information can now be provided in an archive located at /lib/modules/$(uname -r)/kernel/vmlinux.ctfa, cutting startup time when all types referenced are found in the kernel tree rather than in out-of-tree modules.

New features:

  • A new llquantize() aggregation, providing log/linear results. Syntax: llquantize(expression, log base, lower exponent, upper exponent, step, [increment])

  • The tracemem() action has gained a third argument, the number of bytes to trace: unlike the second argument, which must be a constant, the third argument can be an arbitrary D expression, which can be used to limit a larger second argument to a suitable value. This brings it into parity with tracemem() on Solaris.

  • The lockstat provider is implemented.

Bugfixes:

  • dtrace_sync() is drastically faster: setup and teardown of large numbers of probes without latency problems and watchdog timer firings is now much more practical.

  • The error message given when D argument counts were wrong was itself often wrong or confusing.

  • Fixed a segfault at shutdown time if grabbed processes die at precisely the wrong time.

  • Structure and union members in the kernel with the same name as D keywords can now be referenced: mostly, this means you can get at members named 'self'.

  • lquantize() no longer truncates its value to 32 bits.

  • dtrace_update() now merges module address ranges better.

  • Fix some places where sleeping inside RCU read critical sections or atomic context could happen (module provide, profile/tick providers, and more general probe and state setup/teardown code).

  • After one release without it, the walltimestamp variable reports useful values again.

  • One place where failure to allocate memory (for ECBs) could crash the kernel has been fixed.

Build-time:

  • A new 'make ctf' target in the kernel tree, for generating the vmlinux.ctfa archive mentioned above: it is no longer linked into in-tree modules. The old CONFIG_DT_DISABLE_CTF option is thus removed, as is the ctf.ko module.

  • You can no longer build CTF as root.

  • Kernel CTF type generation now understands the DWARF generated by GCC 6; one more problem with representation of bitfields is fixed; and one sort of painfully manually-maintained type-related blocklist is now automated away.

  • Some unused variable warnings in the io provider are squashed.