Fix: filter attach vs event enable race
[lttng-ust.git] / liblttng-ust / lttng-events.c
index 7c5c05ed63955e89ba6c0bb104f49ae8c48c871e..68c024c4647e9206f6b9bec37d17f63e40425be8 100644 (file)
@@ -741,7 +741,16 @@ struct lttng_enabler *lttng_enabler_create(enum lttng_enabler_type type,
                sizeof(enabler->event_param));
        enabler->chan = chan;
        /* ctx left NULL */
-       enabler->enabled = 1;
+       /*
+        * The "disable" event create comm field has been added to fix a
+        * race between event creation (of a started trace) and enabling
+        * filtering. New session daemon always set the "disable" field
+        * to 1, and are aware that they need to explicitly enable the
+        * event. Older session daemon (within same ABI) leave it at 0,
+        * and therefore we need to enable it here, keeping the original
+        * racy behavior.
+        */
+       enabler->enabled = !event_param->disabled;
        cds_list_add(&enabler->node, &enabler->chan->session->enablers_head);
        lttng_session_lazy_sync_enablers(enabler->chan->session);
        return enabler;
This page took 0.023367 seconds and 4 git commands to generate.