[lttng-dev] [PATCH lttng-tools] Fix: UST subbuffers silently dropped on moderate trace traffic

Jérémie Galarneau jeremie.galarneau at efficios.com
Tue Nov 18 12:11:58 EST 2014


Good catch! Merged in master and all stable branches down to 2.4.

Jérémie

On Tue, Nov 18, 2014 at 11:33 AM, Mathieu Desnoyers
<mathieu.desnoyers at efficios.com> wrote:
> Well, it looks like we really screwed up on this one.
>
> lttng-tools commit 02b3d1769d5f8a33e4109b1e681141c9295dfda6 introduced
> an important regression for lttng-ust tracing in the consumer daemon:
> after reading a sub-buffer, a check has been added to see whether there
> are more sub-buffers available to read, and if it is the case, it
> ensures the wakeup pipe will be awakened again.
>
> The issue lies in the use of ustctl_put_next_subbuf() in this check.
> This acts as if the sub-buffer has been read, when in reality it has not
> been read. It therefore trashes the data contained by this sub-buffer.
>
> This check should use ustctl_put_subbuf(), which does not move the
> consumer position.
>
> This is a severe bug, and the fix needs to be applied to stable-2.6,
> stable-2.5, and stable-2.4.
>
> Fixes #861
>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> ---
>  src/common/ust-consumer/ust-consumer.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/common/ust-consumer/ust-consumer.c b/src/common/ust-consumer/ust-consumer.c
> index 52b6979..24ba387 100644
> --- a/src/common/ust-consumer/ust-consumer.c
> +++ b/src/common/ust-consumer/ust-consumer.c
> @@ -1882,7 +1882,7 @@ static int notify_if_more_data(struct lttng_consumer_stream *stream,
>                 goto end;
>         }
>
> -       ret = ustctl_put_next_subbuf(ustream);
> +       ret = ustctl_put_subbuf(ustream);
>         assert(!ret);
>
>         /* This stream still has data. Flag it and wake up the data thread. */
> --
> 2.1.1
>



-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list