Date: Mon, 23 May 2005 14:27:52 -0400 From: "Robin P. Blanchard" <robin.blanchard@gactr.uga.edu> To: "Doug White" <dwhite@gumbysoft.com> Cc: stable@freebsd.org Subject: RE: RELENG_5 panic Message-ID: <9B5C1FCAFB35084787C21EFFFA78DD9EF136A6@EBE1.gc.nat>
next in thread | raw e-mail | index | archive | help
> Oh another of these wonderful races... can you go to that=20 > frame and "print ts"? If its NULL then someone has ripped=20 > out the ts out from under us since it was checked for NULL in=20 > the previous line! Maybe this is a more useful kgdb session (I'm hoping) # kgdb kernel.debug /usr/local/var/adm/crash/vmcore.44=20 [GDB will not be able to debug user-mode threads: = /usr/lib/libthread_db.so: Undefined symbol "ps_pglobal_lookup"] 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". #0 doadump () at pcpu.h:160 160 __asm __volatile("movl %%fs:0,%0" : "=3Dr" (td)); (kgdb) l *0xc0504808 0xc0504808 is in turnstile_wait = (/usr/src/sys/kern/subr_turnstile.c:245). 240 /* 241 * Pick up the lock that td is blocked on. 242 */ 243 ts =3D td->td_blocked; 244 MPASS(ts !=3D NULL); 245 tc =3D TC_LOOKUP(ts->ts_lockobj); 246 mtx_lock_spin(&tc->tc_lock); 247 248 /* 249 * This thread may not be blocked on this = turnstile anymore (kgdb) bt=20 #0 doadump () at pcpu.h:160 #1 0xc04dd58c in boot (howto=3D260) at = /usr/src/sys/kern/kern_shutdown.c:410 #2 0xc04ddccd in panic (fmt=3D0xc066e594 "%s") at /usr/src/sys/kern/kern_shutdown.c:566 #3 0xc0641e92 in trap_fatal (frame=3D0xc7ac0bc8, eva=3D36) at /usr/src/sys/i386/i386/trap.c:817 #4 0xc0642535 in trap (frame=3D {tf_fs =3D 24, tf_es =3D -1066598384, tf_ds =3D -1066532848, = tf_edi =3D -1053916800, tf_esi =3D -1049515008, tf_ebp =3D -945025988, tf_isp =3D = -945026060, tf_ebx =3D -1053916800, tf_edx =3D -1053937024, tf_ecx =3D 56, tf_eax = =3D 0, tf_trapno =3D 12, tf_err =3D 0, tf_eip =3D -1068480504, tf_cs =3D 8, = tf_eflags =3D 65683, tf_esp =3D -1053914880, tf_ss =3D 582}) at /usr/src/sys/i386/i386/trap.c:255 #5 0xc062da3a in calltrap () at /usr/src/sys/i386/i386/exception.s:140 #6 0x00000018 in ?? () #7 0xc06d0010 in ipq () #8 0xc06e0010 in sc_buffer.3 () #9 0xc12e8180 in ?? () #10 0xc171ac00 in ?? () #11 0xc7ac0c3c in ?? () #12 0xc7ac0bf4 in ?? () #13 0xc12e8180 in ?? () #14 0xc12e3280 in ?? () #15 0x00000038 in ?? () #16 0x00000000 in ?? () #17 0x0000000c in ?? () #18 0x00000000 in ?? () #19 0xc0504808 in turnstile_wait (ts=3D0xc12e3280, lock=3D0xc06d022c, owner=3D0xc171ac00) at /usr/src/sys/kern/subr_turnstile.c:243 #20 0xc04d2b7f in _mtx_lock_sleep (m=3D0xc06d022c, td=3D0xc12e8180, = opts=3D0, file=3D0x0, line=3D0) at /usr/src/sys/kern/kern_mutex.c:552 #21 0xc058a592 in tcp_isn_tick (xtp=3D0x0) at /usr/src/sys/netinet/tcp_subr.c:1380 #22 0xc04ed069 in softclock (dummy=3D0x0) at /usr/src/sys/kern/kern_timeout.c:279 #23 0xc04c460a in ithread_loop (arg=3D0xc12fd500) at /usr/src/sys/kern/kern_intr.c:547 #24 0xc04c32c2 in fork_exit (callout=3D0xc04c4550 <ithread_loop>, = arg=3D0x0, frame=3D0x0) at /usr/src/sys/kern/kern_fork.c:791 #25 0xc062da9c in fork_trampoline () at /usr/src/sys/i386/i386/exception.s:209 (kgdb) frame 19 #19 0xc0504808 in turnstile_wait (ts=3D0xc12e3280, lock=3D0xc06d022c, owner=3D0xc171ac00) at /usr/src/sys/kern/subr_turnstile.c:243 243 ts =3D td->td_blocked; (kgdb) list 238 ts->ts_lockobj->lo_name)); 239 240 /* 241 * Pick up the lock that td is blocked on. 242 */ 243 ts =3D td->td_blocked; 244 MPASS(ts !=3D NULL); 245 tc =3D TC_LOOKUP(ts->ts_lockobj); 246 mtx_lock_spin(&tc->tc_lock); 247 (kgdb) print ts $1 =3D (struct turnstile *) 0xc12e3280 (kgdb) up #20 0xc04d2b7f in _mtx_lock_sleep (m=3D0xc06d022c, td=3D0xc12e8180, = opts=3D0, file=3D0x0, line=3D0) at /usr/src/sys/kern/kern_mutex.c:552 552 turnstile_wait(ts, &m->mtx_object, = mtx_owner(m)); (kgdb) list 547 #endif 548 549 /* 550 * Block on the turnstile. 551 */ 552 turnstile_wait(ts, &m->mtx_object, = mtx_owner(m)); 553 } 554 555 #ifdef KTR 556 if (cont_logged) { (kgdb) print ts $2 =3D (struct turnstile *) 0x0 (kgdb)=20 --------------------------------------- Robin P. Blanchard Systems Integration Specialist Georgia Center for Continuing Education fon: 706.542.2404 < > fax: 706.542.6546 ---------------------------------------
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9B5C1FCAFB35084787C21EFFFA78DD9EF136A6>