10억 초 문제

 

[image]
1. 설명
2. 발생 원인
3. 만약 수정되지 않았다면?
4. 이 문제가 발견됐던 프로그램들
5. 여담
6. 관련 문서
7. 외부 링크

'''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억 초 문제가 발견되었는데, 코렐이 이미 워드퍼펙트에 대한 지원을 중단해버려서 유저들이 직접 패치를 배포했다.
이 문제도 오버플로이기 때문에 2038년 문제와 비슷하다는 의견이 있으나 이거는 자릿수가 부족한 경우이고 2038년 문제는 32비트 컴퓨터 시스템의 문제이다. 그래도 넓은 관점으로 본다면 오버플로 문제이니 비슷하다고 볼 수 있는 편이다.

6. 관련 문서


  • 유닉스 시간
  • 오버플로
  • 2000년 문제
  • 10000년 문제
  • 497일 문제
  • 2010년 문제
  • 2038년 문제[2]

7. 외부 링크


영문 위키피디아의 유닉스 시간

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