10억 초 문제

(10억초 문제에서 넘어옴)


9.11 테러 2일 전이다(...)

Unix Billennium[1] / 十億秒 問題
1,000,000,000초 문제

1 개요

UTC 2001년 9월 9일 1시 46분 40초에 발생한 컴퓨터 버그.

2 발생 원인

컴퓨터는 내부적으로 시각을 처리할 때 유닉스 시간을 사용하는데 일부 구형 프로그램의 경우 이 유닉스 시간을 문자열 등의 방법을 통해 9자리 10진수로 저장한다. 그런데 만약 유닉스 시간이 10억초(약 31.7초)를 넘겨 10진수로 10자리가 되면 프로그램에 정렬과 관련된 문제를 일으킨다. 즉 "999,999,999"다음에 "1,000,000,000"이 되어야 하지만 9자리 수만 저장할 수 있었으므로 맨 앞의 1이 삭제되어 "000,000,000"으로 처리되는 것. 자세한 것은 오버플로 문서 참조.

이 버그는 오픈소스 특성상 발견된 이후 곧바로 수정되었다. 그리고 구형 프로그램에만 해당됐던 문제이기 때문에 몇 달 전의 Y2K보다 파장도 매우 적어서 그냥 하나의 기념일이 되었다.

3 만약 수정되지 않았다면?

10억 초마다 시간이 리셋되기 때문에 정렬 관련으로 혼파망을 겪을 수 있다. 주로 게시판에서 문제가 생길 가능성이 높다.

4 이 문제가 발견됐던 프로그램들

5 여담

코렐 사의 '워드퍼펙트'라는 프로그램의 문서 형식 중 하나인 'Filtrix'에서도 10억 초 문제가 발견되었는데, 코렐이 이미 워드퍼펙트에 대한 지원을 중단해버려서 유저들이 직접 패치를 배포했다.

6 관련 문서

7 외부 링크

영문 위키피디아의 유닉스 시간
  1. Billion(10억)과 Millennium의 합성어.
  2. 유닉스 시간을 32비트 정수로 처리하면서 생기는 문제