피드로 돌아가기
GeekNewsInfrastructure
원문 읽기
macOS에서 49.7일 후 TCP 네트워킹이 중단되는 버그 발견
macOS 업타임 49.7일의 저주, TCP 롤오버 버그 분석
AI 요약
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) 처리는 필수적이며, 실제 시간 경과를 기다리지 않고 오버플로우 직전 값으로 초기화하여 테스트하는 시뮬레이션 환경 구축이 중요함.
실천 포인트
시스템 런타임 카운터를 사용하는 로직 설계 시, 오버플로우 발생 시점을 강제로 설정하여 경계 값 테스트를 수행할 것