Rewind VM es una máquina virtual determinista diseñada para reproducir y depurar condiciones de carrera en construcciones de Nix. Su principal ventaja técnica reside en la capacidad de Nix para gestionar de forma nativa los inputs de cada derivación, lo que permite reconstruir el entorno de ejecución con precisión absoluta. A diferencia de los depuradores tradicionales, Rewind VM no requiere que el usuario compila manualmente los símbolos de depuración ni las fuentes de código; el sistema empaqueta automáticamente las dependencias en una imagen de solo lectura y arranca la máquina virtual sobre ella.
La herramienta destaca por su capacidad para identificar el paso exacto donde ocurre una falla de concurrencia mediante la perturbación del orden de ejecución de los hilos. Al ejecutar una construcción bajo diferentes calendarios de hilos, Rewind VM puede aislar el evento específico que provoca la inconsistencia, permitiendo al desarrollador corregir el código con certeza. Además, ofrece una integración profunda con GDB, permitiendo establecer puntos de interrupción y inspeccionar el estado de memoria en cualquier momento de la ejecución, sin alterar el registro de la prueba. Esta funcionalidad es particularmente útil para analizar el estado de variables críticas, como en el caso de un contador bancario donde dos hilos acceden simultáneamente. La herramienta también incluye un modo de comparación que permite visualizar las diferencias entre dos ejecuciones, facilitando la identificación de errores de orden de ejecución que son difíciles de detectar en entornos de producción. Su diseño se basa en la reproducibilidad de Nix, asegurando que cada ejecución sea una función pura de sus entradas, lo que la convierte en una herramienta valiosa para ingenieros de software que buscan estabilidad en sus pipelines de construcción.
