Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 May 2004 13:02:58 +1000
From:      Tim Robbins <tim@robbins.dropbear.id.au>
To:        Don Bowman <don@sandvine.com>
Cc:        "'current@freebsd.org'" <current@freebsd.org>
Subject:   Re: sysctl lock, system lockup
Message-ID:  <20040531030258.GA13448@cat.robbins.dropbear.id.au>
In-Reply-To: <FE045D4D9F7AED4CBFF1B3B813C85337051D8DEC@mail.sandvine.com>
References:  <FE045D4D9F7AED4CBFF1B3B813C85337051D8DEC@mail.sandvine.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, May 30, 2004 at 10:18:34PM -0400, Don Bowman wrote:
> From: Tim Robbins [mailto:tim@robbins.dropbear.id.au]
> > On Sun, May 30, 2004 at 04:35:55PM -0400, Don Bowman wrote:
> > > From: Don Bowman [mailto:don@sandvine.com]
> > > > On the console i ran 'top', but it wouldn't start,
> > > > giving:
> > > > 
> > > > load: 0.00  cmd: top 4282 [sysctl lock] 0.00u 0.00s 0% 180k
> > > > 
> > > > as the status. I can't ^C it, can't ssh in.
> > > > can still ping the device.
> > > > 
> > > > It was doing a backgound fsck from an earlier hang.
> > > > 
> > > > i have called panic from db, not sure if the core will
> > > > work properly or not.
> > > 
> > > As a followup... i did get a vmcore, and matching kernel.debug,
> > > if someone can suggest what i might look @?
> > 
> > print sysctllock (or just sysctllock.sx_xholder if you don't have a
> > serial console set up.)
> 
> (kgdb) print sysctllock
> $1 = {sx_object = {lo_class = 0xc070dacc, lo_name = 0xc06ce43d "sysctl
> lock", 
>     lo_type = 0xc06ce43d "sysctl lock", lo_flags = 3866624, lo_list = {
>       tqe_next = 0xc074f9e0, tqe_prev = 0xc0747ab0}, lo_witness =
> 0xc0751410}, 
>   sx_lock = 0xc0748e80, sx_cnt = -1, sx_shrd_cv = {
>     cv_description = 0xc06ce43d "sysctl lock", cv_waiters = 0}, 
>   sx_shrd_wcnt = 0, sx_excl_cv = {cv_description = 0xc06ce43d "sysctl lock",
> 
>     cv_waiters = 9}, sx_excl_wcnt = 9, sx_xholder = 0xc8ee2150}

Hmm. How about the value of sysctllock.sx_xholder->td_proc? Then, if possible,
switch to that process (with gdb's proc command) and try to get a backtrace.
(I admit to not having used this feature recently; I'm not completely sure
that it still works. You may need to pass it a thread pointer instead.)


Tim



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