Replay for concurrent non-deterministic shared-memory applications | Synapse