projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: sessiond vs consumerd push/get metadata deadlock
[lttng-tools.git]
/
src
/
common
/
consumer.c
diff --git
a/src/common/consumer.c
b/src/common/consumer.c
index 1cb1c47431303e6ed3c516948a78b5807855c48c..526fbbf35c157f2bf545ef53b68dc0e45ef17365 100644
(file)
--- a/
src/common/consumer.c
+++ b/
src/common/consumer.c
@@
-563,6
+563,7
@@
struct lttng_consumer_stream *consumer_allocate_stream(uint64_t channel_key,
stream->endpoint_status = CONSUMER_ENDPOINT_ACTIVE;
stream->index_fd = -1;
pthread_mutex_init(&stream->lock, NULL);
stream->endpoint_status = CONSUMER_ENDPOINT_ACTIVE;
stream->index_fd = -1;
pthread_mutex_init(&stream->lock, NULL);
+ pthread_mutex_init(&stream->metadata_timer_lock, NULL);
/* If channel is the metadata, flag this stream as metadata. */
if (type == CONSUMER_CHANNEL_TYPE_METADATA) {
/* If channel is the metadata, flag this stream as metadata. */
if (type == CONSUMER_CHANNEL_TYPE_METADATA) {
@@
-937,6
+938,7
@@
struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key,
uint64_t session_id_per_pid,
unsigned int monitor,
unsigned int live_timer_interval,
uint64_t session_id_per_pid,
unsigned int monitor,
unsigned int live_timer_interval,
+ const char *root_shm_path,
const char *shm_path)
{
struct lttng_consumer_channel *channel;
const char *shm_path)
{
struct lttng_consumer_channel *channel;
@@
-994,6
+996,10
@@
struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key,
strncpy(channel->name, name, sizeof(channel->name));
channel->name[sizeof(channel->name) - 1] = '\0';
strncpy(channel->name, name, sizeof(channel->name));
channel->name[sizeof(channel->name) - 1] = '\0';
+ if (root_shm_path) {
+ strncpy(channel->root_shm_path, root_shm_path, sizeof(channel->root_shm_path));
+ channel->root_shm_path[sizeof(channel->root_shm_path) - 1] = '\0';
+ }
if (shm_path) {
strncpy(channel->shm_path, shm_path, sizeof(channel->shm_path));
channel->shm_path[sizeof(channel->shm_path) - 1] = '\0';
if (shm_path) {
strncpy(channel->shm_path, shm_path, sizeof(channel->shm_path));
channel->shm_path[sizeof(channel->shm_path) - 1] = '\0';
This page took
0.023555 seconds
and
4
git commands to generate.