2.0.0-1.11 (Nov 9th, 2022)
Eleventh errata of the standalone userspace implementation.
This is a pre-release with limited functionality.
New features:
- 
                        
                        The args[] built-in variable has been implemented. 
- 
                        
                        Support loading scalars from kernel space addresses. 
- 
                        
                        The copyin(), copyinto(), and copyinstr() subroutines have been implemented. 
- 
                        
                        A -xlockmem option has been added to adjust the kernel locked-memory limit. When loading BPF maps or programs fails in a way that might indicate that the locked-memory limit is too low, an error message is printed to suggests using this new option. 
- 
                        
                        Support for aggregations indexed by a key (tuple) has been added. 
- 
                        
                        Disassembler annotations have been added for aggregation variables. 
- 
                        
                        The setopt() action has been implemented. A limited number of options is currently supported. 
- 
                        
                        The pid provider has been changed to ignore compiler-generated internal function names. 
- 
                        
                        The USDT provider has been implemented for basic use cases. Regular, non-is-enabled probes are supported for executables that are referenced explicitly (by pid) in the probe script. Argument mapping and wildcard probe specifications are not supported yet. 
New dependencies:
- 
                        
                        The USDT provider support depends on the availability of libfuse version 2 or 3. At build time, preference is given to libfuse 3 if available. The build process supports forcing building against libfuse 2 by passing 'libfuse2=yes' to the make command. 
Upgrading:
- 
                        
                        The USDT implementation depends on an always-running daemon (dtprobed): the corresponding systemd dtprobed.service is automatically started in relatively early boot in non-rescue scenarios, but when DTrace is first installed, or if it is upgraded from a version before the daemon existed (before 2.0.0-1.11), any probes in programs that were already running before that point will not appear in DTrace's list of available probes until such programs are restarted. 
Bugfixes:
- 
                        
                        Arguments of sdt-provider probes are now correctly populated using the tracepoint data. 
- 
                        
                        Argument handling for dtrace:::, fbt:::return, pid:::, and syscall:::return probes has been cleaned up. 
- 
                        
                        The dtrace utility is now able to handle multiple args after --. 
- 
                        
                        The -xcpp, -xctfpath, and -xverbose options have been fixed. 
- 
                        
                        Some bugs with typecasting and internal integer storage have been fixed. 
- 
                        
                        The libproc search of rtld_global has been improved for glibc changes. 
- 
                        
                        In procfs.d, projid_t was renamed to resolve a conflict with the kernel. 
- 
                        
                        In the parser, support has been added for slices of typedefs. 
- 
                        
                        String comparison involving non-DTrace pointers has been fixed. 
- 
                        
                        The value of the execname built-in variable is now correctly recognized as a non-DTrace pointer. 
Internal changes:
- 
                        
                        The code generator is able to adapt to BPF-helper-function availability differences between runtime kernels. 
- 
                        
                        Read-only blocks of zeros for initializing BPF maps have been consolidated. 
- 
                        
                        Tuples are now constructed with their component values at predictable offsets based on their datatype rather than their value.. 
- 
                        
                        Support for the BPF dt_bpf_map_next_key() helper to iterate over the keys in a BPF map has been added. 
- 
                        
                        Support for multiple copies of aggregation data (DT_AGG_NUM_COPIES) is no longer needed and has been removed. 
- 
                        
                        Support for creating a map (array or hash) of maps has been added, including functions to perform lookups and updates of inner maps. 
- 
                        
                        The storage of aggregation data has been modified to make use of an array of BPF hash maps, indexed by CPU id. As a result, aggregation data for each CPU is stored in its own BPF hash map and can be modified without affecting the data for other CPUs. 
- 
                        
                        Error reporting for BPF program load, map creation, CTF, and dlib load has been cleaned up. 
- 
                        
                        Some code has been refactored and some obsolete code removed. 
Testsuite changes:
- 
                        
                        Add support for '-e' in test options. 
- 
                        
                        Tests that are expected to fail have improved xfail messages. 
- 
                        
                        Support has been added for more stringent, @@nosort checking. 
- 
                        
                        Problems with "unstable" tests are report as XFAIL. 
- 
                        
                        Tests that fire many times (historically using tick-n) are more robust. 
- 
                        
                        Various tests have been moved from XFAIL to PASS status to reflect the implementation of new features and in view of some bug fixes. 
- 
                        
                        Various tests were improved. 
Known problems:
- 
                        
                        On some aarch64 systems the copyin(), copyinstr(), and copyinto() subroutines may report a fault due to limitations in the BPF implementation at the kernel level. This problem seems to be related to specific CPU features.