Better debug and fix an error handling
[lttng-tools.git] / ltt-sessiond / main.c
index b636986f832d7352b572c5a08fbcbaf92ceadfc7..3f9d0eb5e4d55e97a5e6f2440e3b210597ae7c64 100644 (file)
@@ -182,7 +182,7 @@ static void teardown_kernel_session(struct ltt_session *session)
                        lttcomm_close_unix_sock(session->kernel_session->consumer_fd);
                }
 
-               trace_destroy_kernel_session(session->kernel_session);
+               trace_kernel_destroy_session(session->kernel_session);
                /* Extra precaution */
                session->kernel_session = NULL;
        }
@@ -214,7 +214,7 @@ static void cleanup(void)
        DBG("Cleaning up");
 
        /* <fun> */
-       MSG("\n%c[%d;%dm*** assert failed *** ==> %c[%dm%c[%d;%dm"
+       MSG("%c[%d;%dm*** assert failed *** ==> %c[%dm%c[%d;%dm"
                "Matthew, BEET driven development works!%c[%dm",
                27, 1, 31, 27, 0, 27, 1, 33, 27, 0);
        /* </fun> */
@@ -252,8 +252,10 @@ static void cleanup(void)
        DBG("Closing kernel fd");
        close(kernel_tracer_fd);
 
-       DBG("Unloading kernel modules");
-       modprobe_remove_kernel_modules();
+       if (is_root) {
+               DBG("Unloading kernel modules");
+               modprobe_remove_kernel_modules();
+       }
 }
 
 /*
@@ -1003,8 +1005,12 @@ static void *thread_dispatch_ust_registration(void *data)
 
                        ust_cmd = caa_container_of(node, struct ust_command, node);
 
-                       DBG("Dispatching UST registration pid:%d sock:%d",
-                                       ust_cmd->reg_msg.pid, ust_cmd->sock);
+                       DBG("Dispatching UST registration pid:%d ppid:%d uid:%d"
+                                       " gid:%d sock:%d name:%s (version %d.%d)",
+                                       ust_cmd->reg_msg.pid, ust_cmd->reg_msg.ppid,
+                                       ust_cmd->reg_msg.uid, ust_cmd->reg_msg.gid,
+                                       ust_cmd->sock, ust_cmd->reg_msg.name,
+                                       ust_cmd->reg_msg.major, ust_cmd->reg_msg.minor);
                        /*
                         * Inform apps thread of the new application registration. This
                         * call is blocking so we can be assured that the data will be read
@@ -1102,8 +1108,12 @@ static void *thread_registration_apps(void *data)
                 */
                ret = lttcomm_recv_unix_sock(sock, &ust_cmd->reg_msg,
                                sizeof(struct ust_register_msg));
-               if (ret < 0 || ret != sizeof(struct ust_register_msg)) {
-                       perror("lttcomm_recv_unix_sock register apps");
+               if (ret < 0 || ret < sizeof(struct ust_register_msg)) {
+                       if (ret < 0) {
+                               perror("lttcomm_recv_unix_sock register apps");
+                       } else {
+                               ERR("Wrong size received on apps register");
+                       }
                        free(ust_cmd);
                        close(sock);
                        continue;
@@ -1111,6 +1121,12 @@ static void *thread_registration_apps(void *data)
 
                ust_cmd->sock = sock;
 
+               DBG("UST registration received with pid:%d ppid:%d uid:%d"
+                               " gid:%d sock:%d name:%s (version %d.%d)",
+                               ust_cmd->reg_msg.pid, ust_cmd->reg_msg.ppid,
+                               ust_cmd->reg_msg.uid, ust_cmd->reg_msg.gid,
+                               ust_cmd->sock, ust_cmd->reg_msg.name,
+                               ust_cmd->reg_msg.major, ust_cmd->reg_msg.minor);
                /*
                 * Lock free enqueue the registration request.
                 * The red pill has been taken! This apps will be part of the *system*
@@ -1122,9 +1138,6 @@ static void *thread_registration_apps(void *data)
                 * Implicit memory barrier with the exchange in cds_wfq_enqueue.
                 */
                futex_nto1_wake(&ust_cmd_queue.futex);
-
-               DBG("Thread manage apps informed of queued node with sock:%d pid:%d",
-                               sock, ust_cmd->reg_msg.pid);
        }
 
 error:
@@ -1561,13 +1574,6 @@ static int create_kernel_session(struct ltt_session *session)
                session->kernel_session->consumer_fd = kconsumerd_cmd_sock;
        }
 
-       ret = asprintf(&session->kernel_session->trace_path, "%s/kernel",
-                       session->path);
-       if (ret < 0) {
-               perror("asprintf kernel traces path");
-               goto error;
-       }
-
        ret = mkdir_recursive(session->kernel_session->trace_path,
                        S_IRWXU | S_IRWXG, geteuid(), allowed_group());
        if (ret < 0) {
@@ -1807,7 +1813,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
 
                switch (cmd_ctx->lsm->domain.type) {
                case LTTNG_DOMAIN_KERNEL:
-                       kchan = get_kernel_channel_by_name(cmd_ctx->lsm->u.disable.channel_name,
+                       kchan = trace_kernel_get_channel_by_name(cmd_ctx->lsm->u.disable.channel_name,
                                        cmd_ctx->session->kernel_session);
                        if (kchan == NULL) {
                                ret = LTTCOMM_KERN_CHAN_NOT_FOUND;
@@ -1845,14 +1851,14 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
 
                switch (cmd_ctx->lsm->domain.type) {
                case LTTNG_DOMAIN_KERNEL:
-                       kchan = get_kernel_channel_by_name(cmd_ctx->lsm->u.disable.channel_name,
+                       kchan = trace_kernel_get_channel_by_name(cmd_ctx->lsm->u.disable.channel_name,
                                        cmd_ctx->session->kernel_session);
                        if (kchan == NULL) {
                                ret = LTTCOMM_KERN_CHAN_NOT_FOUND;
                                goto error;
                        }
 
-                       kevent = get_kernel_event_by_name(cmd_ctx->lsm->u.disable.name, kchan);
+                       kevent = trace_kernel_get_event_by_name(cmd_ctx->lsm->u.disable.name, kchan);
                        if (kevent != NULL) {
                                DBG("Disabling kernel event %s for channel %s.", kevent->event->name,
                                                kchan->channel->name);
@@ -1888,7 +1894,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
                switch (cmd_ctx->lsm->domain.type) {
                case LTTNG_DOMAIN_KERNEL:
                        DBG("Disabling all enabled kernel events");
-                       kchan = get_kernel_channel_by_name(cmd_ctx->lsm->u.disable.channel_name,
+                       kchan = trace_kernel_get_channel_by_name(cmd_ctx->lsm->u.disable.channel_name,
                                        cmd_ctx->session->kernel_session);
                        if (kchan == NULL) {
                                ret = LTTCOMM_KERN_CHAN_NOT_FOUND;
@@ -1929,7 +1935,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
 
                switch (cmd_ctx->lsm->domain.type) {
                case LTTNG_DOMAIN_KERNEL:
-                       kchan = get_kernel_channel_by_name(cmd_ctx->lsm->u.enable.channel_name,
+                       kchan = trace_kernel_get_channel_by_name(cmd_ctx->lsm->u.enable.channel_name,
                                        cmd_ctx->session->kernel_session);
                        if (kchan == NULL) {
                                /* Channel not found, creating it */
@@ -1987,7 +1993,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
 
                switch (cmd_ctx->lsm->domain.type) {
                case LTTNG_DOMAIN_KERNEL:
-                       kchan = get_kernel_channel_by_name(channel_name,
+                       kchan = trace_kernel_get_channel_by_name(channel_name,
                                        cmd_ctx->session->kernel_session);
                        if (kchan == NULL) {
                                DBG("Channel not found. Creating channel %s", channel_name);
@@ -2004,7 +2010,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
                                        ret = LTTCOMM_KERN_CHAN_FAIL;
                                        goto error;
                                }
-                               kchan = get_kernel_channel_by_name(channel_name,
+                               kchan = trace_kernel_get_channel_by_name(channel_name,
                                                cmd_ctx->session->kernel_session);
                                if (kchan == NULL) {
                                        ERR("Channel %s not found after creation. Internal error, giving up.",
@@ -2014,7 +2020,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
                                }
                        }
 
-                       kevent = get_kernel_event_by_name(cmd_ctx->lsm->u.enable.event.name, kchan);
+                       kevent = trace_kernel_get_event_by_name(cmd_ctx->lsm->u.enable.event.name, kchan);
                        if (kevent == NULL) {
                                DBG("Creating kernel event %s for channel %s.",
                                                cmd_ctx->lsm->u.enable.event.name, channel_name);
@@ -2065,7 +2071,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
 
                switch (cmd_ctx->lsm->domain.type) {
                case LTTNG_DOMAIN_KERNEL:
-                       kchan = get_kernel_channel_by_name(channel_name,
+                       kchan = trace_kernel_get_channel_by_name(channel_name,
                                        cmd_ctx->session->kernel_session);
                        if (kchan == NULL) {
                                DBG("Channel not found. Creating channel %s", channel_name);
@@ -2082,7 +2088,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
                                        ret = LTTCOMM_KERN_CHAN_FAIL;
                                        goto error;
                                }
-                               kchan = get_kernel_channel_by_name(channel_name,
+                               kchan = trace_kernel_get_channel_by_name(channel_name,
                                                cmd_ctx->session->kernel_session);
                                if (kchan == NULL) {
                                        ERR("Channel %s not found after creation. Internal error, giving up.",
@@ -2109,7 +2115,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
                        }
 
                        for (i = 0; i < size; i++) {
-                               kevent = get_kernel_event_by_name(event_list[i].name, kchan);
+                               kevent = trace_kernel_get_event_by_name(event_list[i].name, kchan);
                                if (kevent == NULL) {
                                        /* Default event type for enable all */
                                        event_list[i].type = LTTNG_EVENT_TRACEPOINT;
@@ -2393,7 +2399,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
                struct ltt_kernel_channel *kchan = NULL;
 
                if (cmd_ctx->session->kernel_session != NULL) {
-                       kchan = get_kernel_channel_by_name(cmd_ctx->lsm->u.list.channel_name,
+                       kchan = trace_kernel_get_channel_by_name(cmd_ctx->lsm->u.list.channel_name,
                                        cmd_ctx->session->kernel_session);
                        if (kchan == NULL) {
                                ret = LTTCOMM_KERN_CHAN_NOT_FOUND;
This page took 0.027109 seconds and 4 git commands to generate.