FreeBSD 4.9 RC1 (more bad news)

Dan Strick strick at covad.net
Fri Oct 3 05:13:28 PDT 2003


On Mon, 29 Sep 2003, I wrote:
>>
> A few hours ago I downloaded .../i386/ISO-IMAGES/4.9-RC1-i386-disc1.iso
> and made kern/mfsroot floppies from it.  If I enable my ICH5R SATA
> controller in "native" mode, the 4.9-RC1 GENERIC kernel hangs solidly
> (only the system reset button can unwedge it) during device configuration.
> The last line of bootstrap monologue written by the kernel is:
>
> ...
>>

Then I attempted to find out where in the system startup procedure
the kernel was wedging by inserting printf()s in the kernel source
and narrowed it down to a point in /sys/i386/i386/autoconf.c, near
the end of the function configure():

        /*
         * Now we're ready to handle (pending) interrupts.
         * XXX this is slightly misplaced.
         */
        spl0();

Apparently one of the interrupt handlers is effectively stuck in an
infinite loop at high priority.  In retrospect this is not much of
a surprise, given the problem symptom.

I am not sure how to proceed.  The FreeBSD kernel is a little strange
to me.  Since the kernel wedges so hard, there it no way to interrupt
it and force a core dump or take a stack trace.  The system reset
button wipes out everything.  I am not sure that my system can save
a useful core dump anyway since I have 1 GB of main memory and only
64 MB of swap space.  (This may seem like an odd configuration, but if
you consider the current price of main memory and some other things it
starts to make sense.)  If necessary, I can find some disk space for
the dump.

I also don't know exactly how to force a core dump or use gdb on the
FreeBSD kernel.  My past kernel experience was with PDP-11/VAX Unix
and SunOS.  Is there any documentation or manual pages for such
procedures?  I can't really find any.  (I am aware of the man pages
for gdb, ddb, and savecore.)

Suggestions would be appreciated.  In the mean time, I may try to
instrument the kernel interrupt routines.  Does printf() work in an
interrupt context?  If not, is there an alternative?

Dan Strick
strick at covad.net


More information about the freebsd-stable mailing list