1.1.4 DTrace

The following notable DTrace features and fixes are implemented in UEK R5:

  • SDT probes enabled for KASLR-enabled kernels.  A fix has been applied to resolve an issue that caused a kernel crash if Kernel Address Space Layout Randomization (KASLR) was enabled and DTrace SDT probes were enabled at the same time. DTrace can now be used with KASLR-enabled kernels.

  • Added dynamic debugging.  Where a kernel is enabled for dynamic debugging (CONFIG_DYNAMIC_DEBUG is enabled), DTrace is built with all debugging messages enabled.

  • Array size boundary checking in user space.  An enhancement was applied to the DTrace user space packages to add checking of the bounds of non-associative arrays, both in CTF and in declared arrays. Lvalue arrays used for assignment are also bounds-checked. It is possible to bypass the bounds checking by casting to an untyped pointer type. For example:

     ((char *)curlwpsinfo->pr_name)[500]
  • Disassembler prints all actions.  A fix has been applied to the D disassembler to follow the full chain of actions per statement so that it prints out all actions.

  • PID provider added.  A new PID provider has been added to both the DTrace kernel and user space code. It extends the existing fasttrap provider (used for USDT probes) with the ability to set function boundary probes on user space functions, and to probe most arbitrary instructions within user space functions. It is called the 'pid' provider because it is a meta-provider that creates user space tracing providers on demand based on process IDs (pid).