Skip site navigation (1)Skip section navigation (2)
Date:      28 Nov 2002 12:07:05 -0600
From:      Craig Boston <craig@meoqu.gank.org>
To:        stable@freebsd.org
Subject:   Re: Help needed debugging hard lock (SMP-related)
Message-ID:  <1038506825.12779.26.camel@aldaris2.auir.gank.org>
In-Reply-To: <1038441616.816.41.camel@aldaris2.auir.gank.org>
References:  <1038441616.816.41.camel@aldaris2.auir.gank.org>

next in thread | previous in thread | raw e-mail | index | archive | help


(kgdb) print pidhashtbl[73508 & pidhash].lh_first->p_pid
$21 = 73508

(kgdb) proc pidhashtbl[73508 & pidhash].lh_first
#0  mi_switch () at machine/globals.h:119
#1  0xc02b53f0 in Xfastintr4 ()
#2  0xc02c8989 in syscall2 (frame={tf_fs = -1078001617, tf_es = 47, 
      tf_ds = -1078001617, tf_edi = -1077938496, tf_esi = 0, 
      tf_ebp = -1077938368, tf_isp = -565383212, tf_ebx = -1077938624, 
      tf_edx = 0, tf_ecx = 3, tf_eax = 93, tf_trapno = 0, tf_err = 2, 
      tf_eip = 672351408, tf_cs = 31, tf_eflags = 515, tf_esp =
-1077938844, 
      tf_ss = 47}) at /usr/src/sys/i386/i386/trap.c:1175
#3  0xc02b4e0b in Xint0x80_syscall ()
#4  0x804a3d3 in ?? ()
#5  0x804a21b in ?? ()
#6  0x8049795 in ?? ()

I'm guessing the the Xfastintr4 and mi_switch are from me breaking into
the debugger, so that would leave the process "running" somewhere in
syscall2...

(kgdb) up 2
#2  0xc02c8989 in syscall2 (frame={tf_fs = -1078001617, tf_es = 47, 
      tf_ds = -1078001617, tf_edi = -1077938496, tf_esi = 0, 
      tf_ebp = -1077938368, tf_isp = -565383212, tf_ebx = -1077938624, 
      tf_edx = 0, tf_ecx = 3, tf_eax = 93, tf_trapno = 0, tf_err = 2, 
      tf_eip = 672351408, tf_cs = 31, tf_eflags = 515, tf_esp =
-1077938844, 
      tf_ss = 47}) at /usr/src/sys/i386/i386/trap.c:1175
1175		error = (*callp->sy_call)(p, args);

(kgdb) print *callp
$22 = {sy_narg = 5, sy_call = 0xc01982e0 <select>}

Assuming I'm reading this right, the process was trying to call
select()?  I'm not sure if it was actually stuck in this one syscall or
looping infinitely.  Even if it was looping, though, it shouldn't freeze
the whole system...

Is there anything more I can do postmortem or do I need to wait for it
to freeze again?

Also, does anyone know of an equivalent for ddb's "show locks" that can
be done from kgdb?

Thanks,
Craig


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1038506825.12779.26.camel>