------- Comment From s...@us.ibm.com 2015-01-29 20:31 EDT------- It appears that all fds get POLLHUP and hence get filtered out by the perf_evlist__filter_pollfd(evlist, POLLERR|POLLHUP), check. This happens most of the time but not always. When this happens the mmap is freed (in perf_evlist__munmap_filtered()), but then we do the "goto again" which tries to read from the freed mmap.
With the following patch, I was able to run the 'perf trace sleep 1' several hundred times, but this defeats the purpose of the "draining" check. diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index fb12645..ac25e16 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -2173,8 +2173,10 @@ next_event: int timeout = done ? 100 : -1; if (!draining && perf_evlist__poll(evlist, timeout) > 0) { - if (perf_evlist__filter_pollfd(evlist, POLLERR | POLLHUP) == 0) + if (perf_evlist__filter_pollfd(evlist, POLLERR | POLLHUP) == 0) { draining = true; + goto out_disable; + } goto again; } Li, can you look into why they added the 'draining' check (IOW, why do they go back and read even if perf_evlist___filter_pollfd() returns 0 ? It maybe interesting to see if the mainline code, which at a quick glance seems similar to this code in Ubuntu Vivid, behaves the same way on this system. -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1410673 Title: perf trace sleep 1 is throwing segmentation fault Status in linux package in Ubuntu: New Bug description: == Comment: #0 - PAVAMAN SUBRAMANIYAM <pavsu...@in.ibm.com> - 2015-01-12 02:21:16 == ---Problem Description--- perf trace sleep 1 is throwing segmentation fault Contact Information = pavsu...@in.ibm.com ---uname output--- Linux ubuntu 3.18.0-8-generic #9-Ubuntu SMP Mon Jan 5 22:52:15 UTC 2015 ppc64le ppc64le ppc64le GNU/Linux Machine Type = P8 ---Debugger--- A debugger is not configured ---Steps to Reproduce--- Install a Ubuntu 15.04 guest VM on Power KVM host on a P8 machine. Then execute the below command on the same: root@ubuntu:~# perf trace sleep 1 Segmentation fault (core dumped) root@ubuntu:~# echo $? 139 root@ubuntu:~# perf trace -v sleep 1 mmap size 67174400B Problems reading syscall 3 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 11 information Problems reading syscall 0 information Problems reading syscall 45 information Problems reading syscall 45 information Problems reading syscall 33 information Problems reading syscall 33 information Problems reading syscall 90 information Problems reading syscall 90 information Problems reading syscall 33 information Problems reading syscall 33 information Problems reading syscall 5 information Problems reading syscall 5 information Problems reading syscall 108 information Problems reading syscall 108 information Problems reading syscall 90 information Problems reading syscall 90 information Problems reading syscall 6 information Problems reading syscall 6 information Problems reading syscall 33 information Problems reading syscall 33 information Problems reading syscall 5 information Problems reading syscall 5 information Problems reading syscall 3 information Problems reading syscall 3 information Problems reading syscall 108 information Problems reading syscall 108 information Problems reading syscall 90 information Problems reading syscall 90 information Problems reading syscall 90 information Problems reading syscall 90 information Problems reading syscall 6 information Problems reading syscall 6 information Problems reading syscall 91 information Problems reading syscall 91 information Problems reading syscall 45 information Problems reading syscall 45 information Problems reading syscall 45 information Problems reading syscall 45 information Problems reading syscall 5 information Problems reading syscall 5 information Problems reading syscall 108 information Problems reading syscall 108 information Problems reading syscall 90 information Problems reading syscall 90 information Problems reading syscall 6 information Problems reading syscall 6 information Problems reading syscall 162 information Problems reading syscall 162 information Segmentation fault (core dumped) Stack trace output: no Oops output: no Userspace tool common name: /usr/bin/perf The userspace tool has the following bit modes: 64-bit System Dump Info: The system is not configured to capture a system dump. Userspace rpm: linux-tools-common Userspace tool obtained from project website: na *Additional Instructions for pavsu...@in.ibm.com: -Post a private note with access information to the machine that the bug is occuring on. -Attach sysctl -a output output to the bug. -Attach ltrace and strace of userspace application. == Comment: #3 - SANDHYA VENUGOPALA <vsand...@in.ibm.com> - 2015-01-13 06:00:18 == Segmentation Fault happens intermittently. Execute "perf trace sleep 1" multiple times to ensure there is no segmentation fault on the version you are testing. This failure is seen on the upstream version(3.19) also. GDB output - root@ubuntu:~/linux/tools/perf# ./perf trace sleep 1 Segmentation fault (core dumped) root@ubuntu:~/linux/tools/perf# gdb ./perf core GNU gdb (Ubuntu 7.8.1-1ubuntu2) 7.8.1 Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "powerpc64le-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./perf...done. [New LWP 24493] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/powerpc64le-linux-gnu/libthread_db.so.1". Core was generated by `./perf trace sleep 1 '. Program terminated with signal SIGSEGV, Segmentation fault. #0 perf_mmap__read_head (mm=0x3fff95730058) at util/evlist.h:193 193 int head = ACCESS_ONCE(pc->data_head); (gdb) bt #0 perf_mmap__read_head (mm=0x3fff95730058) at util/evlist.h:193 #1 perf_evlist__mmap_read (evlist=0x1000f851e70, idx=<optimized out>) at util/evlist.c:638 #2 0x000000001004318c in trace__run (argv=<optimized out>, argc=<optimized out>, trace=0x3fffdca33668) at builtin-trace.c:2123 #3 cmd_trace (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin-trace.c:2601 #4 0x0000000010009328 in run_builtin (p=0x10178210 <commands+504>, argc=3, argv=0x3fffdca36800) at perf.c:341 #5 0x00000000100085c8 in handle_internal_command (argv=0x3fffdca36800, argc=3) at perf.c:400 #6 run_argv (argv=0x3fffdca36220, argcp=0x3fffdca3622c) at perf.c:444 #7 main (argc=3, argv=0x3fffdca36800) at perf.c:559 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1410673/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp