X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fmain.c;h=4b6a39dd5ecea5ef176139e7da2c6058f5884094;hp=c79a4740577c120179cc67e82e3b54c562e819be;hb=e8209f6b352b3aa279d8d452e396adef6f7159c7;hpb=61403b54c75c41dbadf2ba18ad2d54898a9043ad diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c index c79a47405..4b6a39dd5 100644 --- a/src/bin/lttng-sessiond/main.c +++ b/src/bin/lttng-sessiond/main.c @@ -1629,7 +1629,8 @@ static int join_consumer_thread(struct consumer_data *consumer_data) void *status; int ret; - if (consumer_data->pid != 0) { + /* Consumer pid must be a real one. */ + if (consumer_data->pid > 0) { ret = kill(consumer_data->pid, SIGTERM); if (ret) { ERR("Error killing consumer daemon"); @@ -3630,10 +3631,22 @@ static int cmd_register_consumer(struct ltt_session *session, int domain, goto error; } + socket->lock = zmalloc(sizeof(pthread_mutex_t)); + if (socket->lock == NULL) { + PERROR("zmalloc pthread mutex"); + ret = LTTCOMM_FATAL; + goto error; + } + pthread_mutex_init(socket->lock, NULL); + rcu_read_lock(); consumer_add_socket(socket, session->kernel_session->consumer); rcu_read_unlock(); + pthread_mutex_lock(&kconsumer_data.pid_mutex); + kconsumer_data.pid = -1; + pthread_mutex_unlock(&kconsumer_data.pid_mutex); + break; default: /* TODO: Userspace tracing */