Methods and systems for analyzing multi-threaded programs are provided. The
predisposed execution of multi-threaded programs is modified to cause and detect
latent unsafe accesses to a resource, such as a memory location. It is first determined
that unsynchronized accesses to a resource of interest are possible. When a thread
requests to access the resource, the thread is suspended. A subsequent thread that
accesses the resource awakens the suspended thread, thereby causing unsynchronized
accesses to the resource that may produce unpredictable results. The unsynchronized
accesses can be logged for viewing by a user.