Re: perf: record segfaults for cycles event when collecting data on a VM

Joerg Roedel
2012-02-09T14:48:09Z

On Thu, Feb 09, 2012 at 02:34:47PM +0100, Ingo Molnar wrote:
>
> * Joerg Roedel <joerg.roedel@amd.com> wrote:

> > Well, there are two options:
> >
> > 1) Make sure machine == NULL does not happen. Changing the
> > default of perf_guest back to false does exactly this for
> > David's problem.
>
> So what if it's turned on by the user? Do we still crash
> occasionally?

It is only turned on by perf-kvm, and this path should setup a machine
object for guest samples.

>
> > 2) Make sure that a machine == NULL pointer is never
> > dereferenced
> >
> > I was going to fix it with option 1. Do you suggest option 2 is better?
>
> Looks like the better fix. You said:
>
> > Bottom line is that the perf-tool may receive samples tagged
> > as GUEST_KERNEL even when guest-sampling is disabled (probably
> > a race-condition). The perf-tool can not find a valid machine
> > pointer for such a sample and passes NULL down to the other
> > functions. And some functions don't seem to handle this.
>
> tooling should never be surprised by getting some unexpected
> sample via the perf.data or the ring-buffer - regardless of
> whether that functionality is default enabled or manually
> enabled.

Yeah, right. Guest samples may also show up intentionally when the event
modifiers are used. So crashing on machine==NULL needs to be fixed.

Joerg

--
AMD Operating System Research Center

Advanced Micro Devices GmbH Einsteinring 24 85609 Dornach
General Managers: Alberto Bozzo
Registration: Dornach, Landkr. Muenchen; Registerger. Muenchen, HRB Nr. 43632