This article presents a practical solution for the cyclic debugging of nond
eterministic parallel programs. The solution consists of a combination of r
ecord/replay with automatic on-the-fly data race detection. This combinatio
n enables us to limit the record phase to the more efficient recording of t
he synchronization operations, while deferring the time-consuming data race
detection to the replay phase. As the record phase is highly efficient, th
ere is no need to switch it off, hereby eliminating the possibility of Heis
enbugs because tracing can be left on all the time. This article describes
an implementation of the tools needed to support RecPlay.