본문으로 건너뛰기
피드

ripgrep의 musl 빌드가 초대형 검색에서 가끔 세그폴트 나는 이슈

open-source 약 5분
vote
0
댓글
북마크

ripgrep 15.2.0의 x86_64 musl 바이너리가 아주 큰 디렉터리 트리를 높은 동시성으로 검색할 때 드물게 SIGSEGV로 죽는다는 이슈가 올라왔어. 재현 조건은 약 20GiB, 180만 파일 규모의 트리와 24코어 환경이며, 크래시는 musl mallocng의 힙 메타데이터 검증 지점에서 발생해.

  • 1

    문제 바이너리는 OpenAI Codex에 포함된 rg와 공식 ripgrep 15.2.0 x86_64 musl 릴리스가 바이트 단위로 동일해.

  • 2

    재현 데이터는 약 20GiB, 180만 파일 규모이며, 존재하지 않는 문자열을 반복 검색하면 대략 1분 안에 SIGSEGV가 발생한다고 보고됐어.

  • 3

    백트레이스상 크래시는 opendir에서 호출된 calloc 내부, musl mallocng의 힙 메타데이터 무결성 검사 지점에서 발생해.

  • 4

    glibc 빌드가 아니라 musl 타깃 빌드에서 관찰된 문제라 배포 바이너리 선택과 런타임 조합이 중요해 보여.

  • ripgrep 15.2.0의 x86_64 musl 바이너리가 초대형 검색에서 가끔 SIGSEGV로 죽는다는 이슈가 보고됨.

    • 대상 버전은 ripgrep 15.2.0, 리비전은 e89fff8.
    • 기능 플래그에는 PCRE2가 포함돼 있고, PCRE2 10.45와 JIT도 사용 가능하다고 보고됐어.
  • 흥미로운 포인트는 이 문제가 특정 번들만의 문제가 아니라는 점임.

    • 최초 발견은 OpenAI Codex에 포함된 rg에서였어.
    • 그런데 그 바이너리가 공식 릴리스의 ripgrep-15.2.0-x86_64-unknown-linux-musl.tar.gz 안에 있는 바이너리와 바이트 단위로 동일했다고 함.
    • 제보자는 Codex 의존성 없이 공식 바이너리로도 독립 재현했다고 적었어.
  • 재현 조건이 꽤 빡셈. 그냥 작은 레포에서 rg 몇 번 친다고 터지는 류는 아님.

    • 재현 스크립트는 원래 문제가 발생한 저장소의 통계를 흉내 내는 랜덤 파일 트리를 생성함.
    • 생성 결과는 약 20GiB 데이터, 약 180만 개 파일 규모.
    • 그 트리 루트에서 존재하지 않는 임의 문자열을 while 루프로 계속 검색하면 됨.
  • 제보자 환경에서는 24코어 시스템에서 대략 1분 정도면 크래시가 났다고 해.

    • 검색 트리가 커널 블록 캐시에 들어갈 만큼 여유 RAM이 있는 상태였다고 함.
    • 즉 디스크 I/O로 느리게 막히는 상황보다, 많은 파일을 높은 동시성으로 빠르게 훑는 상황이 중요해 보임.

중요

> 크래시 지점은 ripgrep의 검색 로직 한가운데가 아니라, opendir에서 호출된 calloc 내부의 musl mallocng 힙 메타데이터 무결성 검사라고 보고됐어. 그래서 단순한 검색 패턴 버그보다 런타임·allocator·동시성 조합을 봐야 하는 냄새가 남.

  • 실제 동작은 코어덤프와 백트레이스가 남는 SIGSEGV.

    • 기대 동작은 너무 당연하게도 세그폴트가 나지 않는 것.
    • 검색 문자열이 트리에 없더라도 rg는 정상 종료해야지, 프로세스가 죽으면 안 됨.
  • 이 이슈가 개발자에게 의미 있는 이유는 rg가 이제 사실상 개발 환경의 기본 인프라에 가깝기 때문임.

    • 에디터, 빌드 스크립트, 검색 UI, 코딩 에이전트가 모두 rg 같은 도구에 기대는 경우가 많아.
    • 초대형 모노레포나 생성 파일이 많은 워크스페이스에서는 '가끔 죽는 검색 도구'가 꽤 골치 아픈 장애가 될 수 있음.

기술 맥락

  • 여기서 중요한 선택은 ripgrep을 어떤 libc 타깃으로 배포하고 실행하느냐예요. musl 빌드는 정적 링크와 배포 편의성이 좋아서 CLI 도구에서 자주 쓰이지만, 이번 이슈처럼 특정 allocator와 동시성 조건에서만 드러나는 문제가 생길 수 있어요.

  • 재현 조건이 20GiB와 180만 파일이라는 점도 핵심이에요. 작은 테스트에서는 파일 열기와 디렉터리 순회가 충분히 압박받지 않지만, 이 정도 규모에서는 opendir, calloc, 스레드 스케줄링, 커널 캐시가 한꺼번에 빡세게 돌아가거든요.

  • 백트레이스가 musl mallocng 내부를 가리킨다는 건 원인을 단정하긴 어렵지만 조사 방향은 분명해져요. ripgrep의 검색 패턴 처리, 디렉터리 순회 코드, musl의 메모리 할당기, 빌드 옵션을 함께 봐야 해요.

  • 운영 관점에서는 공식 musl 바이너리를 그대로 쓰는 자동화 환경이 영향을 받을 수 있어요. 특히 코딩 에이전트나 대형 저장소 검색 파이프라인처럼 rg를 반복 호출하는 시스템에서는 드문 세그폴트도 사용자 경험을 망칠 수 있거든요.

이건 단순히 'rg가 가끔 죽음' 수준이 아니라, 대형 코드베이스·모노레포·에이전트 환경에서 검색 도구의 신뢰성이 바로 작업 안정성으로 이어진다는 얘기야. 특히 정적 musl 바이너리를 기본 배포로 쓰는 도구들은 이런 극단 조건 재현 리포트가 꽤 중요함.

댓글

댓글

댓글을 불러오는 중...

open-source

구글은 어떻게 알에스에스 사용 문화를 망가뜨렸나

이 글은 구글이 알에스에스 생태계를 키우는 데 도움을 받았으면서도, 정작 자사 제품에서는 알에스에스 지원을 반복적으로 없애 왔다고 비판한다. 크롬, 피드버너, 구글 리더, 구글 알리미, 구글 뉴스 사례를 묶어 보면 개방형 웹 기능을 끌어안았다가 사용자가 모이면 걷어내는 패턴이 보인다는 주장이다.

open-source

타리, 메인넷 보안 패치하고 브리지 재개…오픈소스 보상도 실제로 굴러감

프라이버시 중심 오픈소스 블록체인 타리(XTM)가 레이어1 보안 패치를 배포하고 중단됐던 브리지 서비스를 다시 열었음. Bulletproofs Plus 배치 검증 취약점, RPC 처리 공간 점유 문제, 피어 주소 필터링 오류 등을 고쳤고, 외부 개발자에게 6만 XTM 보상까지 지급하면서 오픈소스 메인넷 운영 모델을 보여줬음.

open-source

NIPA, 오픈소스 AI·SW 커뮤니티 15곳에 GPU·서버 지원 시작

정보통신산업진흥원이 국내 오픈소스 AI·SW 커뮤니티 15곳을 선정하고 지원을 시작함. 선정 커뮤니티에는 GPU·서버 자원, 협업 공간, 국내외 콘퍼런스·세미나 참여 기회가 제공된다.

open-source

NIPA, 오픈소스 AI·SW 커뮤니티 15곳 지원 시작

정보통신산업진흥원이 국내 오픈소스 AI·소프트웨어 커뮤니티 15곳을 선정해 활동 지원을 시작했다. 해외 콘퍼런스 참여, 클라우드 GPU·서버 자원, 협업 공간을 제공해 국내 개발자들이 글로벌 오픈소스 생태계에 더 적극적으로 들어가게 하려는 사업이다.

open-source

오픈소스 서밋 코리아, 8월 서울에서 68개 세션으로 열린다

리눅스재단이 8월 11일부터 12일까지 서울 그랜드 인터컨티넨탈 파르나스에서 열리는 오픈소스 서밋 코리아의 주요 프로그램을 추가 공개했다. 리눅스 커널, 클라우드 인프라, AI 플랫폼, 임베디드 시스템, 소프트웨어 공급망 보안, OSPO 운영까지 실무 중심 세션 68개가 준비된다.