lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 06 Apr 2011 16:45:09 -0600
From:	David Ahern <dsahern@...il.com>
To:	Tim Blechmann <tim@...ngt.org>,
	Arnaldo Carvalho de Melo <acme@...stprotocols.net>
CC:	linux-kernel@...r.kernel.org
Subject: Re: [2.6.39-rc2] perf top fails to mmap - bisected to 70db7533



On 04/06/11 16:15, David Ahern wrote:
> 
> 
> On 04/06/11 14:48, Tim Blechmann wrote:
>>>> David
>>>>
>>>>> this happens when running perf as the same process as the process and
>>>>> when running perf as root.
>>>
>>> yep, works for me as well:
>>>
>>> [acme@...lia ~]$ cat vsyscall.c
>>
>> after including unistd.h, this compiles and works fine. however i cannot profile 
>> any multithreaded program. does this work for you?
>>
>> tim
>>
> 
> That does fail:
> # ps -C rsyslogd -L
>   PID   LWP TTY          TIME CMD
>   795   795 ?        00:00:00 rsyslogd
>   795   797 ?        00:00:00 rsyslogd
>   795   798 ?        00:00:00 rsyslogd
> 
> # /tmp/build-perf/perf top -p 795
> Failed to mmap with 22 (Invalid argument)
> 
> strace shows it failing at:
> ioctl(4, PERF_EVENT_IOC_SET_OUTPUT, 0x3) = -1 EINVAL (Invalid argument)
> 
> Changing to use thread only works:
> # /tmp/build-perf/perf top -t 795

git bisect points to:

70db7533caef02350ec8d6852e589491bca3a951 is the first bad commit
commit 70db7533caef02350ec8d6852e589491bca3a951
Author: Arnaldo Carvalho de Melo <acme@...hat.com>
Date:   Wed Jan 12 22:39:13 2011 -0200

perf evlist: Move the mmap array from perf_evsel

Adopting the new model used in 'perf record', where we don't have a map
per thread per cpu, instead we have an mmap per cpu, established on the
first fd for that cpu and ask the kernel using the
PERF_EVENT_IOC_SET_OUTPUT ioctl to send events for the other fds on that
cpu for the one with the mmap.

The methods moved from perf_evsel to perf_evlist, but for easing review
they were modified in place, in evsel.c, the next patch will move the
migrated methods to evlist.c.

With this 'perf top' now uses the same mmap model used by 'perf record'
and the next patches will make 'perf record' use these new routines,
establishing a common codebase for both tools.

----------

Coincidentally, perf-record is also broken. git bisect points to:

dd7927f4f8ee75b032ff15aeef4bda49719a443a is the first bad commit
commit dd7927f4f8ee75b032ff15aeef4bda49719a443a
Author: Arnaldo Carvalho de Melo <acme@...hat.com>
Date:   Wed Jan 12 14:28:51 2011 -0200

perf record: Use perf_evsel__open

Now its time to factor out the mmap handling bits into the perf_evsel
class.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ