The execution of a program contains a data race
if it contains two potentially concurrent conflicting actions,
at least one of which is not atomic,
and neither happens before the other,
except for the special case for signal handlers
described in
[intro.races].