Race Conditions
These are bugs which are timing dependent.
Imagine you have two things happening in an application - A and B. The program functions correctly if A is executed before B.
But if B happens first and it was depending on something that A was doing a bug occurs. This is called a race condition. We are dependent on A managing to race B to being completed first.
Race conditions are some of the toughest bugs recreate because they timing dependent and thus happen infrequently. Usually they will happen places which are hard to observe like in a customer site under load.
Race conditions will frequently be missed during a stereotypical QA process because they are hard to reproduce and often only manifest under extreme conditions.
Best way to avoid race conditions in the first place is through code design.
Â