FreeBSD 10.0 adaptive mutex with strange mtx_lock value = panic

Mateusz Guzik mjguzik at gmail.com
Sat Jun 14 08:48:53 UTC 2014


On Sat, Jun 14, 2014 at 05:50:28PM +1000, Darren Reed wrote:
> In debugging a kernel panic running inside a VM, I found the following:
> 
> (kgdb) p *$15
> $16 = {lock_object = {lo_name = 0xffffffff81a8a224 "filter rule lock",
>     lo_flags = 16908288, lo_data = 0, lo_witness = 0x0}, mtx_lock = 6}
> 
> 16908288 = 0x1020000 (CLASS=1|LO_WITNESS)
> 
> While everything "looks" normal, mtx_lock = MTX_UNOWNED|MTX_CONTESTED
> 
> And kern_mutex.c cannot deal with that.
> 
> This is 100% repeatable/reproducible ...
> 
> Am I dealing with a VM bug or a FreeBSD bug?
> 

This is a 'destroyed mutex' state, i.e. you are doing mtx_lock after
mtx_destroy.

A kernel with INVARIANTS enabled wold tell you that straight away.

-- 
Mateusz Guzik <mjguzik gmail.com>


More information about the freebsd-hackers mailing list