2.0.0-1.3 (Oct 2nd, 2020)

Third errata of the standalone userspace implementation.

This is a pre-release with limited functionality.

New features:

  • The freopen() action has been implemented for numeric values.

  • The system() action has been implemented for numeric values.

  • Two additional built-in variables are now available: id and ppid.

  • Annotations in the DTrace disassembler have been improved for readability.

Bugfixes:

  • The BEGIN and END probe semantics have been corrected to match the documented behaviour. BEGIN will always be the first probe executed, and END will always be the last probe executed. Corrections have also been made to the exit() action in terms of how it interacts with the BEGIN and END probe, and the trace data consumer.

  • The behaviour of the default action vs non-data producing actions has been corrected.

  • The implementation of the signed divide and modulo operations has been corrected in view of BPF not providing instructions for them.

  • The code generated for post-decrement expressions has been corrected.

  • A bug fix for a theoretical buffer overflow issue was merged from the 1.2 version of DTrace because the same code exists in this version.

Internal changes:

  • Type casting has been optimized to only perform shift operations when needed. The implementation has also been improved to not require an extra register.

Compilation fixes:

  • The procfs.d D library makes use of datatypes that are defined in the sched.d D library, but it was missing an explicit dependency on sched.d.

  • The yylineno variable was declared in two places, causing a conflict with newer compilers. The primary declaration is now in dt_lex.c and dt_cc.c now has an extern declaration for the variable.

  • Distributions place architecture specific include files in different locations. The build system will try different known locations, using the first one that seems valid.

  • Some newer compilers do not accept 'const' for the r_debug_offsets and link_map_offsets arrays in the source code generated by mkoffsets.sh.

  • Various changes were applied to the source code to resolve compiler warnings that were triggered during compilation.

Testsuite changes:

  • A bug fix for the bogus-ioctl testsuite trigger executable was merged from the 1.2 version of DTrace because the same improper use of the open() library function occurs in this version.

  • Some testsuite scripts were using local variables (this->n) in places where thread-local variables (self->n) were needed.

  • Various testsuite cases have been updated to be more robust.