[systemd-devel] rdrand generated with march=winchip-c6 in systemd-241

Florian Weimer fw at deneb.enyo.de
Sat May 11 16:30:40 UTC 2019


* tedheadster:

> Here is the full disassembly with a few comments:
>
> (gdb) disassemble
> Dump of assembler code for function rdrand:
>    0xb7e21440 <+0>:     push   %esi
>    0xb7e21441 <+1>:     push   %ebx
>    0xb7e21442 <+2>:     call   0xb7e0af5d <__x86.get_pc_thunk.si>
>    0xb7e21447 <+7>:     add    $0x1acb39,%esi
>    0xb7e2144d <+13>:    mov    0x2870(%esi),%ecx
>    0xb7e21453 <+19>:    test   %ecx,%ecx
>    0xb7e21455 <+21>:    js     0xb7e21480 <rdrand+64>
>    0xb7e21457 <+23>:    test   %ecx,%ecx
>    0xb7e21459 <+25>:    je     0xb7e214e0 <rdrand+160>
>    0xb7e2145f <+31>:    rdrand %ecx  <---- illegal instruction was
> attempted here

Can you capture register contents at the point of the crash?

Does this reproduce in a chroot?  Maybe you can trace the whole thing
with a debugger.  Does the crash reproduce if you single-step through
the whole function?


More information about the systemd-devel mailing list