[lttng-dev] UST context causes empty trace

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Mon May 13 06:06:45 EDT 2013


Fixed by:

commit 83e43212040a26aca40a4f8fefaa3682e9edaa57
Author: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
Date:   Mon May 13 06:02:55 2013 -0400

    Fix: incorrect support for multi-context
    
    * Zifei Tong <soariez at gmail.com> wrote:
    > 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.
    
    Fixes #529
    
    Reported-by: Francis Giraldeau <francis.giraldeau at gmail.com>
    Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>

Thanks!

Mathieu

* Zifei Tong (soariez at gmail.com) wrote:
> 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 <soariez at gmail.com>
> ---
>  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 <mathieu.desnoyers at efficios.com> 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 (francis.giraldeau at gmail.com) 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
> >> lttng-dev at lists.lttng.org
> >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> >
> >
> > --
> > Mathieu Desnoyers
> > EfficiOS Inc.
> > http://www.efficios.com
> >
> > _______________________________________________
> > lttng-dev mailing list
> > lttng-dev at lists.lttng.org
> > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> >
> 
> 
> -- 
> --
> Best Regards,
> 仝子飞 (Zifei Tong)
> College of Computer Science and Technology, Zhejiang University
> 
> soariez at gmail.com / tongzifei at zju.edu.cn

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list