LOR pcm0:play:0 / kernel environment

Don Lewis truckman at FreeBSD.org
Mon Aug 8 09:20:22 GMT 2005

On  5 Aug, Alexander Leidinger wrote:
> Antoine Brodin <antoine.brodin at laposte.net> wrote:
> CCing multimedia@, since there are the people which may be able to solve ths
> issue.
>> I have a LOR that doesn't seem to be on the LOR page:
>> lock order reversal
>> 1st 0xc30b3b00 pcm0:play:0 (pcm play channel) @ 
>> /usr/src/sys/modules/sound/sound/../../../dev/sound/pcm/channel.c:1134
>> 2nd 0xc06a7900 kernel environment (kernel environment) @ 
>> /usr/src/sys/kern/subr_hints.c:117
>> KDB: stack backtrace:
>> kdb_backtrace(c065a9a4,c06a7900,c0653c0b,c0653c0b,c0658e0a) at 
>> kdb_backtrace+0x2e
>> witness_checkorder(c06a7900,1,c0658e0a,75,e62c9a04) at 
>> witness_checkorder+0x6c3
>> _sx_slock(c06a7900,c0658e0a,75,c0656022,18b) at _sx_slock+0x7e
>> res_find(e62c9b44,0,c2ff42ec,e62c9b58,c0e74b0a) at res_find+0x1bd
>> resource_find(e62c9b44,0,c2ff42ec,e62c9b58,c0e74b0a) at resource_find+0x67
>> resource_int_value(c2ff42ec,0,c0e74b0a,e62c9b70,c30c0100) at 
>> resource_int_value+0x6c
>> vchan_create(c30c0100,0,c0e746b1,100,4) at vchan_create+0x32d
>> sysctl_hw_snd_maxautovchans(c0e778e0,0,4,e62c9bfc,e62c9bfc) at 
>> sysctl_hw_snd_maxautovchans+0x207
>> sysctl_root(0,e62c9c6c,3,e62c9bfc,c3080320) at sysctl_root+0x14e
>> userland_sysctl(c3080320,e62c9c6c,3,0,0) at userland_sysctl+0x122
>> __sysctl(c3080320,e62c9d04,18,422,6) at __sysctl+0xb7
>> syscall(3b,3b,3b,0,bfbfee10) at syscall+0x2a2
>> Xint0x80_syscall() at Xint0x80_syscall+0x1f
>> --- syscall (202, FreeBSD ELF32, __sysctl), eip = 0x2812f17b, esp = 
>> 0xbfbfe55c, ebp = 0xbfbfe588 ---

The last time I looked at the auto vchan code, I came to the conclusion
that it needed to be re-written.  It looked to me like there were some
nasty-looking locking problems and that the vchans and unit numbers
could get out of sync.  I'd recommend manually setting the number of
vchans with the hw.snd.pcm*.vchans sysctl knob.

More information about the freebsd-current mailing list