ret = ustctl_create_channel(app->key.sock, ua_sess->handle,
(struct lttng_ust_channel_attr *)&ua_chan->attr, &ua_chan->obj);
if (ret < 0) {
- DBG("Error creating channel %s for app (pid: %d, sock: %d) "
+ ERR("Creating channel %s for app (pid: %d, sock: %d) "
"and session handle %d with ret %d",
ua_chan->name, app->key.pid, app->key.sock,
ua_sess->handle, ret);
}
ua_chan->handle = ua_chan->obj->handle;
- ua_chan->attr.shm_fd = ua_chan->obj->shm_fd;
- ua_chan->attr.wait_fd = ua_chan->obj->wait_fd;
- ua_chan->attr.memory_map_size = ua_chan->obj->memory_map_size;
DBG2("UST app channel %s created successfully for pid:%d and sock:%d",
ua_chan->name, app->key.pid, app->key.sock);
goto error;
}
shadow_copy_channel(ua_chan, uchan);
-
- lttng_ht_add_unique_str(ua_sess->channels, &ua_chan->node);
} else {
ua_chan = caa_container_of(ua_chan_node, struct ust_app_channel, node);
}
goto error;
}
+ lttng_ht_add_unique_str(ua_sess->channels, &ua_chan->node);
+
return ua_chan;
error:
DBG("PID %d unregistering with sock %d", lta->key.pid, sock);
+ /* Remove application from socket hash table */
+ lttng_ht_lookup(ust_app_sock_key_map, (void *)((unsigned long) sock), &iter);
+ ret = lttng_ht_del(ust_app_sock_key_map, &iter);
+ assert(!ret);
+
/* Get the node reference for a call_rcu */
lttng_ht_lookup(ust_app_ht, (void *)((unsigned long) lta->key.pid), &iter);
node = lttng_ht_iter_get_node_ulong(&iter);
goto error;
}
+ /* Remove application from PID hash table */
ret = lttng_ht_del(ust_app_ht, &iter);
assert(!ret);
call_rcu(&node->head, delete_ust_app_rcu);