One is race condition, which basically is assuming that one piece of code will run before / after another concurrent piece of code.
There are also deadlocks, that is code A waits for code B to release resource Y, while code B is waiting for A to release resource X.