Skip to content(if available)orjump to list(if available)

How to miscompile programs with "benign" data races [pdf]

kccqzy

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.

swagmoney1606

>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.