projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix hang in make check snapshots/test_ust
[lttng-tools.git]
/
src
/
common
/
consumer.c
diff --git
a/src/common/consumer.c
b/src/common/consumer.c
index a26a41554d2e379c2e97ad4cca20929627571468..6cf85d96a75b0afa69994886d9a94d91a7faaa29 100644
(file)
--- a/
src/common/consumer.c
+++ b/
src/common/consumer.c
@@
-551,6
+551,7
@@
static int add_stream(struct lttng_consumer_stream *stream,
pthread_mutex_lock(&consumer_data.lock);
pthread_mutex_lock(&stream->chan->lock);
pthread_mutex_lock(&consumer_data.lock);
pthread_mutex_lock(&stream->chan->lock);
+ pthread_mutex_lock(&stream->chan->timer_lock);
pthread_mutex_lock(&stream->lock);
rcu_read_lock();
pthread_mutex_lock(&stream->lock);
rcu_read_lock();
@@
-588,6
+589,7
@@
static int add_stream(struct lttng_consumer_stream *stream,
rcu_read_unlock();
pthread_mutex_unlock(&stream->lock);
rcu_read_unlock();
pthread_mutex_unlock(&stream->lock);
+ pthread_mutex_unlock(&stream->chan->timer_lock);
pthread_mutex_unlock(&stream->chan->lock);
pthread_mutex_unlock(&consumer_data.lock);
pthread_mutex_unlock(&stream->chan->lock);
pthread_mutex_unlock(&consumer_data.lock);
@@
-838,6
+840,7
@@
struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key,
channel->tracefile_count = tracefile_count;
channel->monitor = monitor;
pthread_mutex_init(&channel->lock, NULL);
channel->tracefile_count = tracefile_count;
channel->monitor = monitor;
pthread_mutex_init(&channel->lock, NULL);
+ pthread_mutex_init(&channel->timer_lock, NULL);
/*
* In monitor mode, the streams associated with the channel will be put in
/*
* In monitor mode, the streams associated with the channel will be put in
@@
-884,6
+887,7
@@
int consumer_add_channel(struct lttng_consumer_channel *channel,
pthread_mutex_lock(&consumer_data.lock);
pthread_mutex_lock(&channel->lock);
pthread_mutex_lock(&consumer_data.lock);
pthread_mutex_lock(&channel->lock);
+ pthread_mutex_lock(&channel->timer_lock);
rcu_read_lock();
lttng_ht_lookup(consumer_data.channel_ht, &channel->key, &iter);
rcu_read_lock();
lttng_ht_lookup(consumer_data.channel_ht, &channel->key, &iter);
@@
-900,6
+904,7
@@
int consumer_add_channel(struct lttng_consumer_channel *channel,
end:
rcu_read_unlock();
end:
rcu_read_unlock();
+ pthread_mutex_unlock(&channel->timer_lock);
pthread_mutex_unlock(&channel->lock);
pthread_mutex_unlock(&consumer_data.lock);
pthread_mutex_unlock(&channel->lock);
pthread_mutex_unlock(&consumer_data.lock);
@@
-1153,6
+1158,7
@@
struct lttng_consumer_local_data *lttng_consumer_create(
ctx->consumer_error_socket = -1;
ctx->consumer_metadata_socket = -1;
ctx->consumer_error_socket = -1;
ctx->consumer_metadata_socket = -1;
+ pthread_mutex_init(&ctx->metadata_socket_lock, NULL);
/* assign the callbacks */
ctx->on_buffer_ready = buffer_ready;
ctx->on_recv_channel = recv_channel;
/* assign the callbacks */
ctx->on_buffer_ready = buffer_ready;
ctx->on_recv_channel = recv_channel;
@@
-1955,8
+1961,8
@@
void consumer_del_metadata_stream(struct lttng_consumer_stream *stream,
end:
/*
* Nullify the stream reference so it is not used after deletion. The
end:
/*
* Nullify the stream reference so it is not used after deletion. The
- * c
onsumer data lock MUST be acquired before being able to check for a
- * NULL pointer value.
+ * c
hannel lock MUST be acquired before being able to check for
+ *
a
NULL pointer value.
*/
stream->chan->metadata_stream = NULL;
*/
stream->chan->metadata_stream = NULL;
@@
-1990,6
+1996,7
@@
static int add_metadata_stream(struct lttng_consumer_stream *stream,
pthread_mutex_lock(&consumer_data.lock);
pthread_mutex_lock(&stream->chan->lock);
pthread_mutex_lock(&consumer_data.lock);
pthread_mutex_lock(&stream->chan->lock);
+ pthread_mutex_lock(&stream->chan->timer_lock);
pthread_mutex_lock(&stream->lock);
/*
pthread_mutex_lock(&stream->lock);
/*
@@
-2036,6
+2043,7
@@
static int add_metadata_stream(struct lttng_consumer_stream *stream,
pthread_mutex_unlock(&stream->lock);
pthread_mutex_unlock(&stream->chan->lock);
pthread_mutex_unlock(&stream->lock);
pthread_mutex_unlock(&stream->chan->lock);
+ pthread_mutex_unlock(&stream->chan->timer_lock);
pthread_mutex_unlock(&consumer_data.lock);
return ret;
}
pthread_mutex_unlock(&consumer_data.lock);
return ret;
}
This page took
0.029166 seconds
and
4
git commands to generate.