기타 Lobsters · 2026-10-25

"단순 업데이트인데 유튜브가 왜 터져?" glibc 때문에 소리 먹통 된 크로미움 사연

핵심 요약
  • 크로미움 플랫팩 런타임을 버전 21.08로 판올림했다가 유튜브 등 비디오 및 오디오 렌더러가 완전히 먹통이 되는 장애가 발생했습니다.
  • 평소 PC로 유튜브를 안 봐서 테스트를 놓친 메인테이너가 조사한 결과, glibc의 futex 시스템 콜 패닉이 원인이었습니다.
  • glibc 업데이트와 크로미움 내부 BPF 샌드박스가 맞물리며 시스템 콜 거부 코드가 전달되어 오디오 서비스가 크래시 났던 것으로 확인되었습니다.
요약 리눅스용 크로미움(Chromium) 플랫팩(Flatpak) 패키지 메인테이너가 겪은 기상천외한 디버깅 일화입니다. 작성자는 크로미움 플랫팩의 런타임 버전을 21.08로 업데이트하는 풀 리퀘스트(PR)를 머지했습니다. 사전 테스트에서도 문제가 없었고 크롬, 브레이브, 엣지 등 다른 바이너리 기반 브라우저들도 이미 해당 런타임을 잘 쓰고 있었기에 아무런 문제가 없을 것이라 여겼습니다. 하지만 다음 날 아침, 업데이트 직후 유튜브 등 동영상 재생이 먹통이 되고 '오디오 렌더러' 에러가 난다며 해당 변경점을 되돌리라는 긴급 롤백 PR이 올라왔습니다. 작성자가 직접 확인해 보니 실제로 유튜브 재생이 완전히 망가져 있었습니다. 평소 데스크톱에서는 유튜브를 거의 보지 않고 모바일 앱만 써서 사전 테스트 단계에서 걸러내지 못했던 것입니다. 로그를 분석해 보니 크로미움 자체 포맷이 아닌 `The futex facility returned an unexpected error code`라는 낯선 에러 문구가 찍혀 있었습니다. 조사 결과 이는 glibc 내부에서 futex 시스템 콜(syscall)이 예상치 못한 에러 코드를 반환했을 때 발생하는 패닉이었습니다. 런타임 업그레이드만으로 커널이 뜬금없는 에러 코드를 뱉을 확률은 극히 낮기에 작성자는 glibc와 커널 사이에 위치한 크로미움의 BPF 샌드박스를 의심했습니다. 결국 크로미움의 오디오 서비스 샌드박스가 glibc 업데이트로 달라진 시스템 콜 동작을 허용하지 않아 거부 코드를 반환했고, glibc는 이를 처리하지 못해 치명적 에러를 일으키며 오디오 프로세스가 뻗어버렸던 것이 원인으로 드러났습니다. 단순 런타임 판올림 하나가 복잡한 샌드박스와 C 표준 라이브러리의 틈새를 찔러 오디오 전체를 마비시킨 황당한 개발 비하인드입니다.
Sponsored · 광고