Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1210280 > unrolled thread

[PATCH] perf script: Fix segfault using --show-mmap-events

Started byAdrian Hunter <adrian.hunter@intel.com>
First post2015-08-20 10:30 +0200
Last post2015-08-22 09:00 +0200
Articles 3 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] perf script: Fix segfault using --show-mmap-events Adrian Hunter <adrian.hunter@intel.com> - 2015-08-20 10:30 +0200
    Re: [PATCH] perf script: Fix segfault using --show-mmap-events Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-20 21:30 +0200
    [tip:perf/core] perf script:   Fix segfault using --show-mmap-events tip-bot for Adrian Hunter <tipbot@zytor.com> - 2015-08-22 09:00 +0200

#1210280 — [PATCH] perf script: Fix segfault using --show-mmap-events

FromAdrian Hunter <adrian.hunter@intel.com>
Date2015-08-20 10:30 +0200
Subject[PATCH] perf script: Fix segfault using --show-mmap-events
Message-ID<pZtou-7NR-13@gated-at.bofh.it>
Patch "perf script: Don't assume evsel position of tracking events"
changed 'perf script' to use 'perf_evlist__id2evsel()'. That results
in a segfault if there is more than 1 event and there are
synthesized mmap events e.g.

	$ perf record -e cycles,instructions -p$$ sleep 1
	$ perf script --show-mmap-events
	Segmentation fault (core dumped)

That happens because these synthesized events have an 'id' of zero
which does not match any 'evsel'.

Currently, these synthesized events use the sample type of the first
evsel.

Change 'perf_evlist__id2evsel()' to reflect that which also makes
it consistent with 'perf_evlist__event2evsel()'.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
 tools/perf/util/evlist.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 373f65b02545..e9a5d432902c 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -573,7 +573,7 @@ struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id)
 {
 	struct perf_sample_id *sid;
 
-	if (evlist->nr_entries == 1)
+	if (evlist->nr_entries == 1 || !id)
 		return perf_evlist__first(evlist);
 
 	sid = perf_evlist__id2sid(evlist, id);
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1210692

FromArnaldo Carvalho de Melo <acme@kernel.org>
Date2015-08-20 21:30 +0200
Message-ID<pZDHc-5NN-15@gated-at.bofh.it>
In reply to#1210280
Em Thu, Aug 20, 2015 at 11:26:45AM +0300, Adrian Hunter escreveu:
> Patch "perf script: Don't assume evsel position of tracking events"
> changed 'perf script' to use 'perf_evlist__id2evsel()'. That results
> in a segfault if there is more than 1 event and there are
> synthesized mmap events e.g.
> 
> 	$ perf record -e cycles,instructions -p$$ sleep 1
> 	$ perf script --show-mmap-events
> 	Segmentation fault (core dumped)

Please next time tell what branch this affects, otherwise I'll have to
try it on perf/urgent, notice that the problem is not there, then try it
again on perf/core, where it is, to then apply...

Applied to perf/core.

Thanks,

- Arnaldo
 
> That happens because these synthesized events have an 'id' of zero
> which does not match any 'evsel'.
> 
> Currently, these synthesized events use the sample type of the first
> evsel.
> 
> Change 'perf_evlist__id2evsel()' to reflect that which also makes
> it consistent with 'perf_evlist__event2evsel()'.
> 
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> ---
>  tools/perf/util/evlist.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
> index 373f65b02545..e9a5d432902c 100644
> --- a/tools/perf/util/evlist.c
> +++ b/tools/perf/util/evlist.c
> @@ -573,7 +573,7 @@ struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id)
>  {
>  	struct perf_sample_id *sid;
>  
> -	if (evlist->nr_entries == 1)
> +	if (evlist->nr_entries == 1 || !id)
>  		return perf_evlist__first(evlist);
>  
>  	sid = perf_evlist__id2sid(evlist, id);
> -- 
> 1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1211410 — [tip:perf/core] perf script: Fix segfault using --show-mmap-events

Fromtip-bot for Adrian Hunter <tipbot@zytor.com>
Date2015-08-22 09:00 +0200
Subject[tip:perf/core] perf script: Fix segfault using --show-mmap-events
Message-ID<q0aWt-2Y7-9@gated-at.bofh.it>
In reply to#1210280
Commit-ID:  05169df5561363ff04ac04d6aad0be3b45c26ac1
Gitweb:     http://git.kernel.org/tip/05169df5561363ff04ac04d6aad0be3b45c26ac1
Author:     Adrian Hunter <adrian.hunter@intel.com>
AuthorDate: Thu, 20 Aug 2015 11:26:45 +0300
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 21 Aug 2015 10:29:22 -0300

perf script: Fix segfault using --show-mmap-events

Patch "perf script: Don't assume evsel position of tracking events"
changed 'perf script' to use 'perf_evlist__id2evsel()'. That results
in a segfault if there is more than 1 event and there are
synthesized mmap events e.g.

	$ perf record -e cycles,instructions -p$$ sleep 1
	$ perf script --show-mmap-events
	Segmentation fault (core dumped)

That happens because these synthesized events have an 'id' of zero
which does not match any 'evsel'.

Currently, these synthesized events use the sample type of the first
evsel.

Change 'perf_evlist__id2evsel()' to reflect that which also makes
it consistent with 'perf_evlist__event2evsel()'.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Fixes: 06b234ec26fd ("perf script: Don't assume evsel position of tracking events")
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/1440059205-1765-1-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/evlist.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 373f65b..e9a5d43 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -573,7 +573,7 @@ struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id)
 {
 	struct perf_sample_id *sid;
 
-	if (evlist->nr_entries == 1)
+	if (evlist->nr_entries == 1 || !id)
 		return perf_evlist__first(evlist);
 
 	sid = perf_evlist__id2sid(evlist, id);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web