RocksDB 개발에서 CPU 버그 발견
RocksDB의 유닛 테스트를 통해 약 4년 전 도입한 고유 식별자 생성 방식에서 발생한 문제를 발견하였습니다.
128비트 고품질 난수를 여러 소스(예: C++11 std::random_device, 환경 변수 해시, 플랫폼별 UUID)에서 결합해 생성하는 방식을 사용했으나, 최근 특정 최신 CPU에서 std::random_device 기반 난수 생성이 반복적으로 실패하는 현상이 나타났습니다.
조사 결과, 해당 CPU의 RDSEED 명령어가 메모리 부하 조건에서 비정상적으로 0을 반환하는 하드웨어 버그임이 밝혀졌고, AMD는 이를 인정하며 마이크로코드 업데이트를 계획 중입니다.
이 사례는 의존하는 외부 요소에 대한 지속적인 검증과 중복 검사, 그리고 CPU 수준의 하드웨어 결함 가능성을 염두에 둬야 함을 시사합니다.
