Re: perf: fuzzer getting stuck with slow memory leak

From: Vince Weaver
Date: Tue May 27 2014 - 16:56:07 EST


On Tue, 27 May 2014, Vince Weaver wrote:

> On Tue, 27 May 2014, Vince Weaver wrote:
>
> > OK, the problem is in:
> >
> > kernel/events/core.c find_get_context()
> >
> > retry:
> > perf_lock_task_context() returns NULL.
> > alloc_perf_context()
> > task->perf_event_ctxp[ctxn] is *not* NULL
> > err == EAGAIN so jump to retry
> >

so after sticking some trace_printk()s in the code, it turns out
that for the software PMU

perf_lock_task_context() returns NULL beause
!atomic_inc_not_zero(&ctx->refcount)
is zero, but
task->perf_event_ctxp[ctxn] still has a value.

And since those conditions never change it just loops forever, stuck.

I'm not sure how the reference count is getting messed up.
This is reproducible so if there's anything useful I can turn on
tracing-wise let me know.

Vince
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/