한국정보기술진흥원2026 제7회 청소년 IT경시대회 개최안내

Ghostty 터미널 에뮬레이터, 37GB 메모리 누수 버그 수정...Claude Code 사용 증가로 문제 대규모 노출

thumbnail.webp
비표준 페이지 재사용 시 메모리 해제 누락이 원인, 3월 1.3 버전에 패치 포함
[한국정보기술신문] 오픈소스 터미널 에뮬레이터 Ghostty의 개발자 Mitchell 개발자가 10일 대규모 메모리 누수 문제를 발견하고 수정했다고 밝혔다. 일부 사용자는 10일간 사용 후 최대 37GB의 메모리를 소비하는 현상을 보고했으며, 해당 버그는 최소 Ghostty 1.0 버전부터 존재했던 것으로 확인됐다.
이번 메모리 누수는 Ghostty의 터미널 메모리 관리 구조인 PageList에서 발생했다. PageList는 터미널 콘텐츠를 저장하는 이중 연결 리스트로, 표준 크기의 메모리 페이지를 풀에서 재사용하는 방식으로 작동한다. 이모지나 하이퍼링크가 많은 경우 표준 크기보다 큰 비표준 페이지를 직접 mmap으로 할당하게 된다.

스크롤백 최적화 과정의 설계 결함

문제는 스크롤백 버퍼가 한계에 도달했을 때 가장 오래된 페이지를 재사용하는 최적화 과정에서 발생했다. Ghostty는 성능 향상을 위해 메모리 할당 없이 포인터 조작만으로 오래된 페이지를 새로운 페이지로 전환하는 방식을 사용한다.
그러나 비표준 크기의 페이지를 재사용할 때 메타데이터만 표준 크기로 재설정하고 실제 메모리 할당은 그대로 두는 버그가 있었다. 이후 페이지를 해제할 때 메타데이터가 표준 크기로 표시되어 있어 풀로 반환된 것으로 간주하고 munmap을 호출하지 않아 메모리 누수가 발생했다.

클로드 코드 사용 증가로 문제 가시화

이 버그는 설계상 비표준 페이지가 드물게 사용되기 때문에 오랫동안 발견되지 않았다. 하지만 최근 클로드 코드 CLI 도구의 사용이 증가하면서 상황이 달라졌다. 클로드 코드는 다중 코드포인트 그래픽 출력을 많이 생성해 비표준 페이지를 정기적으로 사용하게 만들고, 대량의 스크롤백 출력을 생성해 버그를 대규모로 촉발시켰다.
개발자는 이 버그가 클로드 코드의 잘못이 아니라 Ghostty의 기존 버그를 드러낸 것일 뿐이라고 명확히 했다. 수정 방안은 스크롤백 정리 중 비표준 페이지를 만나면 재사용하지 않고 적절히 파괴한 후 풀에서 새로운 표준 크기 페이지를 할당하는 것이다.

메모리 태깅으로 누수 추적

수정 과정에서 개발자는 macOS의 Mach 커널이 제공하는 가상 메모리 태그 기능을 추가했다. 이를 통해 PageList 메모리 할당에 특정 식별자를 부여해 디버깅 도구에서 쉽게 추적할 수 있게 됐다. 이 기능 덕분에 누수를 PageList와 연결하고 수정이 제대로 작동하는지 검증할 수 있었다.
Ghostty 프로젝트는 메모리 누수 방지를 위해 디버그 빌드와 단위 테스트에서 누수 탐지 할당자를 사용하고, 모든 커밋마다 Valgrind로 전체 테스트 스위트를 실행한다. 그러나 이번 누수는 매우 특정한 조건에서만 발생해 기존 테스트로 잡아내지 못했다. 수정 패치에는 향후 재발을 방지하기 위한 재현 테스트가 포함됐다.
수정 사항은 현재 nightly 릴리스에서 사용 가능하며, 3월 출시 예정인 Ghostty 1.3 정식 버전에 포함될 예정이다. 개발자는 재현 가능한 테스트를 제공한 사용자 grishy와 상세한 진단 정보를 제공한 커뮤니티에 감사를 표했다.
한국정보기술신문 정보기술분과 김지원 기자 news@kitpa.org

함께 읽으면 좋은 기사

애플, 맥에서 지갑 패스 만드는 '패스 디자이너' 베타 공개...코드 없이 실시간 미리보기·오류 검증 지원

애플, 맥에서 지갑 패스 만드는 '패스 디자이너' 베타 공개...코드 없이 실시간 미리보기·오류 검증 지원

정보기술 3분
오픈AI, 말로 웹사이트 만드는 'ChatGPT Sites' 공개 베타 운영...코딩 없이 사이트 제작부터 게시·공유까지

오픈AI, 말로 웹사이트 만드는 'ChatGPT Sites' 공개 베타 운영...코딩 없이 사이트 제작부터 게시·공유까지

인공지능 3분
AWS, 이란 공격 받은 바레인·UAE 데이터센터 일부 데이터 "복구 불가" 공식화...피격 6개월 만의 발표, 여러 가용 영역 동시 피해로 설계 한계 넘어서

AWS, 이란 공격 받은 바레인·UAE 데이터센터 일부 데이터 "복구 불가" 공식화...피격 6개월 만의 발표, 여러 가용 영역 동시 피해로 설계 한계 넘어서

클라우드 3분
애플, 아이폰 촬영 사진의 진위 증명하는 '레퍼런스 이미지' 공개...아이폰 18 프로 카메라 센서가 촬영 즉시 서명, 양자내성 암호 적용하고 촬영자 신원은 숨겨

애플, 아이폰 촬영 사진의 진위 증명하는 '레퍼런스 이미지' 공개...아이폰 18 프로 카메라 센서가 촬영 즉시 서명, 양자내성 암호 적용하고 촬영자 신원은 숨겨

정보보안 4분
과기정통부, 원주에 디지털헬스케어 특화 'AI융합혁신교육원' 개소...의료데이터·피지컬 AI 교육으로 올해 160명 양성, 기업-대학 연계 프로젝트로 채용까지 잇는다

과기정통부, 원주에 디지털헬스케어 특화 'AI융합혁신교육원' 개소...의료데이터·피지컬 AI 교육으로 올해 160명 양성, 기업-대학 연계 프로젝트로 채용까지 잇는다

인공지능 · 유관기관 2분
마이크로소프트, '.NET 11' 성능 개선 수백 건 공개...비동기 처리 구조 바꾸고 불필요한 검사·메모리 할당 줄여, 일부 코드는 5배 빨라져

마이크로소프트, '.NET 11' 성능 개선 수백 건 공개...비동기 처리 구조 바꾸고 불필요한 검사·메모리 할당 줄여, 일부 코드는 5배 빨라져

정보기술 4분
애플, iOS 27 등 새 운영체제 배포 시작...'시리 AI' 영어 베타 공개...한국어는 10월 지원, 자녀 보호 기능 강화하고 앱 실행 속도 최대 30% 개선

애플, iOS 27 등 새 운영체제 배포 시작...'시리 AI' 영어 베타 공개...한국어는 10월 지원, 자녀 보호 기능 강화하고 앱 실행 속도 최대 30% 개선

인공지능 4분
딥시크, KV 캐시 4분의 1로 줄인 'V4.1 플래시' 공개...층 간 캐시 공유·FP4 저장으로 장기 AI 에이전트 비용 절감 겨냥

딥시크, KV 캐시 4분의 1로 줄인 'V4.1 플래시' 공개...층 간 캐시 공유·FP4 저장으로 장기 AI 에이전트 비용 절감 겨냥

인공지능 4분
오픈JDK, 자바 27 정식 출시...G1 기본 가비지 컬렉터·양자내성 TLS 도입

오픈JDK, 자바 27 정식 출시...G1 기본 가비지 컬렉터·양자내성 TLS 도입

정보기술 2분
애플, 완전히 새로 만든 '시리 AI' 출시...iOS 27 등 새 운영체제에 차세대 애플 인텔리전스 탑재, 영어 베타로 먼저 시작해 한국어는 다음 달 지원

애플, 완전히 새로 만든 '시리 AI' 출시...iOS 27 등 새 운영체제에 차세대 애플 인텔리전스 탑재, 영어 베타로 먼저 시작해 한국어는 다음 달 지원

정보통신 · 인공지능 4분
유웨이어플라이, 수시 원서접수 서버 장애 공식 사과...마감 10분 전 시스템 멈춰 접수 1시간 연장

유웨이어플라이, 수시 원서접수 서버 장애 공식 사과...마감 10분 전 시스템 멈춰 접수 1시간 연장

정보기술 · 정보보안 3분
애플, 5초마다 심박 재는 '헬스 센싱 시스템' 애플워치 시리즈 12 공개...S11 칩으로 레디니스 점수·오디오 인텔리전스 도입, 18일 정식 출시

애플, 5초마다 심박 재는 '헬스 센싱 시스템' 애플워치 시리즈 12 공개...S11 칩으로 레디니스 점수·오디오 인텔리전스 도입, 18일 정식 출시

정보기술 5분