Hi, I did some debugging one this issue. The problem only occurs when we have more than one context field. So this will not work, too:
lttng create lttng enable-event -a -u lttng add-context -u -t vpid lttng add-context -u -t vtid lttng start $@ lttng stop sleep 1 lttng view lttng destroy The problem I found out is wrong `fields` argument passed into `ustcomm_register_channel`. The `fields` argument passed is a pointer to the `event_field` of the first element in a `lttng_ctx_field` array, but not a `lttng_event_field` array as expected. Please see the patch for more details. The patch works on my machine. But I wonder if there is something wrong or maybe a better fix. Please review. Thanks, Zifei Tong Signed-off-by: Zifei Tong <[email protected]> --- liblttng-ust/lttng-events.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/liblttng-ust/lttng-events.c b/liblttng-ust/lttng-events.c index e4faf60..7afe13f 100644 --- a/liblttng-ust/lttng-events.c +++ b/liblttng-ust/lttng-events.c @@ -260,9 +260,10 @@ int lttng_session_enable(struct lttng_session *session) */ cds_list_for_each_entry(chan, &session->chan_head, node) { const struct lttng_ctx *ctx; - const struct lttng_event_field *fields = NULL; + struct lttng_event_field *fields = NULL; size_t nr_fields = 0; uint32_t chan_id; + int i; /* don't change it if session stop/restart */ if (chan->header_type) @@ -270,7 +271,9 @@ int lttng_session_enable(struct lttng_session *session) ctx = chan->ctx; if (ctx) { nr_fields = ctx->nr_fields; - fields = &ctx->fields->event_field; + fields = malloc(nr_fields * sizeof(struct lttng_event_field)); + for (i = 0; i < nr_fields; i++) + fields[i] = ctx->fields[i].event_field; } ret = ustcomm_register_channel(notify_socket, session->objd, @@ -279,6 +282,8 @@ int lttng_session_enable(struct lttng_session *session) fields, &chan_id, &chan->header_type); + if (fields != NULL) + free(fields); if (ret) { DBG("Error (%d) registering channel to sessiond", ret); return ret; -- 1.8.2.2 On 5/12/13, Mathieu Desnoyers <[email protected]> wrote: > Yes, it's broken here too. Can you open a bug report against UST please? > > it looks like those are missing when we enable UST contexts: > > libust[26034/26049]: Sent register channel notification: chan_id 0, > header_type 1 > (in ustcomm_register_channel() at lttng-ust-comm.c:1053) > [...] > libust[26034/26034]: Sent register event notification for name > "ust_tests_hello:tptest": ret_code 0, event_id 0 > (in ustcomm_register_event() at lttng-ust-comm.c:948) > libust[26034/26034]: Sent register event notification for name > "ust_tests_hello:tptest_sighandler": ret_code 0, event_id 1 > (in ustcomm_register_event() at lttng-ust-comm.c:948) > > (I get those in a run where I don't enable any UST context, but not in > the problematic case) > > the rest seems to be there when launching the app with LTTNG_UST_DEBUG=1 > env var set. So it looks like an issue within UST. > > Thanks, > > Mathieu > > * Francis Giraldeau ([email protected]) wrote: >> With 2.2.0-rc2, when enabling some context for UST, the generated trace >> is empty. Here is a small script to reproduce the problem: >> >> $ cat do.sh >> lttng create >> lttng enable-channel u -u >> lttng enable-event -c u -a -u >> lttng add-context -c u -u -t vpid -t vtid >> lttng start >> $@ >> lttng stop >> lttng view >> lttng destroy >> >> When commenting out the "add-context" command, then the trace is >> generated correctly. Does someone else is able to confirm the problem? >> >> Thanks, >> >> Francis Giraldeau >> > > > >> _______________________________________________ >> lttng-dev mailing list >> [email protected] >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev > > > -- > Mathieu Desnoyers > EfficiOS Inc. > http://www.efficios.com > > _______________________________________________ > lttng-dev mailing list > [email protected] > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev > -- -- Best Regards, 仝子飞 (Zifei Tong) College of Computer Science and Technology, Zhejiang University [email protected] / [email protected] _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
