Hi everyone, Today marks the release of the second LTTng 2.13 - Nordicité release candidate. A prettyfied version of this annoucement is available here: https://github.com/lttng/lttng-tools/releases/tag/v2.13.0-rc2 If you were already testing the first release candidate of this release, please note that LTTng-UST and LTTng-tools must be updated to "rc2" in locked-step due to ABI changes. Also note that probe providers must be rebuilt against LTTng-UST 2.13.0-rc2. Have a look at the first release candidate's release notes for an overview of the features introduced in LTTng 2.13. https://github.com/lttng/lttng-tools/releases/tag/v2.13.0-rc1 What's new in LTTng-UST (Linux application tracer) 2.13.0-rc2? --- - Allow explicit tracepoint instance provider name. Allow re-using a tracepoint class from tracepoint instances in other providers. This is a localized API-breaking change introduced very early in the 2.13-rc cycle. The LTTNG_UST_TRACEPOINT_EVENT_INSTANCE macro newly introduced in LTTng-UST 2.13-rc1 now takes an extra "template_provider" argument. This changes the ABI exposed by the probe providers, so bump the probe provider major version, and make newer LTTng-UST reject old incompatible major. Probe providers built against LTTng-UST 2.13-rc1 must be rebuilt against LTTng-UST 2.13-rc2 to be traced. - Add probe descriptor field to enumeration and event class Also breaks the ABI exposed by probe providers (provider major version already bumped for rc2). This enables additional validation of probe provider compatibility when using event class and enumerations across providers. - Validate provider version for event class. - Validate provider version for event enumeration field types. - Introduce api0 and api1 compilation tests. This tests whether the API 0 compatibility API works. See ust-api-compat.h for details. - Fix Java (JUL and log4j) application context segmentation fault and leaks. - liblttng-ust-ctl: implement SIGBUS handling: This fixes a long-standing DoS where an unprivileged application could cause a SIGBUS in the consumer daemon by truncating the shared memory files it receives from the session daemon. This requires that LTTng-tools be upgraded to 2.13-rc2 in locked-step with LTTng-UST 2.13-rc2. - Restore communication protocol backward compatibility with LTTng-UST 2.12 - liblttng-ust-ctl: keep using lttng-ust-sock-8 and lttng-ust-wait-8 filename LTTng-UST 2.13-rc1 erroneously changed the file names of those socket and pipe files from [...]-8 to [...]-9, even though we intended to keep protocol compatibility between LTTng-UST 2.12 and LTTng-tools/ust 2.13. This changes reverts back to the prior filenames to make sure LTTng-UST 2.12 applications can be traced by a 2.13 LTTng-tools using 2.13 LTTng-UST. - Fix: add missing fields in struct lttng_ust_abi_channel_config Three fields were removed by mistake from this structure which is ABI between the consumer daemon and applications traced with LTTng-UST. Add them back to allow tracing 2.12 LTTng-UST applications with a 2.13 LTTng-tools using 2.13 LTTng-UST. - Fix LTTng-UST communication protocol variable-length data handling When mixing older (e.g. 2.12) and newer versions of LTTng-UST talking to each other between application and LTTng-tools, situations where commands are unknown lead to out-of-sync communication protocol. Change the protocol for commands new to LTTng-UST 2.13 so they acknowledge the fixed-size commands before the variable-sized data is sent, so the communication protocol is kept in sync even when unknown command error happens. This also happens for more ancient commands released in prior versions for which we cannot change the protocol. Shutdown the socket from the session daemon side when we detect such errors, because there is no point in trying to communicate further on an out-of-sync socket. - Detect mixed liblttng-ust and liblttng-ust-tracepoint .so.0 and .so.1 libraries Detect and report with a new "critical" logging message whether .so.0 and .so.1 tracer libraries are loaded within a single process, which is an unsupported use-case. Note that the LTTNG_UST_DEBUG environment variable must be set to allow users to observe those critical messages. We also introduce a new LTTNG_UST_ABORT_ON_CRITICAL environment variable to allow the tracer to abort() the process whenever a critical logging statement is encountered. This is meant to facilitate discovering problematic deployments where an application indirectly loads different soname major numbers of LTTng-UST through its instrumented shared libraries. See the ChangeLog for the full list of changes: https://github.com/lttng/lttng-ust/blob/13861e2d/ChangeLog What's new in LTTng-modules (Linux kernel tracer) 2.13.0-rc2? --- - There are refactoring commits that were introduced after 2.13-rc1 to align the code of LTTng-modules with the refactoring that was done in LTTng-UST prior to 2.13-rc1. Given that LTTng-modules does not expose its kernel APIs to external users, it was possible to do this refactoring even after rc1. - Compiling the system call tracing code has typically been a resource-heavy endeavour both in terms of memory usage (~1G memory required) and CPU time. It has been split into smaller compile units to allow parallel compilation and lessen the memory requirements on the compiler. - Bitwise enumerations are now disabled by default. Only compiled in with make CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM=y. - Fix: increment buffer offset when failing to copy from user-space. - Implement ring buffer Pascal string copy: allows taking C-strings as inputs and record them to ctf_array_text and ctf_sequence_text fields (which are Pascal strings) without causing out-of-bound reads of the C-strings of those are smaller than the size reserved for the pascal strings. This mirrors the behaviour introduced in LTTng-UST 2.13-rc1. - Support for 5.12 Linux kernels, - Support recent stable kernel branches 4.14, 4.19, 5.4, - Support for newer Ubuntu 4.15, 5.4, and RHEL 8.2/8.3 kernels, See the ChangeLog for the full list of changes: https://github.com/lttng/lttng-modules/blob/f982b51a/ChangeLog What's new in LTTng-tools 2.13.0-rc2? --- - The new features introduced in the 2.13 release are now fully documented as part of the installed man pages. A number of improvements were also made to the existing documentation such as adding examples for the lttng-add-context command. - lttng client messages referring to "event rule hit" conditions have been changed to use the correct "event-rule matches" condition name. - An example was added under doc/examples/trigger-condition-event-matches. It contains an application instrumented with LTTng-UST, a script that adds triggers to notify external clients whenever the application's events occur, and a notification client which consumes the resulting notification along with any captured payload. See https://github.com/lttng/lttng-tools/tree/c3195dc0/doc/examples/trigger-condition-event-matches#readme - A bug resulting in the production of erroneous path hierarchies when a snapshot is streamed to a relay daemon was fixed. This bug resulted in duplicated domain names being present in the final path of a snapshot ("ust/ust" or "kernel/kernel") which could cause some automation scripts to fail. - A bug that caused some trace data to be invisible to live viewers has been fixed. See https://lists.lttng.org/pipermail/lttng-dev/2021-May/029953.html - A number of bugs that could result, under rare circumstances, in a hang when using the lttng-clear command against a session that contains kernel channels was fixed. - Miscellaneous stability improvements. See the ChangeLog for the full list of changes: https://github.com/lttng/lttng-tools/blob/4be5babe/ChangeLog Links --- Project website: https://lttng.org Download links: https://lttng.org/files/lttng-tools/lttng-tools-2.13.0-rc2.tar.bz2 https://lttng.org/files/lttng-ust/lttng-ust-2.13.0-rc2.tar.bz2 https://lttng.org/files/lttng-modules/lttng-modules-2.13.0-rc2.tar.bz2 GPG signatures: https://lttng.org/files/lttng-tools/lttng-tools-2.13.0-rc2.tar.bz2.asc https://lttng.org/files/lttng-ust/lttng-ust-2.13.0-rc2.tar.bz2.asc https://lttng.org/files/lttng-modules/lttng-modules-2.13.0-rc2.tar.bz2.asc