Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Aug 2005 15:49:22 -0400
From:      John Baldwin <jhb@FreeBSD.org>
To:        freebsd-current@freebsd.org
Cc:        "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>, Filippo Natali <filippo.natali@gmail.com>
Subject:   Re: LOR on AMD64
Message-ID:  <200508221549.24198.jhb@FreeBSD.org>
In-Reply-To: <Pine.BSF.4.53.0508201253380.70501@e0-0.zab2.int.zabbadoz.net>
References:  <200508162342.27570.filippo.natali@gmail.com> <Pine.BSF.4.53.0508201253380.70501@e0-0.zab2.int.zabbadoz.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday 20 August 2005 08:56 am, Bjoern A. Zeeb wrote:
> On Tue, 16 Aug 2005, Filippo Natali wrote:
> > I have the same problem described here:
> >
> > http://lists.freebsd.org/pipermail/freebsd-current/2005-June/051157.html
> >
> > but on my machine I obtain the attached LOR instead of a panic, and the
> > CPU runs at 100%.
> >
> > lock order reversal
> >  1st 0xffffff003d684600 pcm0 (sound cdev) @
> > /usr/src/sys/modules/sound/sound/../../../dev/sound/pcm/dsp.c:214 2nd
> > 0xffffffff8081e860 Giant (Giant) @ /usr/src/sys/kern/kern_synch.c:236
> > KDB: stack backtrace:
> > witness_checkorder() at witness_checkorder+0x4ba
> > _mtx_lock_flags() at _mtx_lock_flags+0x4a
> > msleep() at msleep+0x28a
> > kmem_malloc() at kmem_malloc+0x22f
> > uma_large_malloc() at uma_large_malloc+0x45
> > malloc() at malloc+0x12b
> > sndbuf_remalloc() at sndbuf_remalloc+0x97
> > chn_setblocksize() at chn_setblocksize+0x1d0
> > chn_tryspeed() at chn_tryspeed+0x13b
> > chn_tryformat() at chn_tryformat+0xe7
> > chn_setformat() at chn_setformat+0x20
> > chn_reset() at chn_reset+0xdb
> > dsp_open() at dsp_open+0x20a
> > devfs_open() at devfs_open+0x256
> > VOP_OPEN_APV() at VOP_OPEN_APV+0x74
> > vn_open_cred() at vn_open_cred+0x38c
> > kern_open() at kern_open+0xfd
> > open() at open+0x25
> > syscall() at syscall+0x4b2
> > Xfast_syscall() at Xfast_syscall+0xa8
> > --- syscall (5, FreeBSD ELF64, open), rip = 0x801ad87fc, rsp =
> > 0x7fffffffa748, rbp = 0x1 ---
> >
> > %uname -a
> > FreeBSD ulby.hq.netwing.it 6.0-BETA2 FreeBSD 6.0-BETA2 #0: Fri Aug 12
> > 10:52:32 CEST 2005    
> > root@ulby.hq.netwing.it:/usr/obj/usr/src/sys/GENERIC  amd64
>
> I added the LOR as #129
> 	http://sources.zabbadoz.net/freebsd/lor.html#129

I think the real problem here is that the pcm0 (sound cdev) mutex was held 
across a call to malloc() and that malloc() happened to block.

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508221549.24198.jhb>