Fix: pthread_join on thread start error
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 15 May 2017 19:14:07 +0000 (15:14 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 15 May 2017 19:14:07 +0000 (15:14 -0400)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/main.c

index 5a6741f2d0efcfb85ddcc045bcab9127c70c1115..9b6f70cd08134acfa45afa1d970735d3d2ee6a4c 100644 (file)
@@ -5618,6 +5618,7 @@ int main(int argc, char **argv)
        struct lttng_pipe *ust32_channel_monitor_pipe = NULL,
                        *ust64_channel_monitor_pipe = NULL,
                        *kernel_channel_monitor_pipe = NULL;
+       bool notification_thread_running = false;
 
        init_kernel_workarounds();
 
@@ -6129,6 +6130,7 @@ int main(int argc, char **argv)
                stop_threads();
                goto exit_notification;
        }
+       notification_thread_running = true;
 
        /* Create thread to manage the client socket */
        ret = pthread_create(&client_thread, default_pthread_attr(),
@@ -6332,15 +6334,17 @@ exit_init_data:
         * of the active session and channels at the moment of the teardown.
         */
        if (notification_thread_handle) {
-               notification_thread_command_quit(notification_thread_handle);
-               notification_thread_handle_destroy(notification_thread_handle);
-
-               ret = pthread_join(notification_thread, &status);
-               if (ret) {
-                       errno = ret;
-                       PERROR("pthread_join notification thread");
-                       retval = -1;
+               if (notification_thread_running) {
+                       notification_thread_command_quit(
+                                       notification_thread_handle);
+                       ret = pthread_join(notification_thread, &status);
+                       if (ret) {
+                               errno = ret;
+                               PERROR("pthread_join notification thread");
+                               retval = -1;
+                       }
                }
+               notification_thread_handle_destroy(notification_thread_handle);
        }
 
        rcu_thread_offline();
This page took 0.028082 seconds and 4 git commands to generate.