[lttng-dev] [RELEASE] LTTng-Tools 2.7.0-rc1

Jérémie Galarneau jeremie.galarneau at efficios.com
Wed Jul 15 23:56:45 EDT 2015

Oyé Oyé, dear LTTng fellows!

I am proud to announce the availability of the first LTTng-Tools 2.7 -
"Herbe à Détourne" release candidate. As per usual, this release bears the
codename of a Québec-brewed beer.

Brewed with unrestrained amounts of Citra hop, the Herbe à Détourne is a
fantastic New World Tripel brewed by "Dieu du Ciel!". Aromas of mango,
cantaloupe melon and passion fruit, combined with a controlled bitter
unite in making this smooth golden-orange beer stand apart.

We are still hard at work fixing a handful of last-minute issues (see our
tracker), integrating more tests for the latest features, and updating the
documentation before we make a final release available.

However, that doesn't mean you can't try out the latest features today!

--- Process (PID) Tracker ---
The new "track" and "untrack" commands allows the tracking of events
with specific PIDs, both in user space and kernel space.

For example, the following commands may be used to track all user space
of PID "1234":
$ lttng create my_session
$ lttng track --userspace --pid 1234
$ lttng enable-event --userspace --all
$ lttng start

--- Python Logging Support ---
Following in the footsteps of the Java Util Logging and Log4J logging
support, which were introduced as part of LTTng 2.4 and LTTng 2.6
this new version adds support for the Python logging backend. This means
logging statements emitted by the Python logging module can now be
collected as
part of user space traces by enabling events from the "python" domain.

$ lttng create my_session
$ lttng enable-event --python --all
$ lttng start

The lttngust Python module is provided as part of LTTng-UST 2.7.

--- Kernel tracer filtering support ---
While LTTng-UST has provided support for event filtering for a long time,
it was not possible to perform kernel-side event filtering until now. As of
this version,
Kernel space filters can be used in the same way as user space filters.

For instance, to trace only read() syscalls requesting more than 100 bytes:
$ lttng create my_session
$ lttng enable-event --kernel --syscall read --filter "count > 100"
$ lttng start

--- Kernel tracer wildcard support ---
Support for wildcards in event names is another feature that has been
from the user space tracer to the kernel tracer. This means that groups of
kernel space events can be enabled at once using the wildcard notation.

The tracing of all block device or scheduling events can be enabled using a
single command:

$ lttng enable-event --kernel block*
$ lttng enable-event --kernel sched*

--- File-backed user space buffers ---
This new LTTng-UST feature allows the mapping of ring buffers onto
This proves useful in combination with pramfs or DAX+pmem (Linux kernels
for DAX and 4.2+ for pmem) to store tracer ring buffers in persistent memory
an unexpected system reboot.

These buffers can be salvaged and converted to regular CTF traces using the
newly introduced lttng-crash utility to see the events that led to a crash.

--- Support for clock and getcpu plugins ---
In the interest of keeping LTTng as unintrusive as possible, LTTng 2.7
introduces support for platform-specific plug-ins providing custom
implementations of getcpu() (user space) and clock sources for both kernel
user space tracers.

getcpu override plugins can prove useful in cases where direct hardware
is available for architecture-specific registers storing the CPU number, and
where those should be used instead of the Linux kernel sched_getcpu()

clock override plugins, which may be implemented as shared objects (user
or kernel modules (kernel space) may prove userful in cases where direct
hardware access to architecture-specific clocks is available, and when it
be used in place of the Linux kernel Monotonic clock.

--- tracelog() support ---
LTTng-UST 2.7 provides a number of facilities to smoothen the transition of
applications from logging to tracing in the form of tracelog() tracepoints.
LTTng-UST 2.7's announcement covers this feature in more detail:


Of course, we will cover all of these new features in depth in an upcoming
on the official LTTng blog at lttng.org/blog in time for the final release.

2015-07-15 lttng-tools 2.7.0-rc1 (Pet Fire Safety Day)
* Update version to v2.7.0-rc1
* Tests: lttng-ust-getcpu-override-test cache and error-check sysconf()
* Tests: lttng-ust-getcpu-override coding-style adjustments
* Add CPU_ID LTTng-UST context to enum lttng_ust_context_type
* Tests: Ust getcpu override plugin
* Fix: Follow struct dirent allocation guidelines of READDIR(3)
* Update comments regarding the power of 2 constraint on sub-buffer sizes
* Build: add Flex version check
* Build: add Bison version check
* Fix: handle sys_futex() FUTEX_WAIT interrupted by signal
* Fix: metadata push -EPIPE should be recoverable
* Fix: destroy session removes the default config file
* Build: bump autoconf version requirement to 2.64
* Fix: Memory leak in setup of relayd_path
* Fix: update liburcu URL
* Fix: test: use "$@" to pass and quote argument
* Refactor: test: wrapper for lttng_snapshot_del_output
* Refactor: test: wrapper for lttng_snapshot_add_output
* Refactor: test: wrapper for destroy_lttng_session
* Refactor: test: wrapper for stop_lttng_tracing
* Refactor: test: wrapper for start_lttng_tracing
* Refactor: test: wrapper for enable_ust_lttng_event
* Refactor: test: wrapper for enable_ust_lttng_channel
* Refactor: test: wrapper for create_lttng_session
* Fix: Memory allocated by xmlNodeGetContent() must be freed by xmlFree()
* Save/load: add support for shared memory path
* Fix: get_cmdline_by_pid path length assumes a max pid of 65535
* Clean-up: Remove ifdef-ed out lttng list options
* Test: mi: test for greater or equal to a minimum of events on ust listing.
* Fix: update regression tests involving UST
* Clean-up: Remove ifdef-ed out function:entry feature
* Fix: Mark MI and Config string declarations as extern
* Clean-up append_list_to_probes()
* Fix: modprobe.c: fix tmp_list memory leak
* Fix: append_list_to_probes(): increment index
* Docs: LTTNG(1) filtering is now supported by the kernel tracer
* Fix: live_test regression on large number of cpus
* Fix: set UST register timeout to -1 as test default
* Man page: reference lttng-crash under --shm-path option
* Tests: Don't rely on implicit scalar expression dereference
* man pages: use standard NAME format
* Fix python bindings' Makefile for out-of-tree builds
* Fix: use LIBS instead of AM_LDFLAGS for dl and c linking
* Fix: Add missing -ldl when checking for lttng-ust
* clock plugin: increase offset measurement accuracy
* Implement UST clock override plugin support
* Fix: ownership of filter and filter_expression
* Fix: zero memory passed to create channel kernel ioctl
* Fix: Check that lttng create --live's time is not zero
* Fix: Validate lttng_create_session_live's timer is > 0
* UI: Only show live timer when the session is in live mode
* UI: Only show tracker PID state when enabled
* Implement kernel filter support
* syscall tracing: update tests
* Support lttng-modules syscall wildcards
* Implement lttng-modules tracepoint wildcard support
* Fix build when configuring with --disable-lttng-ust
* Fix: add missing function prototype to trace-ust.h header
* Implement PID tracker content listing
* Implement UST PID tracker
* Cleanup: Remove unimplemented UST domains
* Implement PID tracking for kernel tracing
* Fix: leak on error in lttng-crash
* Man page fixes: missing --version option and typo
* Docs: add lttng-crash(1) man page
* Docs: lttng-crash refers to "lttng"
* Fix: possible use of uninitialized data in loglevel conversion funcs
* Fix: possible evaluation of garbage values in fini_validation_ctx()
* Cleanup: Remove stale #ifdef-ed-out code from spawn_viewer()
* Fix: Possible call to execvp with NULL argument on allocation failure
* Fix: Possible call to strtoul() with NULL argument
* Docs: clarify lttng.1 shm-path section
* Fix: Missing return value check in extract_trace_recursive()
* Fix: recursive_rmdir: empty all empty subdir
* Move file creation/unlink from liblttng-ust-ctl to consumerd
* lttng-crash: support recursive traces
* shm-path: remove directory hierarchy on destroy
* Implement --shm-path option for UST sessions (per-uid channels)
* Cleanup: Reduce scope of connections in main relayd thread
* Cleanup: Reduce scope of relayd connections in live thread
* Docs: connection_find_by_sock() must be called with rcu_read_lock
* Rename current release as 2.7.0-pre
* Docs: grammar fix in Makefile
* Change release name to master
* configure: add type availability checking
* configure: add check for compiler inline keyword support
* configure: missing check for needed header
* configure: missing check of functions
* Fix: test: log4j: missing static test files for dist and out of tree build
* Fix: test: java-jul:missing static test files for dist and out of tree
* Fix: out-of-tree build: missing xsd file for mi test execution
* Fix: out-of-tree build: missing xsd file for save-load test execution
* Cleanup: remove unused end_no_session label in ust_app_flush_session()
* Cleanup: Remove unused "end" label in push_metadata()
* Tests: Run health check test_thread_ok as part of root_regression
* Fix: deadlock between UST registry lock and consumer lock
* Fix: uninitialized return value
* Fix: build failure using disable-lttng-ust configure option
* Cleanup: Remove unused variable
* Fix: setuid/setgid daemons should not get sensitive env. var./args
* Fix: grab more than one packet for snapshots
* Fix: per-uid flush and ust registry locking
* Docs: Missing optional dependency on lttng-ust in README.md
* Docs: Grammar fixes in the lttng manpage
* Fix: add missing UST perf counter support check
* Fix: tests: integer too large for long type
* Fix: undefined operation on last_relay_viewer_session_id
* Fix: print format type mismatch
* Fix: print format type mismatch
* Fix: Remove structurally dead code from relayd
* Cleanup: Remove logically dead code
* Cleanup: Remove unused label
* Fix: Remove unused argument in debug statement
* Fix: exit threads not only on goto restart
* Fix: poll: show the correct number of fds
* Fix: call lttng_poll_set_max_size before start threads
* Fix: compat poll: add missing empty revents checks
* Fix: various compat poll/epoll issues
* Add debugging output to ht-cleanup thread
* Fix: mi: snapshot: missing error handling for session name
* Fix: ust-app: per-PID app unregister vs tracing stop races
* Fix: data pending: allow empty streams
* Fix: ust snapshot: cleanup after error
* Fix: Mismatching return type in ust_app_ht_alloc() stub
* Cleanup: lock file already taken is error, not warning
* Fix: ust-app null pointer check needed for main refactoring
* Cleanup: relayd: centralize thread stopping function
* Cleanup: Replace all perror() uses by the PERROR macro
* Refactor relayd main/set_options/cleanup
* Refactor consumerd main/cleanup
* Refactor sessiond main/cleanup/ht-cleanup
* Missing error handling: consumer_signal_init should return its error
* Cleanup: consumerd: lines over 80 columns
* Cleanup: consumerd: use PERROR rather than perror
* Cleanup: lttng-consumerd: remove stale TODO comment
* Misleading error handling: utils_create_pid_file() should return 0 on
* Missing error handling: consumerd parse_args should return errors to
* Missing error handling: ust_app_ht_alloc should return error status
* Fix: ust app leak on UST buffer creation error
* Fix: leak on UST buffer registry creation error
* Fix: agents ht leaks on destroy session
* Fix: add missing RCU read unlock
* Fix: help message for Python agent mentions Java
* Fix: don't destroy the sockets if the snapshot was successful
* Fix: Missing RCU read locks in syscall_list_channel()
* Fix: Missing RCU read lock in kernel_destroy_session()
* Fix: channel names are not validated
* Cleanup: Missing whitespace
* Fix: Apply consumer URI changes to all domains
* Cleanup: Fix a typo in the MI tests
* Test fix: Don't invoke the system's lttng client
* Tests: Add a test to check disabled events are loaded in the correct state
* Fix: Don't leave events enabled if they were saved in a disabled state
* Fix: "Any" loglevel's value is -1 and not 0
* Test fix: LTTNG_SESSION_CONFIG_XSD_PATH expects an absolute path
* Fix: Memory leak on error in alloc_argv_from_user_opts()
* Cleanup: Unchecked close() return value in utils_create_lock_file()
* Cleanup: No check of the return value of lttng_ht_del()
* Cleanup: Mixed enums used for return code in send_sessiond_channel()
* Cleanup: Cast poll() return value to void
* Fix: Unreachable error logging in set_option()
* Fix: OOM leaks in sessiond modprobe.c
* Cleanup: sessiond modprobe.c: coding style
* Cleanup: test_utils_expand_path.c prototypes
* Fix: test_utils_expand_path.c: out of memory error handling
* Fix: test test_ust_data.c: check OOM
* Fix: test libc-wrapper: check malloc OOM
* Cleanup: test libc-wrapper: main parameters
* Fix: lttng-ctl: use zmalloc(), missing OOM check
* Fix: filter-parser.y: use zmalloc(), missing OOM check
* Fix: utils.c: check str*dup OOM
* Cleanup: implement zmalloc as static inline
* Fix: rculfhash: use zmalloc()
* Fix: ini.c: use zmalloc()
* Fix: lttng lttng.c: check strdup OOM
* Fix: lttng conf.c: use zmalloc()
* Fix: lttng view.c missing strdup OOM check
* Fix: use zmalloc() in lttng view.c
* Fix: use zmalloc() in lttng list.c
* Fix: oom error check, realloc oom leak
* Fix: use zmalloc in lttng enable_events.c
* Fix: missing strdup oom check in lttng create.c
* Fix: lttng add_context.c: use zmalloc
* Cleanup: add missing static to function modprobe_remove_lttng()
* Fix: add missing str*dup oom check in sessiond main.c
* Fix: add missing sessiond kernel-consumer missing str*dup oom checks
* Fix: add missing strdup OOM check
* Fix: add missing synchronization point for before app test case
* Fix: tests: wait output hide Terminate errors
* Fix: tests: remove killall, add missing SIGTERM handlers
* Fix: high throughput test: reset bw limit on sigterm
* Fix: tests: add missing wait, document missing synchro
* Document test anti-patterns
* Fix: test flaky sleep and wait patterns
* Fix: tests: don't use pidof to wait for test apps
* Fix: Live tracing does not honor live timer after first tracefile with
tracefile rotation
* Fix: Handle empty daemon configuration file lines
* Docs: Add -f/--config option to lttng-sessiond man page
* Cleanup: spaghetti function return path
* Fix: relayd: unbalanced RCU read-side lock/unlock
* Fix: relayd: unbalanced RCU read lock/unlock
* Fix: lttng-relayd: unhandled out of memory error
* Fix: relayd viewer stream: unhandled out of memory error
* Build fix: Apps defining _LGPL_SOURCE must link to urcu-bp
* Define _LGPL_SOURCE in test apps' tracepoint provider files
* Define _LGPL_SOURCE in test applications
* Fix: Missing rcu_read_lock in cmd_list_events()
* Fix: Missing rcu_read_lock in list_lttng_agent_events()
* Fix: Missing rcu_read_lock in cmd_list_channels()
* Fix: Missing rcu_read_locks in cmd_list_domains()
* Fix: Missing rcu_read_lock in cmd_snapshot_list_outputs()
* Fix: Missing rcu_read_lock in save_domains()
* Fix: Missing rcu_read_lock in ust_app_get_nb_stream()
* Fix: UST subbuffers silently dropped on moderate trace traffic
* Fix: Missing rcu_read_lock in get_session_max_subbuf_size()
* Fix: create/destroy a splice_pipe per stream
* Note find_ust_app_context must be called with RCU read lock
* Fix: empty indexes_ht before destroying it.
* Fix: removed useless key from relay_index
* Fix: Ambiguous agent event filter bytecode ownership
* Fix: filter bytecode and string memory leak on error
* Fix: define _LGPL_SOURCE in C files
* Fix: HT must not be destroyed with a rcu_read_lock held
* Fix: agent events HT should be destroyed from the cleanup thread
* Fix: missing rcu_read_lock in trace_ust_destroy_session()
* Fix: missing rcu_read_lock when calling trace_ust_find_agent()
* Fix: missing rcu_read_lock in cmd_start_trace()
* Cleanup: remove "disabled" flag for new release cycle
* Fix: filter attach vs event enable race
* Fix: Mark libxml2 as a mandatory dependency
* Fix: Warn the user when enabling an event in a new domain
* Fix: Don't report an error when listing a session with no channels
* Bypass 0 byte allocation when no domains are enabled
* Fix: Add missing URCU_TLS access to error_log_time
* Fix: check userspace perf counter name when looking up contexts
* Update maintainer section of the man pages
* Update maintainer section of README.md
* Fix: add README.md to documentation files
* Fix: UST consumer sync all available metadata
* Test: remove bogus argument from prove invocation
* Fix: typo in pythong test Makefile
* Fix: memory leak in libconfig
* Add Python agent support
* Fix: return EINVAL if agent registration fails
* Use lttng-modules ABI version ioctl
* Fix: syscall list ioctl number conflict
* Update master ChangeLog with 2.5.1 release

As always, please report any issue you may encounter to bugs.lttng.org
or on this mailing list.

Project website: https://lttng.org

Download links:
GPG sig:

Looking forward to your feedback!


Jérémie Galarneau
EfficiOS Inc.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20150715/44f95fbb/attachment-0001.html>

More information about the lttng-dev mailing list