Nix 기반 결정론적 디버거로 경쟁 조건 추적
Key Point
Nix가 제공하는 완전한 빌드 입력 추적과 재현성을 활용해 경쟁 조건을 체계적으로 재현·추적·분석하는 새로운 접근법을 보여주며, 기존 디버거가 해결하기 어려웠던 스레드 스케줄 관련 버그를 자동으로 발견할 수 있다.
핵심 요약
- Rewind VM은 Nix 빌드의 모든 실행을 입력의 순수 함수로 만드는 결정론적 가상머신으로, 스레드 스케줄까지 동일하게 재현된다.
- 은행 계좌 입금 예시처럼 두 개 스레드가 경합할 때 발생하는 경쟁 조건을 찾아내기 위해 여러 스케줄 조합을 자동으로 시뮬레이션한다.
- 16코어 노트북에서는 1,000회 중 396회가 실패했지만, 단일 코어로 고정하면 1,000회 모두 성공하는 것으로 확인돼, 스케줄 변경의 중요성을 입증한다.