On 03/28/2018 06:10 AM, Kevin Fenzi wrote:
So, is this hardware limitation something that is likely to affect other
packages? Is there something we could look for in how they consume
atomic types to tell? I would hate for us to ship something else that is
subject to this problem.
There is lots of fingerpointing, but no clear technical cause.
We know that the (updated) i386 ABI is buggy in the sense that it does
not provide 8-byte alignment for 64-bit values (even if you use C11
_Atomic), and the Intel manual says that the CMPXCHG8B instructions
provides atomicity for 8-byte-aligned memory locations only. But it's
not clear if this is the cause of the observed problems.
Note that while GCC produces broken code, this is actually an ABI bug,
and we cannot change struct layout rules for long long retroactively.
Maybe we could for _Atomic long long, but that would need a lengthy
investigation, and I strongly believe that everyone is better off if the
time is spent on improving 64-bit architectures.
Applications should not use 64-bit atomics on i386. They are
non-portable anyway because other 32-bit architectures (actually even
the original i386) do not support them, so upstream needs alternatives
anyway.
Thanks,
Florian
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx