Closed EmployedRussian closed 5 months ago
Did the definition get pointer levels mixed up? This is what PAL in dotnet runtime does: https://github.com/dotnet/runtime/blob/a3dc1337a17a3de6aefe76e465f85ebf5ba6ae5e/src/coreclr/pal/inc/pal.h#L1411
The struct should be 16 bytes (two 64-bit integer) in theory.
After thinking for a bit it does look right. I guess time to start building with dev clang to get advance notice on issues like this. Another aside is I am personally uncomfortable with PAL because of the code like this - it does win32 things which Windows does internally in user mode and it has been a source of problems.
Closing as presumably fixed by #6983
As far as I understand,
PM128A
is a 16-byte aligned pointer (of size 8).A single pointer can be aligned on 16-byte boundary, but the next pointer in the array will necessarily be 8-byte aligned.
This patch fixes the problem: