https://bugs.kde.org/show_bug.cgi?id=441109
Bug ID: 441109 Summary: [ARM64] Invalid write of size 8 when it's really 16 Product: valgrind Version: unspecified Platform: Compiled Sources OS: Linux Status: REPORTED Severity: minor Priority: NOR Component: memcheck Assignee: jsew...@acm.org Reporter: n...@thatsmathematics.com Target Milestone: --- On ARM64, 16-byte store instructions such as `str q0, [...]` or `stp x1, x2, [...]` are reported as "Invalid write of size 8". Likewise for 32-byte store `stp q0, q1, [...]` and probably also longer stores like `st1`. Example: include <stdlib.h> int main(void) { char *ptr = malloc(256); ptr += 256; asm volatile ("fmov d0, #1.5 ; str q0, [%0]" : : "r" (ptr) : "q0", "memory"); return 0; } `valgrind ./a.out` prints out: ==16170== Invalid write of size 8 ==16170== at 0x1087BC: main (in /home/nate/bugs/valgrind/a.out) ==16170== Address 0x49ec140 is 0 bytes after a block of size 256 alloc'd ==16170== at 0x484F058: malloc (vg_replace_malloc.c:380) ==16170== by 0x1087A3: main (in /home/nate/bugs/valgrind/a.out) I expected "Invalid write of size 16". Reproduced with latest 3.18.0 from git, as well as 3.17.0 from Ubuntu 21.04 package. -- You are receiving this mail because: You are watching all bug changes.