How to miscompile programs with "benign" data races [pdf]
4 comments
·January 10, 2025swagmoney1606
>Perhaps most surprisingly, this includes even the case of potentially concurrent writes of the same value by different threads.
Can someone explain to me how this is possible?
iracigt
Section 2.4 gives a concrete example, though there are some asterisks. The example is one where a compiler rewrites something like `while (...) x++;` to put `x` in a register: `int reg = x; while (...) reg++; x = reg`. The author reports this is an optimization GCC was observed doing, and means you can have a read-writeback even when the while condition is false to begin with. If this optimization appears interleaved with identical writes then you have problems.
kccqzy
Go read section 2.4.
This needs (2011).
If I remember correctly this report is written in the context of standardizing new features in C++11 related to synchronization, threads, and the memory model.