Probe providers built against lttng-ust 2.12 or prior do not implement
the event notifier callback, and accessing desc->u.ext.event_notifier_callback
accesses beyond the size of struct lttng_event_desc.
Therefore, skip those older probe providers from the list of providers
considered for event notifications, and print an error when this
situation is encountered.
Currently, the error reporting of lttng-ust is performed through ERR(),
which is only observable on the console of the application when run with
LTTNG_UST_DEBUG=1.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Change-Id: Ia8a9bae1a471ae5d30ff0364b28e1cd3a8b4e396
__tracepoint_probe_prune_release_queue();
}
__tracepoint_probe_prune_release_queue();
}
+/* Support for event notifier is introduced by probe provider major version 2. */
+static
+bool lttng_ust_probe_supports_event_notifier(struct lttng_probe_desc *probe_desc)
+{
+ return probe_desc->major >= 2;
+}
+
static
void lttng_create_event_notifier_if_missing(
struct lttng_event_notifier_enabler *event_notifier_enabler)
static
void lttng_create_event_notifier_if_missing(
struct lttng_event_notifier_enabler *event_notifier_enabler)
+ /* Check that the probe supports event notifiers, else report the error. */
+ if (!lttng_ust_probe_supports_event_notifier(probe_desc)) {
+ ERR("Probe \"%s\" contains event \"%s\" which matches an enabled event notifier, "
+ "but its version (%u.%u) is too old and does not implement event notifiers. "
+ "It needs to be recompiled against a newer version of LTTng-UST, otherwise "
+ "this event will not generate any notification.",
+ probe_desc->provider,
+ desc->name,
+ probe_desc->major,
+ probe_desc->minor);
+ continue;
+ }
/*
* We need to create a event_notifier for this event probe.
*/
/*
* We need to create a event_notifier for this event probe.
*/