panic: Assertion td->td_turnstile != NULL failed at ../../../kern/subr_turnstile.c:478

From: Robert Watson <rwatson_at_FreeBSD.org>
Date: Thu, 8 Jul 2004 22:31:52 -0400 (EDT)
Was doing some stress testing on a box with some if_xl locking tweaks from
Bruce Simpson, and ran into this.  Configuration is a GENERIC kernel
running on a dual-Xeon 2.4GHz (each one with two logical processors, so 
4 HTT processors).  The workload was as follows:

- Apache 1.3 running on the box, 20 recursive wget clients from an
  adjacent machine.

- Simultaneous "supersmack" select key mysql test running with 11 threads
  and 10,000 transactions, running with libkse.

I attempted to log in on the serial console and got this panic:

login: root
Password:panic: Assertion td->td_turnstile != NULL failed at
../../../kern/subr_turnstile.c:478
cpuid = 1; 
Stack backtrace:
backtrace(100,c2ba4840,c088f4a0,c2ba4840,c24ade80) at backtrace+0x12
panic(c07ccf34,c07d2fd8,c07d2dc0,1de,c089a9c0) at panic+0x11e
turnstile_wait(c24ade80,c088f4a0,c22d6b00,c088f4a0,2,c07cf595,20d) at
turnstile_wait+0x23a
_mtx_lock_sleep(c088f4a0,0,c07d873a,208) at _mtx_lock_sleep+0x103
_mtx_lock_flags(c088f4a0,0,c07d873a,208) at _mtx_lock_flags+0x80
vn_read(c291c330,e6ff8c88,c2a54400,1,c2ba4840) at vn_read+0x22
dofileread(c2ba4840,c291c330,20,ac3e528,3b) at dofileread+0xb0
pread(c2ba4840,e6ff8d14,6,a3,202) at pread+0x6d
syscall(ac0002f,ac1002f,bf82002f,3b,0) at syscall+0x217
Xint0x80_syscall() at Xint0x80_syscall+0x1f
--- syscall (198), eip = 0x28472477, esp = 0xbf82a360, ebp = 0xbf82a38c ---
Debugger("panic")
Stopped at      Debugger+0x46:  xchgl   %ebx,in_Debugger.0
db> show pcpu
cpuid        = 1
curthread    = 0xc2ba4840: pid 601 "mysqld"
curpcb       = 0xe6ff8da0
fpcurthread  = none
idlethread   = 0xc225f840: pid 13 "idle: cpu1"
APIC ID      = 1
currentldt   = 0x30
spin locks held:

---

(kgdb) bt
#0  Debugger (msg=0xc07d01bb "panic") at
../../../i386/i386/db_interface.c:319
#1  0xc05eeaa9 in panic (fmt=0xc07ccf34 "Assertion %s failed at %s:%d")
    at ../../../kern/kern_shutdown.c:543
#2  0xc060bfd6 in turnstile_wait (ts=0xc24ade80, lock=0xc088f4a0, 
    owner=0xc22d6b00) at ../../../kern/subr_turnstile.c:518
#3  0xc05e715b in _mtx_lock_sleep (m=0xc088f4a0, opts=0, 
    file=0xc07d873a "../../../kern/vfs_vnops.c", line=520)
    at ../../../kern/kern_mutex.c:541
#4  0xc05e6db4 in _mtx_lock_flags (m=0xc088f4a0, opts=0, 
    file=0xc07d873a "../../../kern/vfs_vnops.c", line=520)
    at ../../../kern/kern_mutex.c:252
#5  0xc064516a in vn_read (fp=0xc291c330, uio=0xe6ff8c88, 
    active_cred=0xc2a54400, flags=1, td=0xc2ba4840)
    at ../../../kern/vfs_vnops.c:520
#6  0xc060ea70 in dofileread (td=0xc2ba4840, fp=0xc291c330, fd=32, 
    buf=0xac3e528, nbyte=59, offset=-4539276580668571630, flags=1)
    at ../../../sys/file.h:234
#7  0xc060e9a5 in pread (td=0xc2ba4840, uap=0xe6ff8d14)
    at ../../../kern/sys_generic.c:144
#8  0xc0769513 in syscall (frame=
      {tf_fs = 180355119, tf_es = 180420655, tf_ds = -1081999313, tf_edi =
59, tf_esi = 0, tf_ebp = -1081957492, tf_isp = -419459724, tf_ebx =
676218668, tf_edx = 180380160, tf_ecx = 179573384, tf_eax = 198, tf_trapno
= 0, tf_err = 2, tf_eip = 675751031, tf_cs = 31, tf_eflags = 514, tf_esp =
-1081957536, tf_ss = 47})
    at ../../../i386/i386/trap.c:1004
(kgdb) up
#1  0xc05eeaa9 in panic (fmt=0xc07ccf34 "Assertion %s failed at %s:%d")
    at ../../../kern/kern_shutdown.c:543
543                     Debugger ("panic");
(kgdb) up
#2  0xc060bfd6 in turnstile_wait (ts=0xc24ade80, lock=0xc088f4a0, 
    owner=0xc22d6b00) at ../../../kern/subr_turnstile.c:518
518                     MPASS(owner == ts->ts_owner);
(kgdb) inspect *ts
$1 = {ts_blocked = {tqh_first = 0xc2ba49a0, tqh_last = 0xc2ba4440}, 
  ts_pending = {tqh_first = 0x0, tqh_last = 0xc24ade88}, ts_hash = {
    le_next = 0x0, le_prev = 0xc089a9c0}, ts_link = {le_next = 0x0, 
    le_prev = 0xc22d6b74}, ts_free = {lh_first = 0xc2a7d9c0}, 
  ts_lockobj = 0xc088f4a0, ts_owner = 0xc22d6b00}
(kgdb) 
(kgdb) up
#3  0xc05e715b in _mtx_lock_sleep (m=0xc088f4a0, opts=0, 
    file=0xc07d873a "../../../kern/vfs_vnops.c", line=520)
    at ../../../kern/kern_mutex.c:541
541                     turnstile_wait(ts, &m->mtx_object, mtx_owner(m));
(kgdb) inspect *m
$2 = {mtx_object = {lo_class = 0xc082af3c, lo_name = 0xc07e0295 "Giant", 
    lo_type = 0xc07e0295 "Giant", lo_flags = 720896, lo_list = {
      tqe_next = 0xc088f460, tqe_prev = 0xc0899770}, lo_witness =
0xc089cac8}, 
  mtx_lock = 3257756418, mtx_recurse = 0}

Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
robert_at_fledge.watson.org      Principal Research Scientist, McAfee Research
Received on Fri Jul 09 2004 - 00:31:55 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:00 UTC