OpenAI가 두 인프라 장애의 디버깅 과정을 자세히 설명하다

OpenAI 장애 수정: Rockset 데이터 인프라 오류가 Azure 호스트와 libunwind로 추적됨 엔지니어들이 두 가지 근본 원인을 어떻게 분리하고 향후 사고를 대비해 시스템을 강화했는지 확인해 보세요

OpenAI는 Rockset 기반 데이터 인프라에서 발생한 비정상적인 충돌의 배후에 있던 서로 관련 없는 두 가지 원인을 식별하고 수정했다고 밝혔습니다. 원인은 결함이 있는 Azure 호스트와 GNU libunwind의 18년 된 레이스 컨디션이었습니다. 회사 측은 조사 과정이 Rockset의 쿼리 처리 계층에서 반복적으로 발생한 C++ 충돌이 스택 상태를 손상시키거나 잘못된 주소로 반환되는 것처럼 보인 뒤 시작됐다고 말했습니다. 처음 몇 개의 코어 덤프를 수동으로 살펴본 초기 검토에서는 뚜렷한 패턴이 드러나지 않았고, 이에 팀은 운영 중 충돌 데이터를 대규모로 분석하기 위한 파이프라인을 구축했습니다. 지난 1년간의 전체 코어 덤프를 분류한 결과, 엔지니어들은 한 충돌 집단이 단일 물리적 호스트와 연관되어 있었으며 해당 머신을 서비스에서 제외한 뒤 사라졌다는 사실을 확인했습니다. 두 번째 집단은 GNU libunwind의 예외 풀기 과정과 관련되어 있었는데, 좁은 범위의 레이스 컨디션 때문에 신호 처리기가 스택에 할당된 unwind 데이터를 덮어쓰고 제어 전환 중에 명령 포인터를 손상시킬 수 있었습니다. OpenAI는 libgcc의 unwinder로 전환하고, libunwind에 재현기와 수정 사항을 상위 저장소에 반영했으며, 향후 유사한 사건을 더 쉽게 탐지할 수 있도록 로깅과 운영 안전장치를 개선함으로써 이 문제를 완화했다고 밝혔습니다.