FW: [lkcd-general] This kernel supports KDB but LKCD was invoked directly, not via KDB....

Bruce Edge bedge at troikanetworks.com
Thu Dec 18 11:51:27 PST 2003


If I call dump before kdb, the dump saves something to disk as reboots.
If I use the following instead, ie: call kdb before dump it spins waiting for disk IO to complete.

> You have a misapplied patch to arch/i386/kernel/traps.c.  It 
> is calling
> lkcd before kdb.  die() in arch/i386/kernel/traps.c should 
> look like this.
> 
> void die(const char * str, struct pt_regs * regs, long err)
> {
> 	console_verbose();
> 	spin_lock_irq(&die_lock);
> 	bust_spinlocks(1);
> 	handle_BUG(regs);
> 	printk("%s: %04lx\n", str, err & 0xffff);
> 	show_registers(regs);
> 	bust_spinlocks(0);
> 	spin_unlock_irq(&die_lock);
> #ifdef  CONFIG_KDB
> 	kdb_diemsg = str;
> 	kdb(KDB_REASON_OOPS, err, regs);
> #endif  /* CONFIG_KDB */
> 	dump((char *)str, regs);
> 	do_exit(SIGSEGV);
> }
> 
> Note that dump() is called after kdb.
> 

It appears that kdb is doing something to the processor state that is preventing brw_kiovec() writes from completing.
I added a bunch of printk's to figure out where it was hanging, and it just ends up spinning in kiobuf_wait_for_io() (fs/iobuf.c).
The kiobuf->io-count never decrements.

It doesn't do this if I set a breakpoint at dump_execute_memdump(). The dump completes successfully when I type "go" after it hits the breakpoint.

Is this a case of kdb stopping all but one CPU, thereby not letting the thread handling the disc writes run?
Or, is some interrupt mask being set by kdb that the breakpoint re-enables?

Thnaks, Bruce


Use http://oss.sgi.com/ecartis to modify your settings or to unsubscribe.


More information about the kdb mailing list