Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753781AbYJBJmb (ORCPT ); Thu, 2 Oct 2008 05:42:31 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753002AbYJBJmX (ORCPT ); Thu, 2 Oct 2008 05:42:23 -0400 Received: from ecfrec.frec.bull.fr ([129.183.4.8]:51137 "EHLO ecfrec.frec.bull.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752662AbYJBJmW (ORCPT ); Thu, 2 Oct 2008 05:42:22 -0400 Message-ID: <48E49772.10103@bull.net> Date: Thu, 02 Oct 2008 11:42:10 +0200 From: Gilles Carry User-Agent: Mozilla Thunderbird 1.0 (X11/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Gregory Haskins Cc: Chirag Jog , linux-rt-users@vger.kernel.org, linux-kernel@vger.kernel.org, rostedt@goodmis.org, dvhltc@us.ibm.com, dino@in.ibm.com, Jean-Pierre Dion , =?UTF-8?B?U8OpYmFzdGllbiBEdWd1w6k=?= , Tim Chavez Subject: Re: [PATCH] sched: add a stacktrace on enqueue_pushable error References: <20080930044320.GA4685@linux.vnet.ibm.com> <20081001142117.27846.83759.stgit@dev.haskins.net> In-Reply-To: <20081001142117.27846.83759.stgit@dev.haskins.net> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3388 Lines: 112 Hi, I could reproduce the bug on an intel architecture. I found where the problem is. I'll post the patch in a few hours. Gilles. Gregory Haskins wrote: > Hi Chirag, > Please apply this patch to your 26.5-rt9 tree for ppc64, enable > CONFIG_PROVE_LOCKING (which enables CONFIG_STACKTRACE) and give it a whirl. > If you get an oops, please post the console output. > > Thanks! > > -Greg > > ------------------ > sched: add a stacktrace on enqueue_pushable error > > NOT FOR INCLUSION! > > This is to help debug an issue discovered by Chirag Jog in the thread > > http://lkml.org/lkml/2008/9/25/189 > > Signed-off-by: Gregory Haskins > --- > > include/linux/sched.h | 6 ++++++ > kernel/sched_rt.c | 20 +++++++++++++++++++- > 2 files changed, 25 insertions(+), 1 deletions(-) > > diff --git a/include/linux/sched.h b/include/linux/sched.h > index 67da014..53e8a6a 100644 > --- a/include/linux/sched.h > +++ b/include/linux/sched.h > @@ -87,6 +87,7 @@ struct sched_param { > #include > #include > #include > +#include > > #include > > @@ -1170,6 +1171,11 @@ struct task_struct { > > struct list_head tasks; > struct plist_node pushable_tasks; > + struct { > + unsigned long data[15]; > + struct stack_trace trace; > + pid_t pid; > + } pushable_stack; > > /* > * ptrace_list/ptrace_children forms the list of my children > diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c > index 57a0c0d..0e6a88c 100644 > --- a/kernel/sched_rt.c > +++ b/kernel/sched_rt.c > @@ -55,7 +55,25 @@ static void update_rt_migration(struct rq *rq) > > static void enqueue_pushable_task(struct rq *rq, struct task_struct *p) > { > - plist_del(&p->pushable_tasks, &rq->rt.pushable_tasks); > + if (plist_node_empty(&p->pushable_tasks)) { > + struct stack_trace *trace = &p->pushable_stack.trace; > + > + trace->nr_entries = 0; > + trace->max_entries = sizeof(p->pushable_stack.data)/sizeof(p->pushable_stack.data[0]); > + trace->entries = &p->pushable_stack.data[0]; > + trace->skip = 0; > + > + save_stack_trace(trace); > + > + p->pushable_stack.pid = current->pid; > + } else { > + printk(KERN_CRIT "redundant enqueue by %d detected\n", > + p->pushable_stack.pid); > + print_stack_trace(&p->pushable_stack.trace, 5); > + > + BUG_ON(!plist_node_empty(&p->pushable_tasks)); > + } > + > plist_node_init(&p->pushable_tasks, p->prio); > plist_add(&p->pushable_tasks, &rq->rt.pushable_tasks); > } > > -- > To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Gilles.Carry Linux Project team mailto: gilles.carry@bull.net Phone: +33 (0)4 76 29 74 27 Addr.: BULL S.A. 1 rue de Provence, B.P. 208 38432 Echirolles Cedex http://www.bull.com http://www.bullopensource.org/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/