2012-10-15 03:39:57

by Namhyung Kim

[permalink] [raw]
Subject: [PATCH 1/2] perf tools: Fix segfault when using srcline sort key

From: Namhyung Kim <[email protected]>

The srcline sort key is for grouping samples based on their source
file and line number. It use addr2line tool to get the information
but it requires dso name. It caused a segfault when a sample does not
have the name by dereferencing a NULL pointer. Fix it by using raw ip
addresses for those samples.

Signed-off-by: Namhyung Kim <[email protected]>
---
tools/perf/util/sort.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index b5b1b9211960..dd68f115d392 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -260,6 +260,9 @@ static int hist_entry__srcline_snprintf(struct hist_entry *self, char *bf,
if (path != NULL)
goto out_path;

+ if (!self->ms.map)
+ goto out_ip;
+
snprintf(cmd, sizeof(cmd), "addr2line -e %s %016" PRIx64,
self->ms.map->dso->long_name, self->ip);
fp = popen(cmd, "r");
--
1.7.11.4


2012-10-15 03:40:09

by Namhyung Kim

[permalink] [raw]
Subject: [PATCH 2/2] perf tools: Remove warnings on JIT samples for srcline sort key

From: Namhyung Kim <[email protected]>

When using the srcline sort key with perf report, I see many lines of
warning related to JIT samples like below:

addr2line: '/tmp/perf-1397.map': No such file

Since it's not a ELF binary and doesn't provide such information, just
use the raw ip address.

Cc: David Ahern <[email protected]>
Cc: Irina Tirdea <[email protected]>
Signed-off-by: Namhyung Kim <[email protected]>
---
Maybe you want fold this into patch #1 and I'm okay with it. :)

tools/perf/util/sort.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index dd68f115d392..cfd1c0feb32d 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -263,6 +263,9 @@ static int hist_entry__srcline_snprintf(struct hist_entry *self, char *bf,
if (!self->ms.map)
goto out_ip;

+ if (!strncmp(self->ms.map->dso->long_name, "/tmp/perf-", 10))
+ goto out_ip;
+
snprintf(cmd, sizeof(cmd), "addr2line -e %s %016" PRIx64,
self->ms.map->dso->long_name, self->ip);
fp = popen(cmd, "r");
--
1.7.11.4

2012-10-20 00:57:59

by Namhyung Kim

[permalink] [raw]
Subject: [tip:perf/urgent] perf tools: Fix segfault when using srcline sort key

Commit-ID: ffe10c6f95412da01695e659e967747333d5e812
Gitweb: http://git.kernel.org/tip/ffe10c6f95412da01695e659e967747333d5e812
Author: Namhyung Kim <[email protected]>
AuthorDate: Mon, 15 Oct 2012 12:39:42 +0900
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Tue, 16 Oct 2012 13:05:07 -0300

perf tools: Fix segfault when using srcline sort key

The srcline sort key is for grouping samples based on their source file
and line number. It use addr2line tool to get the information but it
requires dso name. It caused a segfault when a sample does not have the
name by dereferencing a NULL pointer. Fix it by using raw ip addresses
for those samples.

Signed-off-by: Namhyung Kim <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/sort.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index b5b1b92..dd68f11 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -260,6 +260,9 @@ static int hist_entry__srcline_snprintf(struct hist_entry *self, char *bf,
if (path != NULL)
goto out_path;

+ if (!self->ms.map)
+ goto out_ip;
+
snprintf(cmd, sizeof(cmd), "addr2line -e %s %016" PRIx64,
self->ms.map->dso->long_name, self->ip);
fp = popen(cmd, "r");

2012-10-20 00:58:58

by Namhyung Kim

[permalink] [raw]
Subject: [tip:perf/urgent] perf tools: Remove warnings on JIT samples for srcline sort key

Commit-ID: 88481b6b33d6cb5edb57e5794abae4daeabd08c5
Gitweb: http://git.kernel.org/tip/88481b6b33d6cb5edb57e5794abae4daeabd08c5
Author: Namhyung Kim <[email protected]>
AuthorDate: Mon, 15 Oct 2012 12:39:43 +0900
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Tue, 16 Oct 2012 13:05:38 -0300

perf tools: Remove warnings on JIT samples for srcline sort key

When using the srcline sort key with perf report, I see many lines of
warning related to JIT samples like below:

addr2line: '/tmp/perf-1397.map': No such file

Since it's not a ELF binary and doesn't provide such information, just
use the raw ip address.

Signed-off-by: Namhyung Kim <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Irina Tirdea <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/sort.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index dd68f11..cfd1c0f 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -263,6 +263,9 @@ static int hist_entry__srcline_snprintf(struct hist_entry *self, char *bf,
if (!self->ms.map)
goto out_ip;

+ if (!strncmp(self->ms.map->dso->long_name, "/tmp/perf-", 10))
+ goto out_ip;
+
snprintf(cmd, sizeof(cmd), "addr2line -e %s %016" PRIx64,
self->ms.map->dso->long_name, self->ip);
fp = popen(cmd, "r");