Re: Lockup in tracepoint unregister in sched switch ftrace plugin

From: Mathieu Desnoyers
Date: Tue Oct 21 2008 - 00:12:08 EST


* Steven Rostedt (rostedt@xxxxxxxxxxx) wrote:
>
> Mathieu,
>
> I just downloaded the latest git repo from Linus's tree, and the
> sched_switch start up test locks up. I traced it down to the first
> unregister of a trace point. Here's the call path that I see.
>
> kernel/trace/trace.c: register_tracer
> kernel/trace/trace_selftest.c: trace_selftest_startup_sched_switch
> kernel/trace/trace_sched_switch.c: sched_switch_trace_ctrl_update
> " " : stop_sched_trace
> " " : tracing_stop_cmdline_record
> " " : tracing_stop_sched_switch
> " " : tracing_sched_unregister
>
> which calls unregister_trace_sched_switch define as macro to:
>
> kernel/tracepoint.c: tracepoint_probe_unregister
> " " : remove_tracepoint
> kernel/rcupdate.c: rcu_barrier_sched
> " " : _rcu_barrier
>
> where it gets stuck at that "wait_for_completion".
>
> I'm not sure if, because this is a scheduler trace point that we are
> hitting some kind of race that is preventing the wait_for_completion to
> finish, or what.
>
> I'll look more at it tomorrow.
>

Hi Steven,

Hrm, does this selftest execute early at boot-time ? If yes, and if
classic RCUs are not up yet at that point in bootup, then using
rcu_barrier() will not work well. Another thing to look into is to make
sure tracing_sched_unregister is never called with interrupts or
preemption off.

Mathieu

> -- Steve
>
>

--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
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/