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 <[email protected]> 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 <[email protected]> > --- > 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 _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
