X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fagent-thread.c;h=9c98d30ab4e71accd303a442d41b45feeee212b6;hp=e648eda1ebfe9bcb95d3c7de516f70efad696edc;hb=5b0936814a6004448eeec430b2dfea534f35a2fc;hpb=8a7e45909a46d4aab3c3debde8f5ce2006c7d306 diff --git a/src/bin/lttng-sessiond/agent-thread.c b/src/bin/lttng-sessiond/agent-thread.c index e648eda1e..9c98d30ab 100644 --- a/src/bin/lttng-sessiond/agent-thread.c +++ b/src/bin/lttng-sessiond/agent-thread.c @@ -454,7 +454,6 @@ error_tcp_socket: error_poll_create: uatomic_set(&agent_tracing_enabled, 0); DBG("[agent-thread] Cleaning up and stopping."); - lttng_pipe_destroy(quit_pipe); rcu_thread_offline(); rcu_unregister_thread(); return NULL; @@ -468,7 +467,14 @@ static bool shutdown_agent_management_thread(void *data) return notify_thread_pipe(write_fd) == 1; } -bool launch_agent_registration_thread(void) +static void cleanup_agent_management_thread(void *data) +{ + struct lttng_pipe *quit_pipe = data; + + lttng_pipe_destroy(quit_pipe); +} + +bool launch_agent_management_thread(void) { struct lttng_pipe *quit_pipe; struct lttng_thread *thread; @@ -480,6 +486,7 @@ bool launch_agent_registration_thread(void) thread = lttng_thread_create("Agent management", thread_agent_management, shutdown_agent_management_thread, + cleanup_agent_management_thread, quit_pipe); if (!thread) { goto error; @@ -488,6 +495,6 @@ bool launch_agent_registration_thread(void) lttng_thread_put(thread); return true; error: - lttng_pipe_destroy(quit_pipe); + cleanup_agent_management_thread(quit_pipe); return false; }