- Published on
Clang 22.1.0(2026-02-24)은 MSVC ABI를 타깃할 때의 소멸자 코드 생성을 두 군데 바꿨습니다. 하나는 ::delete 처리를 MSVC와 맞춘 것이고, 다른 하나는 2014년에 열린 이슈를 11년 7개월 만에 닫은 vector deleting destructor 지원입니다. 둘 다 진짜 버그를 고치는 변경이지만, vftable 슬롯에 들어가는 심볼이 바뀌는 ABI 변경이라 clang 21 이하로 빌드한 오브젝트와 섞으면 메모리가 깨집니다. 그리고 릴리스 다음 날 delete[] 힙 손상 이슈가 올라왔습니다 — 그중 하나는 22.1.2에 백포트됐지만, 다른 하나는 2026-07-16 현재 최신인 22.1.8까지도 들어가 있지 않습니다. 이 글은 MSVC ABI의 소멸자 3종과 숨은 플래그 파라미터, 이 기능이 네 번 랜딩되고 세 번 되돌려진 이유(두 번은 Chromium이 막았습니다), 링크는 되는데 런타임에 힙이 깨지는 정확한 메커니즘, 그리고 지금 clang-cl을 쓰는 사람이 확인해야 할 것을 정리합니다.