본문 바로가기

러스트 1.98.1 공개, vtable 생성 버그 긴급 수정

조회 1 · 댓글 0
1103동103호작성자2026년 9월 10일

러스트(Rust) 팀이 현지 시각 2026년 9월 3일 러스트 1.98.1 포인트 릴리스를 공개했습니다. 이번 릴리스는 새 기능 없이 단일 버그 하나만 수정합니다. 앞서 나온 1.98.0에서 유입된 컴파일러 미스컴파일(miscompilation)을 되돌리는 것이 목적입니다.

문제는 트레이트 객체(trait object)의 vtable 생성 과정에 있었습니다. 특정 조건에서 rustc가 vtable에 함수 포인터 대신 널 포인터를 채워 넣는 잘못된 코드를 생성했습니다. 이 상태로 해당 메서드를 호출하면 널 포인터를 함수로 호출하게 되어 미정의 동작(undefined behavior)이 발생합니다. 실제로는 세그멘테이션 폴트로 죽거나, 경우에 따라 더 나쁜 결과로 이어질 수 있습니다. 관련 내용은 GitHub 이슈 #161441로 추적됐습니다.

영향 범위를 정리하면 이렇습니다. 이 회귀는 1.98.0에서 처음 들어왔으므로, 1.98.0으로 올린 사용자만 노출됩니다. 그 이전 버전을 쓰고 있다면 이 버그의 영향은 없습니다.

  • 영향 버전: 1.98.0
  • 수정 버전: 1.98.1
  • 증상: vtable에 널 포인터가 들어가 UB 발생(세그폴트 등)

실무상 주의점은 간단합니다. 러스트는 안전성을 언어 차원에서 보장하는데, 이번 건은 사용자 코드의 문제가 아니라 컴파일러가 잘못된 기계어를 생성한 건전성(soundness) 버그입니다. 즉 안전한 코드만 썼더라도 1.98.0으로 빌드한 바이너리는 영향을 받을 수 있습니다. 1.98.0을 쓰고 있었다면 아래처럼 올린 뒤 재빌드하는 것을 권합니다.

rustup update stable rustc --version

업그레이드가 어려운 환경이라면 1.98.0 사용을 피하고 이전 버전에 머무는 것도 임시 대응이 됩니다. 포인트 릴리스라 버전만 올리면 되므로 대응 부담은 크지 않아 보입니다.

🔗 https://blog.rust-lang.org/2026/09/03/Rust-1.98.1/

로그인 후 답글을 남길 수 있습니다.