Skip to contentSkip to conversation

perf test: Dump the stack when test segfaults when in verbose mode

tip:perf/core tip-bot for Arnaldo Carvalho de Melo 1 participant 1 message Dec 18, 2015 perf events

lore
Share & tools
lore
#0 lore raw
Commit-ID:  b6847d2c2a50e96680e233ce4b2784981b6f309e
Gitweb:     http://git.kernel.org/tip/b6847d2c2a50e96680e233ce4b2784981b6f309e
Author:     Arnaldo Carvalho de Melo <[email protected]>
AuthorDate: Fri, 11 Dec 2015 19:06:53 -0300
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Mon, 14 Dec 2015 12:08:55 -0300

perf test: Dump the stack when test segfaults when in verbose mode

E.g.:

  # perf test 26
  26: Test mmap thread lookup                                  : FAILED!
  # perf test -v 26
  26: Test mmap thread lookup                                  :
  --- start ---
  test child forked, pid 9269
  tid = 9269, map = 0x7ff99ff0c000
  tid = 9270, map = 0x7ff99ff0b000
  tid = 9271, map = 0x7ff99ff0a000
  tid = 9272, map = 0x7ff99ff09000
  perf: Segmentation fault
  Obtained 13 stack frames.
  perf(sighandler_dump_stack+0x41) [0x4e3541]
  /lib64/libc.so.6(+0x34960) [0x7ff99d5f6960]
  perf(thread__put+0x5b) [0x4c6f6b]
  perf(machine__process_event+0x14e) [0x4bd37e]
  perf(perf_event__synthesize_threads+0x3aa) [0x48678a]
  perf(test__mmap_thread_lookup+0x20a) [0x474e0a]
  perf() [0x460d56]
  perf(cmd_test+0x589) [0x461319]
  perf() [0x47c641]
  perf(main+0x617) [0x422317]
  /lib64/libc.so.6(__libc_start_main+0xf0) [0x7ff99d5e1fe0]
  perf() [0x422429]
  [(nil)]
  test child interrupted
  ---- end ----
  Test mmap thread lookup: FAILED!
  #
---
 tools/perf/tests/builtin-test.c | 3 +++
 1 file changed, 3 insertions(+)
tools/perf/tests/builtin-test.c +3 -0
index 2b1ade1..fa98406 100644
@@ -236,6 +236,9 @@ static int run_test(struct test *test, int subtest)
 				dup2(STDOUT_FILENO, STDERR_FILENO);
 				close(nullfd);
 			}
+		} else {
+			signal(SIGSEGV, sighandler_dump_stack);
+			signal(SIGFPE, sighandler_dump_stack);
 		}
 
 		err = test->func(subtest);