
이에 조사를 해본 결과, 1975년에 발표된 UNIX 6th Edition에서 문제의 코드가 발견되었다고 합니다.
yypv =- yyr2[n];
yyval=yypv[1];
이 버그는 sparc64 프로세서에서만 재현이 가능합니다. sparc64는 페이지 크기로 8kB를 사용하는데, yacc의 C++용 기본 스택 크기는 4800바이트(24*200)였기 때문에 문제가 발생하는 것이지요.
재밌는 것은, sparc64 프로세서는 1995년에 탄생했다는 점입니다. 즉, 버그 자체는 33살이지만, 이 버그가 실제로 문제를 일으킬 수 있었던 것은 13년밖에 되지 않았습니다. Y2K 버그와 비슷하게, 개발 시 생각을 못 한 부분이 나중에 밝혀진 경우지요.
어떤 버그가 이토록 오래 방치되는 이유는 무엇일까요? 대충 다음과 같은 이유가 있지 않을까요.
1. 아무도 사용하지 않는 기능이었다.
2. 유명하지 않은 프로그램이었다.
3. 다들 기능인 줄 알았다.
아무튼, 한 코더의 집념이 이루어낸 결과군요.
패치 안내문
새로운 malloc() 구현
자세한 버그 설명
Posted by 랜덤여신

