Panic: spin lock held too long when booting

Mike Clarke jmc-freebsd at milibyte.co.uk
Wed Jul 16 09:13:29 UTC 2008


On Tuesday 15 July 2008, Kris Kennaway wrote:

> Mike Clarke wrote:
> > I'm getting frequent panics due to spin lock held too long when
> > booting my recently built 6.3 system with an Athlon 4850e dual core
> > processor on a Foxconn 6150M2MA motherboard (GeForce 6150 and
> > nForce 430 chipsets).

[snip]

> You should add options WITNESS also and this will probably generate
> additional debugging and/or a panic before the error occurs.

I rebuilt the kernel yesterday and the system obligingly panicked for me 
this morning. This time things went as far as letting me type in the 
first 2 characters of my password on the KDM login screen then froze. 
After a few minutes of inactivity I powered off and savecore even found 
and saved the core dump when I rebooted.

There didn't appear to be any extra clues in dmesg or /var/log/messages. 
I've no experience of interpreting dumps other than obtaining a 
bactrace so any suggestions on what to do next would be very welcome.

Here's the backtrace:

curlew:/root# uname -a
FreeBSD curlew.lan 6.3-STABLE FreeBSD 6.3-STABLE #4: Tue Jul 15 17:40:18 
BST 2008     root at curlew.lan:/usr/obj/usr/src/sys/CURLEW  i386

curlew:/root# cd /usr/obj/usr/src/sys/CURLEW
curlew:/usr/obj/usr/src/sys/CURLEW# kgdb 
kernel.debug /usr/crash/vmcore.2
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you 
are
welcome to change it and/or distribute copies of it under certain 
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for 
details.
This GDB was configured as "i386-marcel-freebsd"...

Unread portion of the kernel message buffer:
spin lock sio held by 0xc6a65780 for > 5 seconds
exclusive spin mutex sio r = 0 (0xc07d4980) locked 
@ /usr/src/sys/dev/sio/sio.c:1390
panic: spin lock held too long
cpuid = 1
Uptime: 45s
Dumping 1983 MB (2 chunks)
  chunk 0: 1MB (159 pages) ... ok
  chunk 1: 1983MB (507632 pages) 1967 1951 1935 1919 1903 1887 1871 1855 
1839 1823 1807 1791 1775 1759 1743 1727 1711 1695 1679 1663 1647 1631 
1615 1599 1583 1567 1551 1535 1519 1503 1487 1471 1455 1439 1423 1407 
1391 1375 1359 1343 1327 1311 1295 1279 1263 1247 1231 1215 1199 1183 
1167 1151 1135 1119 1103 1087 1071 1055 1039 1023 1007 991 975 959 943 
927 911 895 879 863 847 831 815 799 783 767 751 735 719 703 687 671 655 
639 623 607 591 575 559 543 527 511 495 479 463 447 431 415 399 383 367 
351 335 319 303 287 271 255 239 223 207 191 175 159 143 127 111 95 79 
63 47 31 15

Reading symbols from /boot/kernel/linux.ko...done.
Loaded symbols for /boot/kernel/linux.ko
Reading symbols from /boot/kernel/snd_ich.ko...done.
Loaded symbols for /boot/kernel/snd_ich.ko
Reading symbols from /boot/kernel/sound.ko...done.
Loaded symbols for /boot/kernel/sound.ko
Reading symbols from /boot/kernel/atapicam.ko...done.
Loaded symbols for /boot/kernel/atapicam.ko
Reading symbols from /boot/modules/nvidia.ko...done.
Loaded symbols for /boot/modules/nvidia.ko
Reading symbols from /boot/kernel/cpufreq.ko...done.
Loaded symbols for /boot/kernel/cpufreq.ko
Reading symbols from /boot/kernel/acpi.ko...done.
Loaded symbols for /boot/kernel/acpi.ko
#0  doadump () at pcpu.h:165
165		__asm __volatile("movl %%fs:0,%0" : "=r" (td));
(kgdb) backtrace
#0  doadump () at pcpu.h:165
#1  0xc052eaad in boot (howto=260) 
at /usr/src/sys/kern/kern_shutdown.c:410
#2  0xc052ee03 in panic (fmt=0xc07170dc "spin lock held too long")
    at /usr/src/sys/kern/kern_shutdown.c:566
#3  0xc0525110 in _mtx_lock_spin (m=0xc07d4980, tid=3332789760, opts=0, 
    file=0xc072e277 "/usr/src/sys/dev/sio/sio.c", line=1390)
    at /usr/src/sys/kern/kern_mutex.c:634
#4  0xc0524df0 in _mtx_lock_spin_flags (m=0xc07d4980, opts=0, 
    file=0xc072e277 "/usr/src/sys/dev/sio/sio.c", line=1390)
    at /usr/src/sys/kern/kern_mutex.c:398
#5  0xc06b9b2a in siointr (arg=0x0) at /usr/src/sys/dev/sio/sio.c:1390
#6  0xc06d5a1c in intr_execute_handlers (isrc=0xc6a584a4, 
iframe=0xe55c2c6c)
    at /usr/src/sys/i386/i386/intr_machdep.c:271
#7  0xc06d87ca in lapic_handle_intr (frame=
      {if_vec = 59, if_fs = 8, if_es = 40, if_ds = 40, if_edi 
= -961263592, if_esi = -961263616, if_ebp = -446944080, if_ebx = 0, 
if_edx = 0, if_ecx = 1000, if_eax = 1000, if_eip = -1055641643, if_cs = 
32, if_eflags = 530, if_esp = -446944036, if_ss = -1055671695})
    at /usr/src/sys/i386/i386/local_apic.c:637
#8  0xc06d18e3 in Xapic_isr1 () at apic_vector.s:110
#9  0xc1142fd5 in acpi_cpu_c1 () from /boot/kernel/acpi.ko
#10 0xc113ba71 in acpi_cpu_idle () from /boot/kernel/acpi.ko
#11 0xc06da5d8 in cpu_idle () at /usr/src/sys/i386/i386/machdep.c:1174
#12 0xc0514d85 in idle_proc (dummy=0x0) 
at /usr/src/sys/kern/kern_idle.c:115
#13 0xc0514aa8 in fork_exit (callout=0xc0514d10 <idle_proc>, arg=0x3e8, 
frame=0x3e8)
    at /usr/src/sys/kern/kern_fork.c:788
#14 0xc06d158c in fork_trampoline () 
at /usr/src/sys/i386/i386/exception.s:208
(kgdb) quit

-- 
Mike Clarke


More information about the freebsd-questions mailing list