From: Ingo Molnar ok, the patch below does the trick. It works fine on 4G and non-4G kernels as well and dumps the expected code. arch/i386/kernel/traps.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff -puN arch/i386/kernel/traps.c~4g4g-show_registers-fix arch/i386/kernel/traps.c --- 25/arch/i386/kernel/traps.c~4g4g-show_registers-fix 2003-08-03 11:57:48.000000000 -0700 +++ 25-akpm/arch/i386/kernel/traps.c 2003-08-03 11:57:48.000000000 -0700 @@ -232,9 +232,11 @@ void show_registers(struct pt_regs *regs eip = (u8 *)regs->eip - 43; for (i = 0; i < 64; i++, eip++) { - unsigned char c; + unsigned char c = 0xff; + + if ((user_mode(regs) && get_user(c, eip)) || + (!user_mode(regs) && __direct_get_user(c, eip))) { - if (eip < (u8 *)PAGE_OFFSET || __get_user(c, eip)) { printk(" Bad EIP value."); break; } _