The invention provides an improved method for detecting concurrent bugs in
multi-threaded software having at least one command to access a
non-atomic variable. The non-atomic variable may have a plurality of
memory words. In one approach, the method generally involves storing the
memory words as atomic variables and replacing the at least one command
to access the non-atomic variable with separate instructions to access
each of the atomic variables. A thread-switch command is inserted between
the atomic variable access commands to increase the likelihood of
exposing and detecting synchronization problems.