10억 초 문제
1. 개요
10억 초 문제는 1970년 이후의 초 수를 나타내는 숫자가 10자리가 되면서 발생할 수 있는 문제이다. 2000년 문제와 유사하게 사회적 관심이 있었지만, 언론 보도는 미미했다. 개별 프로그램에서 실제로 문제가 발생했으며, 야후! 게시판, CVSup, 윈도우 ME 시스템 복원 기능 등에서 확인되었다. 문제의 주요 원인은 1970년 이후의 초 수를 문자열로 변환하여 정렬하는 과정에서 발생하며, 문자열 정렬 시 "1000000000"이 "999999999"보다 작은 값으로 취급되어 항목 정렬 오류가 발생하기 때문이다. UNIX의 ls 명령어, Perl의 sort 명령어 등에서 문자열 정렬이 기본값으로 설정되어 있어, 프로그래머들이 1973년 이후 약 30년간 초 수가 9자리였던 점을 간과하여 문제를 일으키는 경우가 있었다.
-
2001년 컴퓨팅 -
님다
2001년에 발견된 님다는 전자 우편, 네트워크 공유, 감염된 웹사이트, IIS 서버 취약점, 백도어 등 다양한 경로를 통해 빠르게 확산된 강력한 컴퓨터 웜으로, 이메일 읽기만으로도 감염될 수 있고 발신자 주소 위장이 가능하여 피해를 키웠다. -
2001년 컴퓨팅 -
코드 레드 (컴퓨터 웜)
코드 레드는 2001년 여름에 전 세계적으로 확산된 컴퓨터 웜으로, 마이크로소프트 IIS 웹 서버의 취약점을 이용해 스스로를 복제하고 특정 메시지 표시 및 서비스 거부 공격을 수행하는 특징을 가진다. -
2001년 9월 -
2001년 지중해 게임
2001년 9월 2일부터 15일까지 튀니지 튀니스에서 23개국이 참가한 제14회 지중해 게임이 개최되어 프랑스가 종합 1위를 차지했다. -
2001년 9월 -
가부키초 빌딩 화재
가부키초 빌딩 화재는 2001년 9월 1일 도쿄 신주쿠 가부키초의 한 건물에서 발생하여 44명이 사망하고 3명이 부상당한 대형 화재 사고이며, 유독 가스로 인한 일산화탄소 중독이 사망의 주요 원인이었고, 일본 소방법 개정의 계기가 되었다. -
시간 -
오전
-
시간 -
과거
과거는 이전에 일어난 일, 개인의 경험, 특정 시점 등을 의미하며, 찰스 디킨스의 소설에 등장하고, 철학, 학문 등 다양한 분야에서 연구되며, 교훈을 담고 있는 주제이다.
2. 실태
2000년 문제가 큰 사회적 화제로 다루어졌던 탓에, 많은 기업이 2001년 9월 9일 문제 대응에 관한 페이지를 만들었지만, 언론은 거의 이 문제를 다루지 않았다. 또한 한편으로는 "초 수를 10진수 9자리를 상한으로 하는 프로그램을 짤 일은 없다", "문제는 일어나지 않을 것이다"라는 기술자의 의견도 있었다.
하지만 개별 프로그램 수준에서는 실제로 문제가 발생했다. 확인된 예는 다음과 같다.
* 야후! 게시판(야후! 재팬)
* CVSup
* gnus
* Windows Me의 시스템 복원 기능
* 선 디렉터리 서비스(Solaris용)
* Pro*COBOL (Oracle, Windows 버전)
2ch.net의 스레드 ID에도 이 값이 사용되었지만 문제는 일어나지 않았다 (사전에 테스트되었다).
이러한 원인의 대부분은 1970년부터의 초 수를 문자열 표현으로 변환하여 정렬한 데 있었다. 문자열 (사전순)로 정렬하면 "1000000000(10자리)" < "999999999(9자리)"가 되어 항목이 올바른 순서로 정렬되지 않는다. 이로 인해 새로 만들어진 항목이 목록에 표시되지 않거나, 소정의 동작이 수행되지 않거나, 오래된 항목으로 오인되어 삭제되는 등의 문제가 발생한다.
UNIX의 ls 명령어는 파일명이 숫자여도 문자열로 간주하여 정렬한다. 또한 CGI 프로그래밍에서 널리 사용되는 Perl도 sort 명령어는 "숫자를 문자열로 변환한 후 정렬"하는 것이 기본값이다.
이처럼 문자열 정렬이 기본값으로 설정되어 있는 데다가, 1970년 이후의 초 수가 9자리가 된 것은 1973년3월 3일 9시 46분 40초 (1970년으로부터 약 3년 후)로 꽤 오래되었던 것도 프로그래머가 방심하는 요인 중 하나가 되었다. 현재 작동하는 대부분의 프로그램은 1973년 이후에 만들어졌으며, 지난 약 30년간 초 수가 9자리였기 때문에, 부주의하게 문자열로 정렬해도 문제가 일어나지 않았던 것이다.