From 3dd2c2c6d9e1af9e002267773915d5029b14d17e Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Mon, 5 Feb 2018 18:19:00 -0500 Subject: [PATCH] Fix: add-context cannot be performed after a session has been started MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Jérémie Galarneau --- src/bin/lttng-sessiond/cmd.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c index 731040a3c..edb5a3433 100644 --- a/src/bin/lttng-sessiond/cmd.c +++ b/src/bin/lttng-sessiond/cmd.c @@ -1613,6 +1613,16 @@ 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.34.1