From: John Garry <john.garry@huawei.com> To: Jiri Olsa <jolsa@redhat.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: [PATCH] perf tools: Allocate id array in perf_event__synthesize_event_update_cpus Date: Wed, 3 Oct 2018 15:08:10 +0100 [thread overview] Message-ID: <594506a2-8cb3-3d09-82ab-5cb6d8c31ed0@huawei.com> (raw) In-Reply-To: <20181003113643.GA31725@krava> On 03/10/2018 12:36, Jiri Olsa wrote: > On Tue, Oct 02, 2018 at 01:16:21PM +0200, Jiri Olsa wrote: >> 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 > > actualy, we also need to populate those ids ;-) > so calling perf_evsel__store_ids instead.. > attaching the full patch > > thanks, > jirka > Hi Jirka, Can you please double-check your new patch, as I'm getting this now: 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 (6 samples) ] root@localhost:~# ./perf_debug report 0xe8 [0]: failed to process type: 461 Error: failed to process sample # To display the perf.data header info, please use --header/--header-only option # root@localhost:~# Thanks, John > > --- > John reported crash when recording on an event under > pmu with cpumask defined: > > root@localhost:~# ./perf_debug_ record -e armv8_pmuv3_0/br_mis_pred/ sleep 1 > perf: Segmentation fault > Obtained 9 stack frames. > ./perf_debug_() [0x4c5ef8] > [0xffff82ba267c] > ./perf_debug_() [0x4bc5a8] > ./perf_debug_() [0x419550] > ./perf_debug_() [0x41a928] > ./perf_debug_() [0x472f58] > ./perf_debug_() [0x473210] > ./perf_debug_() [0x4070f4] > /lib/aarch64-linux-gnu/libc.so.6(__libc_start_main+0xe0) [0xffff8294c8a0] > Segmentation fault (core dumped) > > We synthesize an update event that needs to touch the evsel > id array, which is not defined at that time. Fixing this > by allocating the array and getting IDs before it's used. > > Reported-by: John Garry <john.garry@huawei.com> > Link: http://lkml.kernel.org/n/tip-8x4n7o34yheigoxm1jibflm6@git.kernel.org > Signed-off-by: Jiri Olsa <jolsa@kernel.org> > --- > tools/perf/util/header.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c > index 1ec1d9bc2d63..14ca27f79d4a 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,9 @@ perf_event__synthesize_event_update_cpus(struct perf_tool *tool, > if (!evsel->own_cpus) > return 0; > > + if (!evsel->id && perf_evsel__store_ids(evsel, evsel->evlist)) > + return -ENOMEM; > + > ev = cpu_map_data__alloc(evsel->own_cpus, &size, &type, &max); > if (!ev) > return -ENOMEM; >
WARNING: multiple messages have this Message-ID (diff)
From: john.garry@huawei.com (John Garry) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH] perf tools: Allocate id array in perf_event__synthesize_event_update_cpus Date: Wed, 3 Oct 2018 15:08:10 +0100 [thread overview] Message-ID: <594506a2-8cb3-3d09-82ab-5cb6d8c31ed0@huawei.com> (raw) In-Reply-To: <20181003113643.GA31725@krava> On 03/10/2018 12:36, Jiri Olsa wrote: > On Tue, Oct 02, 2018 at 01:16:21PM +0200, Jiri Olsa wrote: >> 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 > > actualy, we also need to populate those ids ;-) > so calling perf_evsel__store_ids instead.. > attaching the full patch > > thanks, > jirka > Hi Jirka, Can you please double-check your new patch, as I'm getting this now: 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 (6 samples) ] root at localhost:~# ./perf_debug report 0xe8 [0]: failed to process type: 461 Error: failed to process sample # To display the perf.data header info, please use --header/--header-only option # root at localhost:~# Thanks, John > > --- > John reported crash when recording on an event under > pmu with cpumask defined: > > root at localhost:~# ./perf_debug_ record -e armv8_pmuv3_0/br_mis_pred/ sleep 1 > perf: Segmentation fault > Obtained 9 stack frames. > ./perf_debug_() [0x4c5ef8] > [0xffff82ba267c] > ./perf_debug_() [0x4bc5a8] > ./perf_debug_() [0x419550] > ./perf_debug_() [0x41a928] > ./perf_debug_() [0x472f58] > ./perf_debug_() [0x473210] > ./perf_debug_() [0x4070f4] > /lib/aarch64-linux-gnu/libc.so.6(__libc_start_main+0xe0) [0xffff8294c8a0] > Segmentation fault (core dumped) > > We synthesize an update event that needs to touch the evsel > id array, which is not defined at that time. Fixing this > by allocating the array and getting IDs before it's used. > > Reported-by: John Garry <john.garry@huawei.com> > Link: http://lkml.kernel.org/n/tip-8x4n7o34yheigoxm1jibflm6 at git.kernel.org > Signed-off-by: Jiri Olsa <jolsa@kernel.org> > --- > tools/perf/util/header.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c > index 1ec1d9bc2d63..14ca27f79d4a 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,9 @@ perf_event__synthesize_event_update_cpus(struct perf_tool *tool, > if (!evsel->own_cpus) > return 0; > > + if (!evsel->id && perf_evsel__store_ids(evsel, evsel->evlist)) > + return -ENOMEM; > + > ev = cpu_map_data__alloc(evsel->own_cpus, &size, &type, &max); > if (!ev) > return -ENOMEM; >
next prev parent reply other threads:[~2018-10-03 14:08 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 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 [this message] 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=594506a2-8cb3-3d09-82ab-5cb6d8c31ed0@huawei.com \ --to=john.garry@huawei.com \ --cc=acme@kernel.org \ --cc=ak@linux.intel.com \ --cc=alexander.shishkin@linux.intel.com \ --cc=jolsa@redhat.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxarm@huawei.com \ --cc=mark.rutland@arm.com \ --cc=mingo@redhat.com \ --cc=namhyung@kernel.org \ --cc=peterz@infradead.org \ --cc=will.deacon@arm.com \ /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: linkBe 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.