Re: Bug: "bad unlock balance detected" 2.6.27-rc3-next-20080820

From: Vegard Nossum
Date: Thu Aug 21 2008 - 04:10:52 EST


On Thu, Aug 21, 2008 at 9:04 AM, jay kumar <jaykumarks@xxxxxxxxx> wrote:
> While testing 2.6.27-rc3-next-20080820 , i observed this "BUG:bad
> unlock balance detected" during boot time
>
> commit 765d4840cc9cca98c0cc4ff4764608780c3265f6
> Author: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
> Date: Wed Aug 20 18:59:47 2008 +1000
>
>
> Bug info:
>
> [ 0.140173] =====================================
> [ 0.145977] [ BUG: bad unlock balance detected! ]
> [ 0.145977] -------------------------------------
> [ 0.145977] khelper/12 is trying to release lock (&p->cred_exec_mutex) at:
> [ 0.146977] [<c05c624f>] mutex_unlock+0xd/0xf
> [ 0.146977] but there are no more locks to release!
> [ 0.146977]
> [ 0.146977] other info that might help us debug this:
> [ 0.146977] no locks held by khelper/12.
> [ 0.146977]
> [ 0.146977] stack backtrace:
> [ 0.146977] Pid: 12, comm: khelper Not tainted 2.6.27-rc3-next-20080820 #13
> [ 0.146977] [<c05c624f>] ? mutex_unlock+0xd/0xf
> [ 0.146977] [<c0242944>] print_unlock_inbalance_bug+0xa5/0xb2
> [ 0.146977] [<c05c624f>] ? mutex_unlock+0xd/0xf
> [ 0.146977] [<c0245cd7>] lock_release+0x8f/0x186
> [ 0.146977] [<c05c61f0>] __mutex_unlock_slowpath+0x9b/0xed
> [ 0.146977] [<c05c624f>] mutex_unlock+0xd/0xf
> [ 0.146977] [<c029506f>] free_bprm+0x24/0x39
> [ 0.146977] [<c029644e>] do_execve+0x1e5/0x1fb
> [ 0.146977] [<c0202156>] sys_execve+0x2e/0x51
> [ 0.146977] [<c0203a72>] syscall_call+0x7/0xb
> [ 0.146977] [<c0206654>] ? kernel_execve+0x1c/0x21
> [ 0.146977] [<c023383c>] ? ____call_usermodehelper+0x0/0x129
> [ 0.146977] [<c023395b>] ? ____call_usermodehelper+0x11f/0x129
> [ 0.146977] [<c023383c>] ? ____call_usermodehelper+0x0/0x129
> [ 0.146977] [<c020466b>] ? kernel_thread_helper+0x7/0x10
> [ 0.146977] =======================

(config clipped)

Hi,

Thanks for the report. The error comes from

commit d9a939fb80ef390b78b3c801f668bd1e35ebc970
Author: David Howells <dhowells@xxxxxxxxxx>
Date: Thu Aug 7 20:02:20 2008 +1000

CRED: Make execve() take advantage of copy-on-write credentials

(Added to Cc. I guess it's also nice to Cc linux-next on errors in -next code.)

I couldn't reproduce your original failure, but I've attempted to fix
it by reordering the mutex unlock and bprm free and removing the
extraneous unlock (see attached patch; it boots for me without
errors).


Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036

Attachment: fix-execve.patch
Description: Binary data