This paper proposes a loose synchronization algorithm (LSA) for ensuring deterministic behavior of replicas while preserving concurrency. In contrast with techniques synchronizing replicas at the interrupt level [2], the algorithm synchronizes replica threads on state updates by intercepting mutex requests. Performance overhead is minimized by preserving concurrency in the execution of application threads (the algorithm does not interfere with the operating system scheduler, except when granting mutexes). This also contrasts with nonpreemptive, deterministic schedulers [6], [7], which limit concurrency by allowing only one physical thread to execute at a time. Although intercepting mutex requests to track the order of state updates has been proposed in the context of rollback recovery [1], it has not been applied to active replication, nor has it been demonstrated on a substantial applicatio