Normally it is said that multi threaded programs are non-deterministic, meaning that if it crashes it will be next to impossible to recreate the error that caused the condit
Lots of crashes in multithreaded programs have nothing to do with the multithreading itself (or the associated resource contention).