Fix: consumerd: order of metadata cache vs stream lock
[lttng-tools.git] / src / common / consumer / consumer.c
index bfec997eec808019f28283aa2a42f6fdd7baf913..93e546236bcef04484177d4c67e1f5f2e9a3e014 100644 (file)
@@ -2053,11 +2053,11 @@ void consumer_del_metadata_stream(struct lttng_consumer_stream *stream,
 
        pthread_mutex_lock(&consumer_data.lock);
        pthread_mutex_lock(&stream->chan->lock);
+       pthread_mutex_lock(&stream->lock);
        if (stream->chan->metadata_cache) {
                /* Only applicable to userspace consumers. */
                pthread_mutex_lock(&stream->chan->metadata_cache->lock);
        }
-       pthread_mutex_lock(&stream->lock);
 
        /* Remove any reference to that stream. */
        consumer_stream_delete(stream, ht);
@@ -2081,10 +2081,10 @@ void consumer_del_metadata_stream(struct lttng_consumer_stream *stream,
         */
        stream->chan->metadata_stream = NULL;
 
-       pthread_mutex_unlock(&stream->lock);
        if (stream->chan->metadata_cache) {
                pthread_mutex_unlock(&stream->chan->metadata_cache->lock);
        }
+       pthread_mutex_unlock(&stream->lock);
        pthread_mutex_unlock(&stream->chan->lock);
        pthread_mutex_unlock(&consumer_data.lock);
 
This page took 0.023988 seconds and 4 git commands to generate.