projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: Stream allocation and insertion consistency
[lttng-tools.git]
/
src
/
common
/
kernel-consumer
/
kernel-consumer.c
diff --git
a/src/common/kernel-consumer/kernel-consumer.c
b/src/common/kernel-consumer/kernel-consumer.c
index 4d61cc506f32e57896b96bf72ee50b91cc3a50b5..13cbe2149de6852ed08e6532f6025ff3e382a103 100644
(file)
--- a/
src/common/kernel-consumer/kernel-consumer.c
+++ b/
src/common/kernel-consumer/kernel-consumer.c
@@
-206,18
+206,20
@@
int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
&new_stream->relayd_stream_id);
pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
if (ret < 0) {
&new_stream->relayd_stream_id);
pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
if (ret < 0) {
+ consumer_del_stream(new_stream, NULL);
goto end_nosignal;
}
} else if (msg.u.stream.net_index != -1) {
ERR("Network sequence index %d unknown. Not adding stream.",
msg.u.stream.net_index);
goto end_nosignal;
}
} else if (msg.u.stream.net_index != -1) {
ERR("Network sequence index %d unknown. Not adding stream.",
msg.u.stream.net_index);
-
free(new_stream
);
+
consumer_del_stream(new_stream, NULL
);
goto end_nosignal;
}
if (ctx->on_recv_stream) {
ret = ctx->on_recv_stream(new_stream);
if (ret < 0) {
goto end_nosignal;
}
if (ctx->on_recv_stream) {
ret = ctx->on_recv_stream(new_stream);
if (ret < 0) {
+ consumer_del_stream(new_stream, NULL);
goto end_nosignal;
}
}
goto end_nosignal;
}
}
@@
-230,9
+232,16
@@
int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
} while (ret < 0 && errno == EINTR);
if (ret < 0) {
PERROR("write metadata pipe");
} while (ret < 0 && errno == EINTR);
if (ret < 0) {
PERROR("write metadata pipe");
+ consumer_del_stream(new_stream, NULL);
}
} else {
}
} else {
- consumer_add_stream(new_stream);
+ ret = consumer_add_stream(new_stream);
+ if (ret) {
+ ERR("Consumer add stream %d failed. Continuing",
+ new_stream->key);
+ consumer_del_stream(new_stream, NULL);
+ goto end_nosignal;
+ }
}
DBG("Kernel consumer_add_stream (%d)", fd);
}
DBG("Kernel consumer_add_stream (%d)", fd);
This page took
0.027219 seconds
and
4
git commands to generate.