X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.c;h=53c618067f8d6546b91ccc8f77854d7d2b36ed72;hp=295e7be5dab1b533143e4ce2fa6a5be16ddb1c5d;hb=ab1027f48fa7e2dd29b3c85548ec42f26d06be25;hpb=dda67f6c1ffa2bd1bb106b21d1ee353a4c1245f8 diff --git a/src/common/consumer.c b/src/common/consumer.c index 295e7be5d..53c618067 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -923,6 +923,8 @@ void lttng_consumer_should_exit(struct lttng_consumer_local_data *ctx) if (ret < 0) { PERROR("write consumer quit"); } + + DBG("Consumer flag that it should quit"); } void lttng_consumer_sync_trace_file(struct lttng_consumer_stream *stream, @@ -1084,6 +1086,8 @@ void lttng_consumer_destroy(struct lttng_consumer_local_data *ctx) { int ret; + DBG("Consumer destroying it. Closing everything."); + ret = close(ctx->consumer_error_socket); if (ret) { PERROR("close"); @@ -1916,8 +1920,9 @@ restart: len = ctx->on_buffer_ready(stream, ctx); /* It's ok to have an unavailable sub-buffer */ if (len < 0 && len != -EAGAIN && len != -ENODATA) { - rcu_read_unlock(); - goto end; + /* Clean up stream from consumer and free it. */ + lttng_poll_del(&events, stream->wait_fd); + consumer_del_metadata_stream(stream, metadata_ht); } else if (len > 0) { stream->data_read = 1; } @@ -2084,7 +2089,8 @@ void *consumer_thread_data_poll(void *data) len = ctx->on_buffer_ready(local_stream[i], ctx); /* it's ok to have an unavailable sub-buffer */ if (len < 0 && len != -EAGAIN && len != -ENODATA) { - goto end; + /* Clean the stream and free it. */ + consumer_del_stream(local_stream[i], data_ht); } else if (len > 0) { local_stream[i]->data_read = 1; } @@ -2107,7 +2113,8 @@ void *consumer_thread_data_poll(void *data) len = ctx->on_buffer_ready(local_stream[i], ctx); /* it's ok to have an unavailable sub-buffer */ if (len < 0 && len != -EAGAIN && len != -ENODATA) { - goto end; + /* Clean the stream and free it. */ + consumer_del_stream(local_stream[i], data_ht); } else if (len > 0) { local_stream[i]->data_read = 1; }