피드로 돌아가기
macOS에서 49.7일 후 TCP 네트워킹이 중단되는 버그 발견
GeekNewsGeekNews
Infrastructure

macOS에서 49.7일 후 TCP 네트워킹이 중단되는 버그 발견

macOS 업타임 49.7일의 저주, TCP 롤오버 버그 분석

xguru2026년 4월 9일3advanced

Context

macOS 특정 버전 이후 도입된 코드에서 TCP 네트워킹 중단 현상 발생. 시스템 업타임이 약 49.7일에 도달하면 모든 TCP 연결이 마비되는 구조. tcp_now 시계의 오버플로우 발생 시 롤오버 처리가 누락된 설계적 결함.

Technical Solution

  • tcp_now 값이 오버플로우 직전 수치에서 정체되는 현상 식별
  • 타이머 계산 과정의 잘못된 wraparound 처리로 인한 결과값 음수화 확인
  • 음수 값 발생으로 인한 시간 비교 로직 실패 및 TCP 연결 프로세스 중단
  • Linux 커널의 jiffies 카운터 초기화 방식과 같은 오버플로우 방지 전략 검토
  • calculate_tcp_clock 함수에 업타임 인자를 전달하여 강제로 롤오버 시점을 시뮬레이션하는 검증 방식 제안
  • 하드웨어 시계를 활용한 시간 가속 테스트를 통해 50일 이상의 장기 가동 환경 재현

Impact

  • 시스템 업타임 49.7일 경과 시 TCP 네트워킹 전면 중단

Key Takeaway

카운터 기반의 시간 측정 시스템 설계 시 롤오버(Rollover) 처리는 필수적이며, 실제 시간 경과를 기다리지 않고 오버플로우 직전 값으로 초기화하여 테스트하는 시뮬레이션 환경 구축이 중요함.


시스템 런타임 카운터를 사용하는 로직 설계 시, 오버플로우 발생 시점을 강제로 설정하여 경계 값 테스트를 수행할 것

원문 읽기