All of lore.kernel.org
 help / color / mirror / Atom feed
From: jolsa@redhat.com (Jiri Olsa)
To: linux-arm-kernel@lists.infradead.org
Subject: perf segmentation fault from NULL dereference
Date: Tue, 2 Oct 2018 13:16:21 +0200	[thread overview]
Message-ID: <20181002111621.GA6357@krava> (raw)
In-Reply-To: <4ac88076-60fa-4509-7fa0-2f99d73174d2@huawei.com>

On Tue, Oct 02, 2018 at 11:41:36AM +0100, John Garry wrote:

SNIP

> > 
> > 
> > ---
> > diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
> > index 1ec1d9bc2d63..fb2a0dab3978 100644
> > --- a/tools/perf/util/header.c
> > +++ b/tools/perf/util/header.c
> > @@ -29,6 +29,7 @@
> >  #include "symbol.h"
> >  #include "debug.h"
> >  #include "cpumap.h"
> > +#include "thread_map.h"
> >  #include "pmu.h"
> >  #include "vdso.h"
> >  #include "strbuf.h"
> > @@ -3579,6 +3580,11 @@ perf_event__synthesize_event_update_cpus(struct perf_tool *tool,
> > 	if (!evsel->own_cpus)
> > 		return 0;
> > 
> > +	if (!evsel->id ||
> 
> for my test, evsel->id is NULL
> 
> > +	    perf_evsel__alloc_id(evsel, cpu_map__nr(evsel->cpus),
> > +				 thread_map__nr(evsel->threads)))
> 
> and then this function is not called as we return immediately. So did you
> really want this:
> 
> if (!evsel->id && perf_evsel__alloc_id(...))
> 	return -ENOMEM;

ugh.. yes ;-) thanks for the fix.. I'll double
check the logic and post the patch this week

jirka

> 
> This looks to work:
> 
> root at localhost:~# ./perf_debug_ record -e armv8_pmuv3_0/br_mis_pred/ sleep 1
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.001 MB perf.data (7 samples) ]
> root at localhost:~# ./perf_debug_ report
> # To display the perf.data header info, please use --header/--header-only
> option
> #
> #
> # Total Lost Samples: 0
> #
> # Samples: 7  of event 'armv8_pmuv3_0/br_mis_pred/'
> # Event count (approx.): 8260
> #
> # Overhead  Command  Shared Object      Symbol
> # ........  .......  .................  ......................
> #
>     78.28%  sleep    libc-2.23.so       [.] 0x00000000000faef0
>     20.53%  sleep    [kernel.kallsyms]  [k] vmacache_find
>      1.09%  sleep    [kernel.kallsyms]  [k] find_vma
>      0.10%  perf_de  [kernel.kallsyms]  [k] perf_event_exec
> 
> 
> #
> # (Cannot load tips.txt file, please install perf!)
> #
> root at localhost:~#
> 
> 
> > +		return -ENOMEM;
> > +
> > 	ev = cpu_map_data__alloc(evsel->own_cpus, &size, &type, &max);
> > 	if (!ev)
> > 		return -ENOMEM;
> > 
> > .
> > 
> 
> 
> Thanks,
> John
> 

WARNING: multiple messages have this Message-ID (diff)
From: Jiri Olsa <jolsa@redhat.com>
To: John Garry <john.garry@huawei.com>
Cc: Andi Kleen <ak@linux.intel.com>, Ingo Molnar <mingo@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Linuxarm <linuxarm@huawei.com>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Will Deacon <will.deacon@arm.com>,
	Mark Rutland <mark.rutland@arm.com>
Subject: Re: perf segmentation fault from NULL dereference
Date: Tue, 2 Oct 2018 13:16:21 +0200	[thread overview]
Message-ID: <20181002111621.GA6357@krava> (raw)
In-Reply-To: <4ac88076-60fa-4509-7fa0-2f99d73174d2@huawei.com>

On Tue, Oct 02, 2018 at 11:41:36AM +0100, John Garry wrote:

SNIP

> > 
> > 
> > ---
> > diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
> > index 1ec1d9bc2d63..fb2a0dab3978 100644
> > --- a/tools/perf/util/header.c
> > +++ b/tools/perf/util/header.c
> > @@ -29,6 +29,7 @@
> >  #include "symbol.h"
> >  #include "debug.h"
> >  #include "cpumap.h"
> > +#include "thread_map.h"
> >  #include "pmu.h"
> >  #include "vdso.h"
> >  #include "strbuf.h"
> > @@ -3579,6 +3580,11 @@ perf_event__synthesize_event_update_cpus(struct perf_tool *tool,
> > 	if (!evsel->own_cpus)
> > 		return 0;
> > 
> > +	if (!evsel->id ||
> 
> for my test, evsel->id is NULL
> 
> > +	    perf_evsel__alloc_id(evsel, cpu_map__nr(evsel->cpus),
> > +				 thread_map__nr(evsel->threads)))
> 
> and then this function is not called as we return immediately. So did you
> really want this:
> 
> if (!evsel->id && perf_evsel__alloc_id(...))
> 	return -ENOMEM;

ugh.. yes ;-) thanks for the fix.. I'll double
check the logic and post the patch this week

jirka

> 
> This looks to work:
> 
> root@localhost:~# ./perf_debug_ record -e armv8_pmuv3_0/br_mis_pred/ sleep 1
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.001 MB perf.data (7 samples) ]
> root@localhost:~# ./perf_debug_ report
> # To display the perf.data header info, please use --header/--header-only
> option
> #
> #
> # Total Lost Samples: 0
> #
> # Samples: 7  of event 'armv8_pmuv3_0/br_mis_pred/'
> # Event count (approx.): 8260
> #
> # Overhead  Command  Shared Object      Symbol
> # ........  .......  .................  ......................
> #
>     78.28%  sleep    libc-2.23.so       [.] 0x00000000000faef0
>     20.53%  sleep    [kernel.kallsyms]  [k] vmacache_find
>      1.09%  sleep    [kernel.kallsyms]  [k] find_vma
>      0.10%  perf_de  [kernel.kallsyms]  [k] perf_event_exec
> 
> 
> #
> # (Cannot load tips.txt file, please install perf!)
> #
> root@localhost:~#
> 
> 
> > +		return -ENOMEM;
> > +
> > 	ev = cpu_map_data__alloc(evsel->own_cpus, &size, &type, &max);
> > 	if (!ev)
> > 		return -ENOMEM;
> > 
> > .
> > 
> 
> 
> Thanks,
> John
> 

  reply	other threads:[~2018-10-02 11:16 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-25 15:53 perf segmentation fault from NULL dereference John Garry
2018-09-25 15:53 ` John Garry
2018-09-27  3:00 ` Andi Kleen
2018-09-27  3:00   ` Andi Kleen
2018-10-02 10:20   ` John Garry
2018-10-02 10:20     ` John Garry
2018-09-27 16:02 ` Jiri Olsa
2018-09-27 16:02   ` Jiri Olsa
2018-10-02 10:41   ` John Garry
2018-10-02 10:41     ` John Garry
2018-10-02 11:16     ` Jiri Olsa [this message]
2018-10-02 11:16       ` Jiri Olsa
2018-10-03 11:36       ` [PATCH] perf tools: Allocate id array in perf_event__synthesize_event_update_cpus Jiri Olsa
2018-10-03 11:36         ` Jiri Olsa
2018-10-03 14:08         ` John Garry
2018-10-03 14:08           ` John Garry
2018-10-03 14:16           ` Jiri Olsa
2018-10-03 14:16             ` Jiri Olsa
2018-10-03 21:20             ` [PATCH] perf tools: Store ids for events with their own cpus perf_event__synthesize_event_update_cpus Jiri Olsa
2018-10-03 21:20               ` Jiri Olsa
2018-10-04  9:20               ` John Garry
2018-10-04  9:20                 ` John Garry
2018-10-09 10:00                 ` Jiri Olsa
2018-10-09 10:00                   ` Jiri Olsa
2018-10-12 13:25                   ` John Garry
2018-10-12 13:25                     ` John Garry
2018-10-15 19:15                     ` Arnaldo Carvalho de Melo
2018-10-15 19:15                       ` Arnaldo Carvalho de Melo
2018-10-16  9:10                       ` John Garry
2018-10-16  9:10                         ` John Garry
2018-10-16 10:47                         ` Jiri Olsa
2018-10-16 10:47                           ` Jiri Olsa
2018-10-18  6:18               ` [tip:perf/urgent] perf evsel: " tip-bot for Jiri Olsa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181002111621.GA6357@krava \
    --to=jolsa@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.