Fix: ust-consumer: metadata cache lock not taken when sampling max offset
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 8 Feb 2021 18:03:20 +0000 (13:03 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 8 Feb 2021 18:03:30 +0000 (13:03 -0500)
Found by inspecting the code while searching for an unrelated problem.
The 'max_offset' field is probably only accessed by the sessiond
poll thread, but this isn't a documented (nor reasonably maintainable)
guarantee.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I1d2b29e9a483aa8e49c2db589284b853cce65491

src/common/ust-consumer/ust-consumer.c

index 6a0942e4ee1e8db0b193259884cb8526930cebc7..be00191749ba5e81e03fef925f1c95ee3bb2ee96 100644 (file)
@@ -3063,7 +3063,9 @@ int lttng_ustconsumer_data_pending(struct lttng_consumer_stream *stream)
                uint64_t contiguous, pushed;
 
                /* Ease our life a bit. */
+               pthread_mutex_lock(&stream->chan->metadata_cache->lock);
                contiguous = stream->chan->metadata_cache->max_offset;
+               pthread_mutex_unlock(&stream->chan->metadata_cache->lock);
                pushed = stream->ust_metadata_pushed;
 
                /*
This page took 0.036026 seconds and 4 git commands to generate.