Re: lockdep oddity

Ingo Molnar
2006-09-05T18:20:32Z

* Heiko Carstens <heiko.carstens@de.ibm.com> wrote:

> The lock validator gives me this (latest -mm and 2.6.18-rc6):
>
> =====================================
> [ BUG: bad unlock balance detected! ]
> -------------------------------------
> swapper/0 is trying to release lock (resource_lock) at:
> [<0000000000042842>] request_resource+0x52/0x88
> but there are no more locks to release!
>
> The reason is that the BUILD_LOCK_OPS macros in kernel/lockdep.c don't
> contain any of the *_acquire calls, while all of the _unlock functions
> contain a *_release call. Hence I get immediately unbalanced locks.

hmmm ... that sounds like a bug. Weird - i recently ran
PREEMPT+SMP+LOCKDEP kernels and didnt notice this.

> Found this will debugging some random memory corruptions that happen
> when CONFIG_PROVE_LOCKING and CONFIG_PROFILE_LIKELY are both on.
> Switching both off or having only one of them on seems to work.

previously i had some weirdnesses with PROFILE_LIKELY too, they were
caused by it generating cross-calls from within lockdep. Do the
corruptions go away if you remove all likely() and unlikely() markings
from kernel/lockdep.c?

Ingo