[PATCH 1/1] Ubuntu: Sauce: Disable function tracing after hitting __schedule_bug
Tim Gardner
tim.gardner at canonical.com
Fri Mar 12 15:09:05 UTC 2010
On 03/12/2010 07:23 AM, Chase Douglas wrote:
> If we hit __schedule_bug, then something bad has happened, and it would
> be helpful to get an accurate function trace to see what's going wrong.
> The debugfs function tracer works great for this task, but it spits out
> a ton of information both before and after the real bug occurs. This
> change stops the tracing when we enter __schedule_bug, so the tracing
> report is smaller and leaves the developer with the needed information
> right at the end of the trace.
>
> This should not cause a regression or any negative effects unless
> someone truly wanted to trace through a __schedule_bug call. In that
> case, they can recompile their own kernel without this call. The vast
> majority of tracings that hit __schedule_bug would be enhanced by this
> change.
>
> To see how tracing with this change can be used for "scheduling while
> atomic" bugs, see http://bugs.launchpad.net/bugs/534549.
>
> Signed-off-by: Chase Douglas<chase.douglas at canonical.com>
> ---
> kernel/sched.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/kernel/sched.c b/kernel/sched.c
> index 4d01095..0d2ba50 100644
> --- a/kernel/sched.c
> +++ b/kernel/sched.c
> @@ -5341,6 +5341,8 @@ static noinline void __schedule_bug(struct task_struct *prev)
> {
> struct pt_regs *regs = get_irq_regs();
>
> + tracing_off();
> +
> printk(KERN_ERR "BUG: scheduling while atomic: %s/%d/0x%08x\n",
> prev->comm, prev->pid, preempt_count());
>
Seems reasonable enough. tracing_off() is dead simple, so ought not
cause a regression. Have you discussed this with upstream as to why this
isn't the default behavior?
Acked-by: Tim Gardner <tim.gardner at canonical.com>
--
Tim Gardner tim.gardner at canonical.com
More information about the kernel-team
mailing list