고속 파일 검색 유틸리티인 RipGrep(리그렙)의 특정 빌드에서 대규모 파일 시스템을 검색할 때 간헐적으로 프로그램이 비정상 종료되는 현상이 보고되었습니다. 이 문제는 특히 `x86_64-unknown-linux-musl` 타겟으로 빌드된 바이너리에서 발생하며, 수백만 개의 파일과 수십 기가바이트(GB)에 달하는 데이터를 동시에 검색할 때 '세그멘테이션 폴트(SIGSEGV)' 오류를 일으키는 것으로 나타났습니다.
버그를 처음 발견한 사용자는 OpenAI 코덱스(Codex)에 번들된 리그렙 바이너리에서 이 문제를 겪었으며, 이후 독립적으로도 재현에 성공했습니다. 재현 과정은 20GB 규모의 180만 개 파일로 구성된 대규모 디렉토리 트리를 생성한 뒤, 존재하지 않는 임의의 문자열을 리그렙으로 반복 검색하는 방식입니다. 24코어 시스템에서 약 1분 내에 SIGSEGV 오류가 발생했으며, 이는 musl C 라이브러리의 `mallocng` 내 힙(heap) 메타데이터 무결성 검증 실패와 `opendir` 호출 중 `calloc`에서 비롯된 것으로 분석되었습니다. 즉, 메모리 할당 및 디렉토리 읽기 과정에서 문제가 발생하고 있음을 시사합니다.
이번 버그는 리그렙과 같이 시스템의 핵심 유틸리티로 사용되는 도구의 안정성에 대한 중요성을 다시 한번 상기시킵니다. 특히 `musl`과 같은 경량 C 라이브러리는 임베디드 시스템이나 컨테이너 환경에서 효율성 때문에 널리 사용되는데, 이러한 환경에서 대규모 작업을 처리할 때 예상치 못한 메모리 관련 문제가 발생할 수 있음을 보여줍니다. 개발자들은 이 문제를 해결하기 위해 현재 심층적인 분석을 진행 중이며, 이는 Rust(러스트) 언어로 작성된 애플리케이션이 다양한 C 라이브러리 환경에서 어떻게 상호작용하는지에 대한 중요한 통찰을 제공할 것으로 기대됩니다.