}
/* If event not enabled, disable it on the tracer */
- if (ua_event->enabled == 0) {
+ if (ua_event->enabled) {
+ /*
+ * We now need to explicitly enable the event, since it
+ * is now disabled at creation.
+ */
+ ret = enable_ust_event(app, ua_sess, ua_event);
+ if (ret < 0) {
+ /*
+ * If we hit an EPERM, something is wrong with our enable call. If
+ * we get an EEXIST, there is a problem on the tracer side since we
+ * just created it.
+ */
+ switch (ret) {
+ case -LTTNG_UST_ERR_PERM:
+ /* Code flow problem */
+ assert(0);
+ case -LTTNG_UST_ERR_EXIST:
+ /* It's OK for our use case. */
+ ret = 0;
+ break;
+ default:
+ break;
+ }
+ goto error;
+ }
+ } else {
ret = disable_ust_event(app, ua_sess, ua_event);
if (ret < 0) {
/*
/* Create the buffer registry channel object. */
ret = create_buffer_reg_channel(reg_uid->registry, ua_chan, ®_chan);
if (ret < 0) {
+ ERR("Error creating the UST channel \"%s\" registry instance",
+ ua_chan->name);
goto error;
}
assert(reg_chan);
ret = do_consumer_create_channel(usess, ua_sess, ua_chan,
app->bits_per_long, reg_uid->registry->reg.ust);
if (ret < 0) {
+ ERR("Error creating UST channel \"%s\" on the consumer daemon",
+ ua_chan->name);
+
/*
* Let's remove the previously created buffer registry channel so
* it's not visible anymore in the session registry.
*/
ret = setup_buffer_reg_channel(reg_uid->registry, ua_chan, reg_chan);
if (ret < 0) {
+ ERR("Error setting up UST channel \"%s\"",
+ ua_chan->name);
goto error;
}
/* Send buffers to the application. */
ret = send_channel_uid_to_ust(reg_chan, app, ua_sess, ua_chan);
if (ret < 0) {
+ /*
+ * Don't report error to the console, since it may be
+ * caused by application concurrently exiting.
+ */
goto error;
}
/* Create and add a new channel registry to session. */
ret = ust_registry_channel_add(registry, ua_chan->key);
if (ret < 0) {
+ ERR("Error creating the UST channel \"%s\" registry instance",
+ ua_chan->name);
goto error;
}
ret = do_consumer_create_channel(usess, ua_sess, ua_chan,
app->bits_per_long, registry);
if (ret < 0) {
+ ERR("Error creating UST channel \"%s\" on the consumer daemon",
+ ua_chan->name);
goto error;
}
ret = send_channel_pid_to_ust(app, ua_sess, ua_chan);
if (ret < 0) {
+ /*
+ * Don't report error to the console, since it may be
+ * caused by application concurrently exiting.
+ */
goto error;
}