Skip to contentSkip to conversation

Fixes: cfc8874a485 ("perf script: Process cpu/threads maps")

PATCH Applied Chris Phlipot 4 participants 4 messages Mar 9, 2016 – Mar 11, 2016 perf events

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fixes: cfc8874a485 ("perf script: Process cpu/threads maps")

fix the perf script python database export crash.
Remove the union in evsel so that the database id and priv pointer can be used simultainously without conflicting and crashing.

Detailed Description for the fixed bug follows:

perf script crashes with a segmentaiton fault on user space tool version 4.5.rc7.ge2857b when using the python database export API. It works properly in 4.4 and prior versions.

the crash fist appeared in
cfc8874a485 ("perf script: Process cpu/threads maps")

How to reprodcue the bug:

remove any temporary files left over from a previous crash (if you have already attemped to reproduce the bug):

$ rm -r test_db-perf-data
$ dropdb test_db
$ ./perf record timeout 1 yes >/dev/null
$ ./perf script -s scripts/python/export-to-postgresql.py test_db

Stack Trace:
Program received signal SIGSEGV, Segmentation fault. __GI___libc_free (mem=0x1) at malloc.c:2929
2929 malloc.c: No such file or directory.
(gdb) bt

    at util/stat.c:122
    argv=<optimized out>, prefix=<optimized out>) at builtin-script.c:2231
    argc=argc@entry=4, argv=argv@entry=0x7fffffffdf70) at perf.c:390
    at perf.c:451
---
 tools/perf/util/evsel.h | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
tools/perf/util/evsel.h +2 -4
index 8e75434..4d8037a 100644
@@ -93,10 +93,8 @@ struct perf_evsel {
 	const char		*unit;
 	struct event_format	*tp_format;
 	off_t			id_offset;
-	union {
-		void		*priv;
-		u64		db_id;
-	};
+	void			*priv;
+	u64			db_id;
 	struct cgroup_sel	*cgrp;
 	void			*handler;
 	struct cpu_map		*cpus;
Signature · 1 line
1.9.1
Acked-by on v1 1/1
#1 lore raw
Quoted 4 lines · Chris Phlipot

fix the perf script python database export crash.
Remove the union in evsel so that the database id and priv pointer can be used simultainously without conflicting and crashing.

Quoted 8 lines

Detailed Description for the fixed bug follows:

perf script crashes with a segmentaiton fault on user space tool version 4.5.rc7.ge2857b when using the python database export API. It works properly in 4.4 and prior versions.

the crash fist appeared in
cfc8874a485 ("perf script: Process cpu/threads maps")

ouch, missed this one..

thanks,
jirka

maintainer Applied
#2 lore raw

Em Wed, Mar 09, 2016 at 09:02:46AM +0100, Jiri Olsa escreveu:

Quoted 11 lines · Chris Phlipot
Quoted 10 lines

fix the perf script python database export crash.
Remove the union in evsel so that the database id and priv pointer can be used simultainously without conflicting and crashing.

Detailed Description for the fixed bug follows:

perf script crashes with a segmentaiton fault on user space tool version 4.5.rc7.ge2857b when using the python database export API. It works properly in 4.4 and prior versions.

Quoted 6 lines
Quoted 2 lines

the crash fist appeared in
cfc8874a485 ("perf script: Process cpu/threads maps")

ouch, missed this one..

Thanks, applied.

- Arnaldo

#3 lore raw

[tip:perf/core] perf tools: Fix perf script python database export crash

In reply to Chris Phlipot
perf tools: Fix perf script python database export crash
Commit-ID:  616df645d7238e45d3b369933a30fee4e4e305e2
Gitweb:     http://git.kernel.org/tip/616df645d7238e45d3b369933a30fee4e4e305e2
Author:     Chris Phlipot <[email protected]>
AuthorDate: Tue, 8 Mar 2016 21:11:54 -0800
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Wed, 9 Mar 2016 10:31:02 -0300

perf tools: Fix perf script python database export crash

Remove the union in evsel so that the database id and priv pointer can be used simultainously without conflicting and crashing.

Detailed Description for the fixed bug follows:

perf script crashes with a segmentation fault on user space tool version 4.5.rc7.ge2857b when using the python database export API. It works properly in 4.4 and prior versions.

the crash fist appeared in:

cfc8874a4859 ("perf script: Process cpu/threads maps")

How to reproduce the bug:

Remove any temporary files left over from a previous crash (if you have already attemped to reproduce the bug):

  $ rm -r test_db-perf-data
  $ dropdb test_db
  $ perf record timeout 1 yes >/dev/null
  $ perf script -s scripts/python/export-to-postgresql.py test_db

Stack Trace:
Program received signal SIGSEGV, Segmentation fault. __GI___libc_free (mem=0x1) at malloc.c:2929
2929 malloc.c: No such file or directory.
(gdb) bt

    at util/stat.c:122
    argv=<optimized out>, prefix=<optimized out>) at builtin-script.c:2231
    argc=argc@entry=4, argv=argv@entry=0x7fffffffdf70) at perf.c:390
    at perf.c:451
Cc Adrian Hunter <[email protected]>
Cc Peter Zijlstra <[email protected]>
Fixes cfc8874a4859 ("perf script: Process cpu/threads maps")
---
 tools/perf/util/evsel.h | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
tools/perf/util/evsel.h +2 -4
index efad78f..501ea6e 100644
@@ -93,10 +93,8 @@ struct perf_evsel {
 	const char		*unit;
 	struct event_format	*tp_format;
 	off_t			id_offset;
-	union {
-		void		*priv;
-		u64		db_id;
-	};
+	void			*priv;
+	u64			db_id;
 	struct cgroup_sel	*cgrp;
 	void			*handler;
 	struct cpu_map		*cpus;