- Published on
Go 1.26(2026년 2월 10일)이 runtime/pprof에 goroutineleak 프로파일을 실험 기능으로 추가했습니다. 아이디어는 GC의 마킹 단계를 재활용하는 것입니다 — 실행 가능한 고루틴만 루트로 삼아 마킹한 뒤, 어떤 고루틴도 도달할 수 없는 동시성 프리미티브에 블록된 고루틴을 누수로 보고합니다. 메모리 도달 가능성이 고루틴 생존성의 건전한 과대근사라는 점이 핵심이고, 그래서 거짓 양성이 없습니다. 대신 거짓 음성은 남습니다 — 전역 변수나 살아 있는 하트비트 고루틴이 채널을 계속 도달 가능하게 붙잡고 있으면 진짜 누수도 보이지 않습니다. 이 글은 Go 1.26 릴리스 노트와 제안서, 그리고 그 바탕이 된 ASPLOS 25 논문을 근거로 알고리즘, 실제 사용법, 못 잡는 두 가지 패턴, 비용, uber-go/goleak과의 관계, 그리고 논문의 회수(recovery) 절반이 왜 업스트림에 없는지를 정리합니다. Go 1.27에서 기본 활성화될 예정입니다.