1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
|
2026-01-28 lttng-tools 2.14.1 (National Lego Day)
* Fix: sessiond: racy metadata update during re-generation
* Fix: consumerd: metadata regeneration and rotation race
* Refactor: consumerd: inline metadata version change handling
* Refactor: consumerd: track tracer metadata coherency indicator support
* Refactor: consumerd: rename ust_metadata_pushed to ust_metadata_cache_consumed
* Refactor: consumerd: add has_network_destination() helper method
* Fix: sessiond: strncpy truncation warnings in consumer message init
* Fix: ust-consumerd: format specifier warnings on 32-bit builds
* Fix: lttng-destroy: use implicit session when none is provided
* Fix: lttng-ctl: assertion fails when copying an empty (root) action path
* lttngctl: Update ABI reference with version from v2.14.0
* lttng-relayd: Fix assert with live viewer and consumerd < 2.11
* Fix: ust-app: app look-up vs app unregistration synchronization
* Fix: ust-app: app hash table iteration vs app unregistration synchronization
* Fix: relayd live: uninitialized viewer_attach_status warning
* Fix: relayd: live: format specifier warning on 32-bit platforms
* Fix: relayd: honour live viewer attach "seek" type
* Fix: test utils: clear sessiond pids array on stop_lttng_sessiond
* Notification test: wait for delay when awaiting existing file
* Fix test notification multi app racy ready check
* Fix: Do not allow "data consumption paused" testpoint to skip blocking pipe reads
* Fix: lttngctl: Incorrect sessiond path selection for non-root users
* Fix: relayd: Initialize stream_id when live inactivity beacon is received
* Fix: trace-ust: fix -Wstringop-truncation warning in channel creation
* Fix: init_locale_utf8_support(): consider all "UTF-8" variants
* Fix: relayd: signal parent when daemon is actually ready
* Fix: relayd-grouping/test_ust: Remove nowait parameter for destroy after rotate
* Fix: kernel-consumer: prepend kernel TSDL metadata stream with header
* Fix: container-wrapper: add missing comparison operators for _GLIBCXX_DEBUG
* Fix: trace-chunk: use WARN_FMT to fix 32-bit time_t format warnings
* common: Fix closing open file descriptors after forking
* liblttng-ctl: drop index allocator symbols from version script
* Fix: Try to only close open fds when run-as forks
* Fix: get_max_possible_cpu_id: misuse of strtoul endptr parameter
* input_stream_descriptor: allow partial reads with `read_some`
* common: move read/write operations to new stream_descriptor classes
* Fix: sessiond-comm: missing packed attribute on consumerd msg
* lttng: Fix help output when unknown action is given in add-trigger
* Fix: sessiond: erroneous enum type used in comparison
* Fix: lttng-enable-event: problematic union initialization
* Fix: sessiond: crash while running clear test
* lttng: Fix `--help` behaviour of `lttng list-triggers`
* tests: Add regression test for multi-user lttng clear
* tests: Handle undefined `msg.count` in `count_events_worker`
* tests: Support passing multiple tracepaths to `parallel_count_events`
* tests: Move `parallel_count_events` to to lttngtest
* config: Propagate load error when loading from directory
* Fix: `user_space_consumer_channel_keys` skips some per-uid channels
* fix: link error in libpause_(consumer|sessiond).so
* .gitreview: Set default branch to 'stable-2.14'
* tests: Rework notification generator in python
* relayd: Fix typo in debug message
* Fix: eventfd.cpp: Remove the scope resolution operator
* Fix: test_config: user home checks $HOME first
* Tests: gen-ust-events-constructor: set rpath to $libdir
* Typo fix: constructor tracing test: license header
* Typo fix: test_high_throughput: GPL-2.1-only -> GPL-2.0-only
* Typo fix: test_per_application_leaks: copyright header
* doc/man: filter expressions don't support perf context field types
2025-06-27 lttng-tools 2.14.0 (Multiculturalism Day)
* tests: Fix string formatting for Python 3.4+
* liblttng-ctl: Put `enum communication_state` in anonymous namespaces
* tests: Add test_high_throughput for kernel regression
* tests: Move getconf/kernel_module to lttngtest
* common: Provide `--disable-tests` configuration option
* docs: Add pkg-config to requirements in README
* tests: Add `test_high_throughput_snapshot`
* tests: Fix: online_cpus() fails with disjoint sets
* tests: Support `text-size` and `fill-text` options for WaitTraceTestApps
* tests: Add option to generate larger tp:tptest events
* Fix: consumerd: inaccurate math in discarded events aggregation
* groups.dox: warn that the RS save/load API doc isn't done
* liblttng-ctl API doc: use the "process filter" term
* groups.dox: document the usage of the recording session snapshot API
* groups.dox: document the usage of the recording session rotation API
* groups.dox: document the usage of the error query API
* include/lttng/destruction-handle.h: doc: update internal reference
* doc/api/liblttng-ctl: add missing image files
* liblttng-ctl API doc: add missing trigger API documentation
* groups.dox: adjust style (minor)
* include/lttng/log-level-rule.h: fix enumerator references and quotes
* include/lttng/event.h: move nested union types out of structures
* include/lttng/event-expr.h: document with Doxygen
* filter-expr.dox: perf context fields aren't supported
* include/lttng/event.h: doc: clarify statically-known ctx. field types
* groups.dox: "to create" π "to target"
* groups.dox: always quote "event rule matches"
* include/lttng/event-field-value.h: document with Doxygen
* groups.dox: document the "Event rule API" topic
* groups.dox: emphasize "without"
* liblttng-ctl API doc: extract filter expression doc
* groups.dox: RERs of logging tracing domains can have filters too
* groups.dox: reference `event_rule` variable directly
* groups.dox: add "Linux user space probe location API" topic
* include/lttng/event.h: doc: use "user space probe"; update links
* `enum lttng_event_rule_type`: doc: link enumerators to topics
* include/lttng/userspace-probe.h: document with Doxygen
* include/lttng/kernel-probe.h: document with Doxygen
* include/lttng: doc: add reference to lttng_*_get_type() in `enum`
* include/lttng/event-rule/python-logging.h: document with Doxygen
* include/lttng/event-rule/log4j2-logging.h: document with Doxygen
* include/lttng/event-rule/log4j-logging.h: document with Doxygen
* include/lttng/event-rule/jul-logging.h: document with Doxygen
* include/lttng/event-rule/kernel-uprobe.h: document with Doxygen
* include/lttng/event-rule/kernel-kprobe.h: document with Doxygen
* include/lttng/event-rule/kernel-syscall.h: document with Doxygen
* include/lttng/event-rule/kernel-tracepoint.h: document with Doxygen
* include/lttng/event-rule/user-tracepoint.h: document with Doxygen
* include/lttng: doc: reorder enumerators logically
* include/lttng: doc: add param. copying information
* include/lttng/channel.h: doc: remove redundant newline
* include/lttng/event.h: doc: use spaces in code snippets, not tabs
* Fix: sessiond: stale ust_app_channel on initialization failure
* .gitignore: add kprobe/uprobe event name unit test executables
* lttng_event_rule_kernel_uprobe_create(): set initial event name
* lttng_event_rule_kernel_kprobe_create(): set initial event name
* sessiond: Fix potentially uninitialized return value warning
* Fix: sessiond: erroneous report of consumerd exit code
* kernel-consumer: Fix warning on 32-bit builds
* Fix: lttng-sessiond: crash with kernel tracer during early shutdowns
* tests: Validate that HOSTNAME is not empty
* tests: Fix duplicate `handle_syscall_entry_pselect6_time32`
* tests: Skip `test_notification_kernel_userspace_probe` on armhf
* tests: Support pselect6_time32 in `kernel/validate_select_poll_epoll.py`
* tests: Fix typo in `kernel/validate_select_poll_epoll.py`
* tests: Skip 32-bit userspace SDT tests
* tests: Handle tests which do not exist or are not executable
* tests: Fix `test_trace_format_kernel` with 32-bit kernels
* tests: Fix `test_select_poll_epoll` on armhf
* tests: Do not expect `epoll_wait_*` on arm64 and riscv64
* tests: tests.serial: polled writing and long-running test abort
* Fix: sessiond: erroneous check for end of list
* sessiond: check liblttng-ust-ctl.so version at runtime
* Fix: sessiond: build fails with libxml2 2.14+
* tests: Avoid hang in `test_python_logging` when test application fails
* Tests: disable coredumps during `test_ppoll_fds_buffer_overflow`
* Tests: Fix hang in `tools/health/test_tp_fail`
* Tests: fix: time TAP tests in OOT builds
* tests: Use machine identifier to search for lttng-ctl ABI reference
* doc/api/liblttng-ctl/Doxyfile: don't consider `LTTNG_EXPORT`
* Document `include/lttng/event-rule/event-rule.h` with Doxygen
* include/lttng/event.h: clarify recording ER vs. IP descriptor
* liblttng-ctl API doc: add Doxygen aliases for log4j/Log4j/JUL
* include/lttng/channel.h: add missing `*` in param. references
* liblttng-ctl API doc: document buffer ownership model and alloc. policy
* liblttng-ctl API doc: fix log4j/Log4j terminology
* Document `include/lttng/log-level-rule.h` with Doxygen
* include/lttng: use list items for preconditions
* doc/api/liblttng-ctl/Doxyfile.in: remove deprecated config
* doc/api/liblttng-ctl: update images
* include/lttng/session.h: doc: add cross-references
* Document lttng_get_kernel_tracer_status() and `lttng_kernel_tracer_status`
* include/lttng: "invalid parameter" -> "unsatisfied precondition"
* include/lttng: fix the documentation of some return values
* include/lttng: remove redundant, non-Doxygen comments
* doc/api/liblttng-ctl/dox/groups.dox: balance "if" with "then"
* doc/api/liblttng-ctl/Makefile.am: depend on all source files
* include/lttng/session.h: doc: fix style of lttng_get_session_shm_path_override()
* include/lttng/event.h: fix Doxygen warnings
* include/lttng/event.h: disable clang-format for some Doxygen comments
* doc/api/liblttng-ctl: remove `DoxygenLayout.xml`
* Run clang-format on the whole project
* tests: Add python 3.4 support to `trace_format_helpers`
2025-04-16 | lttng-tools 2.14.0-rc1 (National Wear Your Pajamas to Work Day)
WHAT'S NEW?
βββββββββββ
New features and changes in LTTng 2.14:
General:
β’ User space channels now have a _buffer allocation policy_ which
specifies whether LTTng tracers allocate ring buffers per CPU
(what you've always known) or per channel.
The buffering scheme term now refers to the ownership model
(system, user, or process) and the allocation policy together.
The new per-channel allocation policy means each user/process
(depending on the buffer ownership model), instead of each CPU of
each user/process, gets its own ring buffer.
β’ User space tracing now supports the Apache Log4j 2 tracing domain
in addition to the existing support for Apache log4j 1.2.
β’ LTTng 2.14 brings _experimental_ support of CTF 2 [1] for both the
user space and kernel tracers.
CTF 2 output isn't enabled by default and is intended solely for
preview and feedback purposes: having an experimental support will
allow users to test and evaluate CTF 2 until we make it the
default output format.
Tracing control:
β’ The new `--buffer-allocation` option of the
lttng-enable-channel(1) command can set the buffer allocation
policy of the channel to create.
The default `per-cpu` value is what you've always known while the
new `per-channel` value is available for user space channels.
β’ The new `--buffer-ownership` option of the `enable-channel`
command of the `lttng` CLI tool replaces the `--buffers-global`,
`--buffers-uid`, and `--buffers-pid` options (now deprecated).
β’ The `enable-channel` command of the `lttng` CLI tool, when
creating a user space channel with the usual per-CPU buffer
allocation policy, automatically adds a `cpu_id` context field
which, as of LTTng 2.14, you cannot remove. This has always been
the case and remains true, but `cpu_id` is now an offically
supported context field.
Knowing this, with the new per-channel buffer allocation policy,
the `enable-channel` command doesn't add the `cpu_id` context
field: add it afterwards with the lttng-add-context(1) command if
needed, for example:
$ lttng add-context -u --channel=my-channel --type=cpu_id
β’ Everywhere the Apache log4j 1.2 `--log4j` option or
`log4j:logging` option value is available with the `lttng` CLI
tool, you may now use resp. `--log4j2` and `log4j2:logging` to
target the new Apache Log4j 2 [2] tracing domain.
β’ The `liblttng-ctl` C API is updated to support the new features:
β£ Set and get the buffer allocation policy of a channel with
`lttng_channel_set_allocation_policy()`
and `lttng_channel_get_allocation_policy()`.
β£ Add the `cpu_id` context field to a channel with the
`LTTNG_EVENT_CONTEXT_CPU_ID` enumerator when
calling `lttng_add_context()`.
β£ Apache Log4j 2 functions and enumerators are available
everywhere there are Apache Log4j 2 equivalents:
β `LTTNG_DOMAIN_LOG4J2`
β `LTTNG_EVENT_RULE_TYPE_LOG4J2_LOGGING`
β `enum lttng_loglevel_log4j2`
β `lttng_event_rule_log4j2_logging_create()`
β `lttng_event_rule_log4j2_logging_get_filter()`
β `lttng_event_rule_log4j2_logging_get_log_level_rule()`
β `lttng_event_rule_log4j2_logging_get_name_pattern()`
β `lttng_event_rule_log4j2_logging_set_filter()`
β `lttng_event_rule_log4j2_logging_set_log_level_rule()`
β `lttng_event_rule_log4j2_logging_set_name_pattern()`
β£ Get the status of the Linux kernel tracer
with `lttng_get_kernel_tracer_status()`.
β£ Get the shared memory directory path of a recording session
with `lttng_get_session_shm_path_override()`.
β’ Set the `LTTNG_EXPERIMENTAL_FORCE_CTF_2` environment variable to
`1` when starting `lttng-sessiond` to enable the experimental
CTF 2 [1] output format.
With this setting, all the recording sessions which the session
daemon manages produce CTF 2 traces. As of LTTng 2.14, this is not
a per-session configuration.
The produced CTF 2 traces are expected to be semantically
equivalent to what the tracers would have procuced without
`LTTNG_EXPERIMENTAL_FORCE_CTF_2` set to `1` (CTF 1.8).
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NOTE: A client of a session daemon started with the β
β `LTTNG_EXPERIMENTAL_FORCE_CTF_2` environment variable set to β
β `1` cannot create: β
β β
β β£ A network streaming mode recording session. β
β β
β β£ A snapshot mode recording session where you send the trace β
β data over the network. β
β β
β β£ A live mode recording session. β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β’ The `--all` option of the lttng-start(1) and lttng-stop(1)
commands is now available to start/stop _all_ the
recording sessions.
β’ The `--glob` option of the `start`, and `stop`, and
lttng-destroy(1) commands is now available to start/stop/destroy
recording sessions of which some globbing pattern matches
the name.
β’ New lttng-relayd(8) options are available to help control
its process:
`--dynamic-port-allocation`::
Let the operating system assign the control, data, and live
ports if their respective option is missing (`--control-port`,
`--data-port`, and `--live-port`) or if their port number part
is `0`.
With this option, `lttng-relayd` writes the `control.port`,
`data.port`, and `live.port` files, as needed, to its runtime
and configuration directory (`$LTTNG_HOME/.lttng`).
`--pid-file`:
Write the process ID (PID) of the `lttng-relayd` process to
some file (like the `--pidfile` option of lttng-sessiond(8)).
`--sig-parent`:
Send the `USR1` signal to the parent process to notify
readiness (like the `--sig-parent` option
of `lttng-sessiond`).
β’ You can now override the path of the directory where
`lttng-sessiond` places special files for user space tracing
applications with the `LTTNG_UST_CTL_PATH` environment variable.
See lttng-sessiond(8).
β’ You can now override the path of the directory where
`lttng-sessiond` places its control files with the `LTTNG_RUNDIR`
environment variable.
See lttng-sessiond(8).
User space tracing specifics:
β’ You can now override the path of the directory where a user
application instrumented with liblttng-ust looks for special
registration and control files of `lttng-sessiond` with the
`LTTNG_UST_APP_PATH` environment variable.
See lttng-ust(3).
β’ You can now override the policy used to populate shared memory
pages within the instrumented application with the
`LTTNG_UST_MAP_POPULATE_POLICY` environment variable.
See lttng-ust(3).
β’ We improved the memory usage of lttng_ust_tracef()
and lttng_ust_tracelog().
Kernel tracing specifics:
The minimum supported Linux kernel version is now 4.4 instead
of 3.0.
VERSION NAME
ββββββββββββ
This release is named after "Orbitales", a bold creation from
Noctem Artisans Brasseurs in QuΓ©bec City.
Pitch black and denseβone team member compared the color to used motor oilβthis
beer offers an intriguing sensory experience. Aged in wood casks, it delivers
rich aromas and flavors of blackberry as well as a hint of acidity. Thereβs no
head to speak of, but a whisper of blue cheese funk lingers just enough to keep
you curious.
REFERENCES
ββββββββββ
[1]: https://diamon.org/ctf/
[2]: https://logging.apache.org/log4j/2.x/index.html
|