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