lkml.org 
[lkml]   [2014]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] perf tools: Fix pipe check regression in attr event callback
Em Thu, Jun 05, 2014 at 07:00:11PM +0200, Jiri Olsa escreveu:
> On Thu, Jun 05, 2014 at 06:06:41PM +0200, Stephane Eranian wrote:
> > Hi Jiri,
> >
> > Somehow, I thought you had written a fix to avoid the problem below.
> > But when I try with tip.git, the problem is still there.
> > Could you push your fix ASAP.
> >
> > Thanks.
> >
> > $ perf record -o - noploop 2 | perf inject -b | perf report -i -
> > # To display the perf.data header info, please use
> > --header/--header-only options.
> > #
> > noploop for 2 seconds
> > 0x1bd0 [0x28]: failed to process type: 9
>
> hum, I remember fixing another issue.. this one is
> separated one, please try attached patch.
>
> thanks,
> jirka
>
>
> ---
> The file factoring in builtin-inject.c object introduced regression
> in attr event callback. The commit is:
> 3406912 perf inject: Handle output file via perf_data_file object
>
> Following hunk reversed the logic:
> - if (!inject->pipe_output)
> + if (&inject->output.is_pipe)

Why do we need this '&'? this will always evaluate to true, as it will
get the address of a variable, also adding a ! before it will just it
eval to false always, or am I missing something? :-)

I think this should really be:

if (!inject->output.is_pipe)

No?

- Arnaldo

>
> putting it back, following example now works:
> $ perf record -o - kill | perf inject -b | perf report -i -
>
> Reported-by: Stephane Eranian <eranian@google.com>
> Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
> Cc: David Ahern <dsahern@gmail.com>
> Cc: Frederic Weisbecker <fweisbec@gmail.com>
> Cc: Ingo Molnar <mingo@kernel.org>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> ---
> tools/perf/builtin-inject.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
> index 6a3af00..664010b 100644
> --- a/tools/perf/builtin-inject.c
> +++ b/tools/perf/builtin-inject.c
> @@ -72,7 +72,7 @@ static int perf_event__repipe_attr(struct perf_tool *tool,
> if (ret)
> return ret;
>
> - if (&inject->output.is_pipe)
> + if (!&inject->output.is_pipe)
> return 0;
>
> return perf_event__repipe_synth(tool, event);
> --
> 1.8.3.1


\
 
 \ /
  Last update: 2014-06-05 23:01    [W:0.492 / U:0.068 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site