Re: 2.6.14-rc3-rt2

From: Steven Rostedt
Date: Wed Oct 05 2005 - 08:37:37 EST



Hi Ingo,

I just notice that I get the following output:

BUG: gdm:4351 task might have lost a preemption check!
[<c010433f>] dump_stack+0x1f/0x30 (20)
[<c011c06f>] preempt_enable_no_resched+0x5f/0x70 (20)
[<c011b6c9>] sys_sched_yield+0x69/0xb0 (24)
[<c01033d6>] syscall_call+0x7/0xb (-8116)
---------------------------
| preempt count: 00000000 ]
| 0-level deep critical section nesting:
----------------------------------------

------------------------------
| showing all locks held by: | (gdm/4351 [dbb727a0, 118]):
------------------------------


I looked at this a little and the offending code is here in
sys_sched_yield:

/*
* Since we are going to call schedule() anyway, there's
* no need to preempt or enable interrupts:
*/
spin_unlock_no_resched(&rq->lock);

__schedule();

So what's the reason for the message? Is it to detect when a preemption
count goes to zero and isn't rescheduled? At least in this part of the
kernel it's ok because it is just about to call schedule. So is there
some way to flag this call to not produce the message? Since the message
is only outputed once, it seems useless if it only gets outputted on a
false positive.

-- Steve


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