Data races in Java&#x2F;C# races will result in incorrect values (which may be serious if your program is doing anything important and subtle to find, as you say), but they will not ever result in &quot;undefined behavior&quot; in the way ISO C defines the term.  Specifically a data race in Java&#x2F;C# will not cause your program to do out-of-bounds memory accesses or use-after-free or corrupting unrelated objects because other parts of the respective VM specifications prevent such outcomes.<p>For the details see e.g. <a href="http:&#x2F;&#x2F;docs.oracle.com&#x2F;javase&#x2F;specs&#x2F;jls&#x2F;se8&#x2F;html&#x2F;jls-17.html#jls-17.4.5" rel="nofollow">http:&#x2F;&#x2F;docs.oracle.com&#x2F;javase&#x2F;specs&#x2F;jls&#x2F;se8&#x2F;html&#x2F;jls-17.html...</a>