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

Dave Anderson anderson at redhat.com
Tue Feb 21 16:05:52 UTC 2012



----- Original Message -----
> 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",

Thanks Seiichi -- it looks it's been doing that since Xen hypervisor
support was originally added.

Queued for crash-6.0.4.

Dave




More information about the Crash-utility mailing list