on 23/02/2010 12:03 Санек Гурин said the following:
> FreeBSD freeze
> 
> After update few weeks ago freebsd began to freeze from time to time. Can't 
> find any reason in logs or other way. System may halt after an hour of work, 
> or may work few days. Before halt it may respond to shell commands very-very 
> slow....
> 
> MB: MSI P45 NEO3-FR. BIOS ATA configured as AHCI. JMicron ATA controller is 
> disabled.
> 
> % uname -a
> FreeBSD wk.kiev.ua 8.0-STABLE FreeBSD 8.0-STABLE #3 r204163: Sun Feb 21 
> 10:07:59 EET 2010     [email protected]:/usr/obj/usr/src/sys/GNRDBG  amd64
> 
> Kernel Config: http://xdevs.com/wk/kernel_config.txt
> dmesg output:  http://xdevs.com/wk/dmesg.txt
> 
> 
> panic: _mtx_lock_sleep: recursed on non-recursive mutex ATA state lock @ 
> /usr/sys/dev/ata/ata-all.c:334
> 
> cpuid = 1
> KDB: stack backtrace:
> db_trace_self_wrapper() at 0xffffffff801e05c5a = db_trace_self_wrapper+0x2a
> panic() at 0xffffffff8058d692 = panic+0x182
> _mtx_lock_sleep() at 0xffffffff8057ec52 = _mtx_lock_sleep+0x152
> _mtx_lock_flags() at 0xffffffff8057ed41 = _mtx_lock_flags+exe1
> ata_reinit() at 0xffffffff802723f3 = ata_reinit+0xb3
> ata_conn_event() at 0xffffffff80272b7e = ata_conn_event+0xe3
> taskqueue_run() at 0xffffffff805c9e01 = taskqueue_run+0x91
> taskqueue_thread_loop() at 0xffffffff805c9f8f = taskqueue_thread_loop+0x3f
> fork_exit() at 0xffffffff80564f3a = fork_exit+0x12a
> fork_trampoline() at 0xffffffff8085b84e = fork_trampoline+0xe
> --- trap 0, rip = 0, rsp = 0xffffff80000b9d30, rbp = 0 ---
> Uptime: 19s
> Cannot dump. Device not defined or unavailable.
> Automatic reboot in 15 seconds - press a key on the console to abort
> VOP_STRATEGY: bp in not locked but should be

I believe that this a (well known?) bug in ata driver: state_mtx is not
initialized as recursive, but is used as such.
E.g. it is locked in ata_conn_event and then ata_reinit locks it again.
Of course, an external condition is needed to trigger ata_conn_event in the 
first
place.

-- 
Andriy Gapon
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[email protected]"

Reply via email to