Fix: sessiond fails to launch on --without-ust configuration
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 9 May 2018 01:26:15 +0000 (21:26 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 9 May 2018 19:11:16 +0000 (15:11 -0400)
The sessiond will never signal that it is ready (in daemonize or
background modes) if it was built without lttng-ust. The fix in
7eac7803 made the main thread wait for the agent thread to be
ready before signalling that the session daemon is ready.

When agent tracing is not possible due to the absence of lttng-ust,
a stub function is used to launch the agent thread. This stub
must call sessiond_notify_ready() in order to unblock the main
thread.

Note that it would be _incorrect_ to not wait for the agent
thread to be launched as users expect all tracing features to
be available as soon as 'lttng-sessiond --daemonize/--background'
returns.

Not waiting for the thread to be ready caused very rare failures
of the agent tracing tests on the CI, especially on ARM and
PowerPC targets.

Reported-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/agent-thread.h

index 6bdfdcd5ea274041a1bf0e243aadc04077b7e6ab..4bed47b3702743575a059d300a01a95ae57cdd38 100644 (file)
@@ -30,6 +30,7 @@ bool agent_tracing_is_enabled(void);
 static inline
 void *agent_thread_manage_registration(void *data)
 {
+       sessiond_notify_ready();
        return NULL;
 }
 static inline
This page took 0.025976 seconds and 4 git commands to generate.