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 _at_ /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.
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:18 UTC