Fix: Perform rcu barrier before tearing down the run-as worker
[lttng-tools.git] / src / bin / lttng-consumerd / lttng-consumerd.c
index 0d34feeb342904ddc599c84fbc7c7359ade16872..a56f02d1b1ccc264a4178b534ed189e377a45bae 100644 (file)
@@ -422,6 +422,10 @@ int main(int argc, char **argv)
                set_ulimit();
        }
 
+       if (run_as_create_worker(argv[0]) < 0) {
+               goto exit_init_data;
+       }
+
        /* create the consumer instance with and assign the callbacks */
        ctx = lttng_consumer_create(opt_type, lttng_consumer_read_subbuffer,
                NULL, lttng_consumer_on_recv_stream, NULL);
@@ -638,13 +642,14 @@ exit_init_data:
        if (health_consumerd) {
                health_app_destroy(health_consumerd);
        }
-exit_health_consumerd_cleanup:
+       /* Ensure all prior call_rcu are done. */
+       rcu_barrier();
 
-exit_options:
+       run_as_destroy_worker();
 
+exit_health_consumerd_cleanup:
+exit_options:
 exit_set_signal_handler:
-       /* Ensure all prior call_rcu are done. */
-       rcu_barrier();
 
        if (!retval) {
                exit(EXIT_SUCCESS);
This page took 0.025174 seconds and 5 git commands to generate.