Re: BUG(): sched.c: Line 944 - 2.5.35

venom@sns.it
Tue, 17 Sep 2002 00:48:30 +0200 (CEST)


OK, I will try this tomorrow morning

Luigi

On 16 Sep 2002, Robert Love wrote:

> Date: 16 Sep 2002 14:42:13 -0400
> From: Robert Love <rml@tech9.net>
> To: Adam J. Richter <adam@yggdrasil.com>
> Cc: linux-kernel@vger.kernel.org, spstarr@sh0n.net, venom@sns.it
> Subject: Re: BUG(): sched.c: Line 944 - 2.5.35
>
> On Mon, 2002-09-16 at 12:36, Adam J. Richter wrote:
>
> > When I see this problem at boot, preempt_count() returns 0x4000000
> > (PREEMPT_ACTIVE) and kernel_locked() returns 0.
> >
> > I don't understand the semantics of PREEMPT_ACTIVE to know
> > whether to
> >
> > (1) change the test back to using in_interrupt instead of in_atomic, or
> > (2) change the definition of in_atomic(), or
> > (3) look for a bug somewhere else.
>
> There are two problems: First, PREEMPT_ACTIVE is indeed set on entry to
> schedule() from preempt_schedule() so we need to check for that too.
> Second, the BUG() is catching a bit of issues... you want something
> like:
>
> - if (unlikely(in_atomic()))
> - BUG();
> + if (unlikely(in_atomic() && preempt_count() != PREEMPT_ACTIVE)) {
> + printk(KERN_ERR "schedule() called while non-atomic!\n");
> + show_stack(NULL);
> + }
>
> I will send a patch to Linus.
>
> > However, I know experimentally that changing the test back to
> > using in_interrupt() results in a possibly unrelated BUG() at line 279
> > of rmap.c:
>
> This is unrelated.
>
> Robert Love
>
> -
> 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/
>

-
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/