Swapfile problem in 6?

Brian Fundakowski Feldman green at freebsd.org
Wed Nov 16 08:24:23 PST 2005


On Wed, Nov 16, 2005 at 04:01:36PM +0100, Lars Kristiansen wrote:
> > On Tue, 2005-Nov-15 02:08:12 -0800, Rob wrote:
> >> makeoptions DEBUG=-g
> >> options INVARIANTS
> >> options WITNESS
> >> options WITNESS_KDB
> >> options KDB
> >> options DDB
> >> options DDB_NUMSYM
> >> options GDB
> >>
> >>Is that enough?
> >
> > If your system is headless, you probably want 'options BREAK_TO_DEBUGGER'
> > as well.
> >
> > First question is: Does the system still deadlock?  INVARIANTS and
> > WITNESS will have added sanity checks which might have picked up the
> > problem.
> >
> >>1) Can I debug a kernel that does not crash, but
> >>   just hangs in a deadlock? Everything seems to
> >>   be frozen, except pinging the PC....
> >
> > Have a look at
> > http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/kerneldebug-online-ddb.html
> > and ddb(4).  Unless you have another system handy, you might like to print
> > out ddb(4) - it's difficult to read man pages when you're in the kernel
> > debugger :-).
> >
> >>2) Is such debugging possible on a headless PC
> >>   without a keyboard attached?
> >>   I do have serial console access.
> >
> > Yes.  See above URL.  The advantage is that you can (hopefully)
> > capture a log of your debug session.  Send a serial BREAK and you
> > should get a DDB> prompt.
> >
> > Basically, wait until your system deadlocks.  BREAK into DDB.
> > As a start, run 'show lockedvnods', 'ps'.  My guess is that you'll
> > see a lock that has a number of waiters - which is probably the
> > culprit.  Use 'panic' to get a crashdump and then you can use kgdb
> > to rummage around once you reboot - see
> > http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/kerneldebug-gdb.html
> >
> > If in doubt, post the output from the above commands here and someone
> > will hopefully provide further input.
> 
> Hello again, I am the "me too"-guy with console-access.
> I am not a programmer and it is the first time I see debugging screen.
> 
> It deadlocked again, and I did as advised above:
> (ddb: show lockedvnods; ps ; panic)
>  but did not understand much of the output.
>  Looked maybe like syncer and swap_pager was locked?
> Do i need to write all this down or can I get the output saved somewhere?
> 
> I got a 32MB coredump but the same lack of understanding applies.
> 
> Please tell me if I can be of any help! This is fun.

Do you have the ability to connect another computer by RS-232?
It's easy to get a serial terminal console going (err that is
if you find the right guide as opposed to stabbing blindly and
just referencing man pages as I like to do.)  The coredump
should supply the same (and more) information, and someone
can walk through with you doing a post-mortem gdb session.

For example, try doing the following now that you have the coredump:
# ps wwwauxlH -N /boot/kernel/kernel -M /var/crash/vmcore.whatever

-- 
Brian Fundakowski Feldman                           \'[ FreeBSD ]''''''''''\
  <> green at FreeBSD.org                               \  The Power to Serve! \
 Opinions expressed are my own.                       \,,,,,,,,,,,,,,,,,,,,,,\


More information about the freebsd-stable mailing list