Example of a found HW issue

Coredump

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fcc4ba55d7e in ...
(gdb) p $_siginfo._sifields._sigfault.si_addr
$1 = (void *) 0x7fcd00000003
(gdb) x/i $pc
=> 0x7fcc4ba55d7e <...>: mov    0x4(%r8),%r8d
(gdb) p/x *(uint64_t*)($r8 + 0x4)
$2 = 0x7fccffffffff
(gdb) p/x $r8 + 4
$3 = 0x7fcd00000003
(gdb) disas
...
   0x00007fcc4ba55d7a <+74>:  mov    0x10(%rcx),%r8
=> 0x00007fcc4ba55d7e <+78>:   mov    0x4(%r8),%r8d
(gdb) p/x *(uint64_t*)($rcx + 0x10)
$4 = 0x7fcc20438f1c

Reasoning

  1. It fails to get the value at “0x4(%r8)”, because it’s outside the own memory segments.
  2. The value of R8 looks already very suspicious: 0x7fccffffffff.
  3. “p/x *(uint64_t*)($rcx + 0x10)” should have the same value as “p/x $r8”.
  4. It seems to be an issue of the CPU itself.