Kernel hanging after today cvsup at Timecounter "TSC
Robert Watson
rwatson at FreeBSD.org
Wed May 23 14:44:53 UTC 2007
On Tue, 22 May 2007, David Wolfskill wrote:
>> I saw an identical problem when I booted a kernel from yesterday with
>> kernel modules from a week or so earlier, only mine froze before getting to
>> the Timecounter line, rather, immediately after the vga0 line. Perhaps
>> we're looking at an issue with mixing modules with a kernel from
>> before/after the compiler upgrade?
>
> I'm about as certain as I can be that ssuch "module-mixing" did not cause
> the hang that I saw on my laptop today, as I was able to successfully boot
> from a kernel built (along with world, at the time) on 19 May (after the gcc
> 4 import).
>
> In my case, the keyboard was unresponsive (e.g., didn't go into "scroll
> lock" mode when I used the keyboard chord to request that), and the fan
> started gaining speed pretty rapidly, so I elected to power-cycle the
> machine aftter a few seconds of trying less disruptive means of getting its
> attention.
>
> I believe the last message displayed had the word "probe" in it. I am
> certain that the system hadn't tried to mount any file systems yet.
>
> Sorry I don't have more specifics handy. I did save the hanging kernel, of
> course.
Indeed, looks like I was on the wrong track -- with INVARIANTS enabled, I see
something more sensible. Apologies for any typos, this is hand-transcribed:
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
panic: corupt spinlock
KDB: enter: panic
[thread pid 0 tid 0 ]
Stopped at kdb_enter+0x32: leave
db> bt
Tracing pid 0 tid 0 td 0xc0b36620
kdb_enter(...) at kdb_enter+0x32
panic(...) at panic+0xc5
statclock(...) at statclock+0x108
hardclock(...) at hardclock+0x37
clkintr(...) at clkintr+0xd2
intr_execute_handlers(...) at intr_execute_handlers+0xe5
atpic_handle_intr(...) at atpic_handle_intr+0xba
Xatpic_intr0() at Xatpic_int0+0x21
--- interrupt, eip = 0xc099409b, esp=0xc1020cb7, ebp = 0xc1020cbc ---
spinlock_exit(...) at spinlock_exit+0x2b
_mtx_unlock_spin_flags(...) at _mtx_unlock_spin_flags+0xdc
atpic_enable_source(...) at atpic_enable_source+0x86
intr_add_handler(...) at intr_add_handler+0xb3
cpu_initclockS(...) at cpu_initclocks+0x50
initclocks(...) at initclocks+0xb
mi_startup(...) at mi_startup+0x96
begin() at begin+0x2c
I've uploaded the actual stack trace with arguments as
http://www.watson.org/~robert/freebsd/20070523-panic.png
The arguments to atpic_handle_intr() and atpic_enable_source() suggest that
the interrupt fires before the code is ready to handle it, or something along
those lines.
Robert N M Watson
Computer Laboratory
University of Cambridge
More information about the freebsd-current
mailing list