Re: [PATCH 1/7] perf hists browser: Fix event group display

From: Arnaldo Carvalho de Melo
Date: Mon Sep 12 2016 - 10:23:56 EST


Em Mon, Sep 12, 2016 at 03:19:52PM +0900, Namhyung Kim escreveu:
> Milian reported that the event group on TUI shows duplicated overhead.
> This was due to a bug on calculating hpp->buf position. The
> hpp_advance() was called from __hpp__slsmg_color_printf() on TUI but
> it's already called from the hpp__call_print_fn macro in __hpp__fmt().
> The end result is that the print function returns number of bytes it
> printed but the buffer advanced twice of the length.
>
> This is generally not a problem since it doesn't need to access the
> buffer again. But with event group, overhead needs to be printed
> multiple times and hist_entry__snprintf_alignment() tries to fill the
> space with buffer after it printed. So it (brokenly) showed the last
> overhead again.
>
> The bug was there from the beginning, but I think it's only revealed
> when the alignment function was added.

Thanks, applied.

Milian, if you could, please test this, I would then change the line
below to Reported-and-Tested-by: you, if I get it before my next pull
req to Ingo.

- Arnaldo

> Reported-by: Milian Wolff <milian.wolff@xxxxxxxx>
> Fixes: 89fee7094323 ("perf hists: Do column alignment on the format iterator")
> Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>
> ---
> tools/perf/ui/browsers/hists.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
> index f0611c937d4b..35e44b1879e3 100644
> --- a/tools/perf/ui/browsers/hists.c
> +++ b/tools/perf/ui/browsers/hists.c
> @@ -1097,7 +1097,6 @@ static int __hpp__slsmg_color_printf(struct perf_hpp *hpp, const char *fmt, ...)
> ret = scnprintf(hpp->buf, hpp->size, fmt, len, percent);
> ui_browser__printf(arg->b, "%s", hpp->buf);
>
> - advance_hpp(hpp, ret);
> return ret;
> }
>
> --
> 2.9.3