On Wed, Sep 28, 2011 at 04:27:39PM +0300, Jaakko Heinonen wrote:
> On 2011-09-28, Anton Shterenlikht wrote:
> > KDB: stack backtrace:
> > getenv with the following non-sleepable locks held:
> > exclusive sleep mutex vnode interlock (vnode interlock) r = 0 
> > (0xe000000011950488) locked @ /usr/src/sys/fs/devfs/devfs_vnops.c:406
> > 
> > etc. until a hang, requiring cold reset via MP.
> 
> Someone is calling getenv with a vnode interlock held. You need to
> figure out the caller. Unfortunately the backtrace is missing above.
> 
> As a temporary workaround you could comment the WITNESS_WARN() line in
> getenv() (sys/kern/kern_environment.c) but it is not a real fix.

I do not think that this is the real cause of the panic. Line 406
in devfs_vnops.c belongs to devfs_allocv(), and vnode interlock taken
there must be consumed by LK_INTERLOCK call to vget(). The getenv()
cannot be called from the vget() or two unlock calls between lines
406 and 409.

It seems there is something broken elsewere.

Attachment: pgpP9hKdJwqiy.pgp
Description: PGP signature

Reply via email to