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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to