Fix: close consumer sockets before waiting for them
[lttng-tools.git] / src / bin / lttng-sessiond / main.c
index dd5cee4bd038333c7bb94e8e5649bfb38803ac4d..a29417af59e7aeb7a90513cc5346f21db82f6346 100644 (file)
@@ -327,17 +327,18 @@ static void sessiond_cleanup(void)
 
        pthread_mutex_destroy(&session_list->lock);
 
-       wait_consumer(&kconsumer_data);
-       wait_consumer(&ustconsumer64_data);
-       wait_consumer(&ustconsumer32_data);
-
        DBG("Cleaning up all agent apps");
        agent_app_ht_clean();
-
        DBG("Closing all UST sockets");
        ust_app_clean_list();
        buffer_reg_destroy_registries();
 
+       close_consumer_sockets();
+
+       wait_consumer(&kconsumer_data);
+       wait_consumer(&ustconsumer64_data);
+       wait_consumer(&ustconsumer32_data);
+
        if (is_root && !config.no_kernel) {
                DBG2("Closing kernel fd");
                if (kernel_tracer_fd >= 0) {
@@ -351,8 +352,6 @@ static void sessiond_cleanup(void)
                free(syscall_table);
        }
 
-       close_consumer_sockets();
-
        /*
         * We do NOT rmdir rundir because there are other processes
         * using it, for instance lttng-relayd, which can start in
@@ -1335,8 +1334,8 @@ static void destroy_all_sessions_and_wait(void)
                        goto unlock_session;
                }
                (void) cmd_stop_trace(session);
-               (void) cmd_destroy_session(session,
-                               notification_thread_handle);
+               (void) cmd_destroy_session(session, notification_thread_handle,
+                               NULL);
        unlock_session:
                session_unlock(session);
                session_put(session);
This page took 0.023188 seconds and 4 git commands to generate.