https://bugs.kde.org/show_bug.cgi?id=369459

            Bug ID: 369459
           Summary: valgrind on arm64 violates the ARMv8 spec (ldxr/stxr)
           Product: valgrind
           Version: 3.12 SVN
          Platform: Compiled Sources
                OS: Linux
            Status: UNCONFIRMED
          Severity: critical
          Priority: NOR
         Component: vex
          Assignee: jsew...@acm.org
          Reporter: pins...@gcc.gnu.org

So on ARMv8, valgrind invokes undefined behavior with respect to ldxr/stxr. 
This causes valgrind to hang on ThunderX machines.
here is the disassembly when I attach gdb to the valgrind process:
   0x00000008034001a4:  ldxr    w2, [x4]
   0x00000008034001a8:  mov     x22, x2
   0x00000008034001ac:  and     x24, x23, #0xffffffff
   0x00000008034001b0:  and     x23, x22, #0xffffffff
   0x00000008034001b4:  str     x24, [x21,#928]
   0x00000008034001b8:  str     x23, [x21,#32]
   0x00000008034001bc:  dsb     sy
=> 0x00000008034001c0:  dmb     sy
   0x00000008034001c4:  isb
….
   0x00000008034000e4: stxr    w0, w2, [x4]


As you can see there are plenty of stores and even DSB/DMB/ISB inbetween the
ldxr and stxr.  All of this violates the ARM spec and says stxr can always fail
and it does on ThunderX.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to