port of Kdebug - Linux 2.6 stability and performance issues

From: jmerkey
Date: Wed Jul 28 2004 - 12:32:47 EST


I have completed the port of the Kdebug kernel debugger to 2.6 and I have found
a lot of areas where there are some stability issues. The backtrace function in KDB
and the backtrace function I use in MDB both have problems with __copy_to_user() causing
system crashes if the debugger gets interrupted when in user space (0x40000000)
code address ranges. I am also seeing some severe performance issues with
__copy_to_user() reading large numbers of small reads i.e. 4 byte reads at a
time. This is done in the debuggers to allow reads from memory to avoid crashes inside the
debugger if for some reason you get a bad memory address when dumping memory or reading pointers, etc. I have gone through all of the console code and I know the
problem is not here since I use my own screen manager and basically push the
Linux console code to the side so folks can use the debugger to debug console
drivers, etc. so I rely as little as possible on the Linux core code and MDB is
basically a self contained "bubble" of code that hooks the IDT and exceptions to
allow a much of Linux to be debugged.

I have also ported all the file systems and I must say, BIO performance is very
stunning in lowering the submission overhead as reported by Linus and Jens, and
I am seeing somewhat better I/O performance. However, the keyboard driver has
some problems with the rep flag loosing state in drivers/char/keyboard.c and
__copy_to_user() performance absolutely **SUCKS** compared to 2.4.21. with
screen and backtrace displays with large numbers of small writes and reads. I/O
system is better but overall 2.6 does not appear very stable on 2.6 at present.

Does anyone have any ideas as to why we would see crashes in calls to
__copy_to_user() which result in the system totally hanging up the system.

Jeff
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/