Fix: relayd and sessiond: dispatch thread exit is shared across threads
[lttng-tools.git] / src / bin / lttng-relayd / main.c
index 0428d33cef82d7f3c18bcff03f2310433808f7bf..81f10b78368c46401085477a51b799f90cf8fb19 100644 (file)
@@ -74,6 +74,7 @@ static int thread_quit_pipe[2] = { -1, -1 };
  */
 static int relay_cmd_pipe[2] = { -1, -1 };
 
  */
 static int relay_cmd_pipe[2] = { -1, -1 };
 
+/* Shared between threads */
 static int dispatch_thread_exit;
 
 static pthread_t listener_thread;
 static int dispatch_thread_exit;
 
 static pthread_t listener_thread;
@@ -272,7 +273,7 @@ void stop_threads(void)
        }
 
        /* Dispatch thread */
        }
 
        /* Dispatch thread */
-       dispatch_thread_exit = 1;
+       CMM_STORE_SHARED(dispatch_thread_exit, 1);
        futex_nto1_wake(&relay_cmd_queue.futex);
 }
 
        futex_nto1_wake(&relay_cmd_queue.futex);
 }
 
@@ -608,7 +609,7 @@ void *relay_thread_dispatcher(void *data)
 
        DBG("[thread] Relay dispatcher started");
 
 
        DBG("[thread] Relay dispatcher started");
 
-       while (!dispatch_thread_exit) {
+       while (!CMM_LOAD_SHARED(dispatch_thread_exit)) {
                /* Atomically prepare the queue futex */
                futex_nto1_prepare(&relay_cmd_queue.futex);
 
                /* Atomically prepare the queue futex */
                futex_nto1_prepare(&relay_cmd_queue.futex);
 
This page took 0.032077 seconds and 4 git commands to generate.