[Crash-utility] [PATCH] x86_64: print wrong value for RDX register.

Seiichi Ikarashi s.ikarashi at jp.fujitsu.com
Tue Feb 21 08:42:16 UTC 2012


Hi Dave,

crash has a funny bug that bt command wrongly shows RCX value
as RDX value for exception stack of x86_64 xen hypervisor.

Here is an example.
RDX is 0xcfc but bt shows 0x4 (== RCX) for it.

ffff828c802f0fa0:  0000000000000246 00000000ffffffff   F...............
                          R8               RAX
ffff828c802f0fb0:  0000000000000004 0000000000000cfc   ................
                          RCX  ^^^^        RDX  ^^^^
ffff828c802f0fc0:  0000000000000000 00000000800f0000   ................
                          RSI              RDI
crash> bt
PCPU:  0  VCPU: ffff8300695be080
 #0 [ffff828c802f0f40] kexec_crash at ffff828c8010d227
 #1 [ffff828c802f0f50] handle_ist_exception at ffff828c801926f7
    [exception RIP: pci_conf_read+130]
    RIP: ffff828c801537e2  RSP: ffff828c802f7de0  RFLAGS: 00000006
    RAX: 00000000ffffffff  RBX: 0000000000000004  RCX: 0000000000000004
    RDX: 0000000000000004  RSI: 0000000000000000  RDI: 00000000800f0000
                     ^^^^
    RBP: 0000000000000cfc   R8: 0000000000000246   R9: 0000000000000000
    R10: 0000000000000000  R11: 000000000000ffff  R12: 0000000000000004
    R13: 0000000000000000  R14: 0000000000000000  R15: ffff8300695be080
    ORIG_RAX: 0000000200000000  CS: e008  SS: 0000
--- <exception stack> ---
 #2 [ffff828c802f7de0] guest_io_read at ffff828c80148345
 #3 [ffff828c802f7e20] do_general_protection at ffff828c8014a00c
 #4 [ffff828c802f7eb0] reprogram_timer at ffff828c8012c55e
 #5 [ffff828c802f7f20] handle_exception_saved at ffff828c80192495
crash> 


Signed-off-by: Seiichi Ikarashi <s.ikarashi at jp.fujitsu.com>

--- a/x86_64.c	2012-02-04 04:22:33.000000000 +0900
+++ b/x86_64.c	2012-02-21 17:04:09.032121837 +0900
@@ -6562,7 +6562,7 @@ x86_64_print_eframe_regs_hyper(struct bt
 	fprintf(fp, "    RAX: %016lx  RBX: %016lx  RCX: %016lx\n", 
 		up[10], up[5], up[11]);
 	fprintf(fp, "    RDX: %016lx  RSI: %016lx  RDI: %016lx\n", 
- 		up[11], up[13], up[14]);
+ 		up[12], up[13], up[14]);
 	fprintf(fp, "    RBP: %016lx   R8: %016lx   R9: %016lx\n", 
 		up[4], up[9], up[8]);
 	fprintf(fp, "    R10: %016lx  R11: %016lx  R12: %016lx\n", 




More information about the Crash-utility mailing list