[lttng-dev] [PATCH lttng-tools 1/2] Fix: add-context cannot be performed after a session has been started
Jonathan Rajotte
jonathan.rajotte-julien at efficios.com
Mon Feb 5 23:19:00 UTC 2018
The following scenario lead to a corrupted trace/metadata layout problem:
- lttng create test
- lttng enable-channel -u test
- lttng enable-event -u -a -c test
- lttng start
- ./instrumented-application
- lttng stop
- lttng add-context -u -t procname -c test
- lttng start
- ./instrumented-application
- lttng stop
- lttng view
Babeltrace 1.5.x will fail with:
[error] Unexpected end of packet. Either the trace data stream is corrupted or metadata description does not match data layout.
[error] Reading event failed.
Error printing trace.
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
---
src/bin/lttng-sessiond/cmd.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c
index a295059..1a60ce3 100644
--- a/src/bin/lttng-sessiond/cmd.c
+++ b/src/bin/lttng-sessiond/cmd.c
@@ -1650,6 +1650,17 @@ int cmd_add_context(struct ltt_session *session, enum lttng_domain_type domain,
int ret, chan_kern_created = 0, chan_ust_created = 0;
char *app_ctx_provider_name = NULL, *app_ctx_name = NULL;
+ /*
+ * Don't try to add a context if the session has been started at
+ * some point in time before. The tracer does not allow it and would
+ * result in a corrupted trace.
+ */
+ if (session->has_been_started) {
+ ret = LTTNG_ERR_TRACE_ALREADY_STARTED;
+ goto end;
+ }
+
+
if (ctx->ctx == LTTNG_EVENT_CONTEXT_APP_CONTEXT) {
app_ctx_provider_name = ctx->u.app_ctx.provider_name;
app_ctx_name = ctx->u.app_ctx.ctx_name;
--
2.7.4
More information about the lttng-dev
mailing list