General Races and Data Races

In a multithreaded program, races are rally bad. The reason for this is that a program is compiling correctly, tests are passing and it runs in production for months, and then, all of a sudden, the program returns a result that is everything but the expected one.