X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fmain.c;h=eb5d47f62bb6b9bab5e04c7f91524ce22c8c1b12;hp=9fd5c1c75f2684489713d5c83131ad8a406f85cb;hb=1b6083d908666ac98359cd8fc1b32158196db18d;hpb=693bd40bfb043f205d23bfdb194d5754cfa675f2 diff --git a/ltt-sessiond/main.c b/ltt-sessiond/main.c index 9fd5c1c75..eb5d47f62 100644 --- a/ltt-sessiond/main.c +++ b/ltt-sessiond/main.c @@ -390,22 +390,28 @@ static void *thread_manage_kconsumerd(void *data) sem_post(&kconsumerd_sem); DBG("Kconsumerd command socket ready"); } else { - DBG("[sessiond] Kconsumerd error when waiting for SOCK_READY : %s", + DBG("Kconsumerd error when waiting for SOCK_READY : %s", lttcomm_get_readable_code(-code)); goto error; } - /* Wait for any kconsumerd error */ - ret = lttcomm_recv_unix_sock(sock, &code, sizeof(enum lttcomm_return_code)); - if (ret <= 0) { - ERR("[sessiond] Kconsumerd closed the command socket"); - goto error; - } + while (1) { + /* Wait for any kconsumerd error */ + ret = lttcomm_recv_unix_sock(sock, &code, sizeof(enum lttcomm_return_code)); + if (ret <= 0) { + ERR("Kconsumerd closed the command socket"); + goto error; + } - ERR("Kconsumerd return code : %s", lttcomm_get_readable_code(-code)); + ERR("Kconsumerd return code : %s", lttcomm_get_readable_code(-code)); + if (code != KCONSUMERD_POLL_HUP) { + goto error; + } + } error: kconsumerd_pid = 0; + DBG("Kconsumerd thread dying"); return NULL; } @@ -569,6 +575,8 @@ static int start_kconsumerd(void) } pthread_mutex_unlock(&kconsumerd_pid_mutex); + DBG("Kconsumerd pid %d", ret); + DBG("Spawning kconsumerd thread"); ret = spawn_kconsumerd_thread(); @@ -658,6 +666,7 @@ static int create_trace_dir(struct ltt_kernel_session *session) /* Create all channel directories */ cds_list_for_each_entry(chan, &session->channel_list.head, list) { + DBG("Creating trace directory at %s", chan->pathname); ret = mkdir(chan->pathname, S_IRWXU | S_IRWXG ); if (ret < 0) { perror("mkdir trace path"); @@ -672,7 +681,6 @@ error: return ret; } - /* * process_client_msg * @@ -892,6 +900,11 @@ static int process_client_msg(struct command_ctx *cmd_ctx) goto setup_error; } + if (cmd_ctx->session->kernel_session == NULL) { + ret = LTTCOMM_KERN_NO_SESSION; + goto error; + } + DBG("Stop kernel tracing"); ret = kernel_stop_session(cmd_ctx->session->kernel_session);