핵심 요약
- 인터랙티브 픽션 분석가 앤드루 플롯킨이 인포콤의 1983년 고전 명작 '인피델'을 메모리 디버거로 분석하던 중 심각한 버그를 찾아냈습니다.
- 게임플레이에는 티가 안 나 수십 년간 묻혀 있었으나, 사막 좌표에 둔 아이템을 처리하는 과정에서 엉뚱한 메모리를 덮어쓰는 와일드 포인터 및 컴파일러 버그였습니다.
- 디버거로 객체 이동 테이블을 시각화하려다 발견되었으며, 분석가는 C 프로그래머 입장에서 최악의 죄악인 메모리 오염 버그라고 지적했습니다.
요약 고전 인터랙티브 픽션(텍스트 어드벤처) 게임 개발자이자 분석가인 앤드루 플롯킨(Andrew Plotkin)이 인포콤(Infocom)의 1983년작 고전 어드벤처 게임 '인피델(Infidel)'을 메모리 레벨 디버거 툴로 분석하던 중, 수십 년간 게이머들이 눈치채지 못했던 충격적인 메모리 오염 버그를 발견했다고 밝혔습니다.
'인피델'은 이집트 사막을 배경으로 하는 게임으로, 정해진 구역을 벗어나면 무한히 펼쳐진 사막('ENDLESS-DESERT')이라는 단일 방으로 이동하게 됩니다. 게임 시스템은 플레이어가 광활한 사막을 헤매고 있다는 착각을 유지하기 위해 좌표(위도와 경도)를 추적하며, 바닥에 아이템을 내려놓을 경우 이를 'DESERT-TABLE'이라는 배열에 좌표와 함께 저장했다가 다시 해당 좌표로 돌아왔을 때 꺼내주는 방식으로 가상 공간을 연출했습니다.
하지만 플롯킨이 이 과정을 디버거 툴의 상태 탭에 시각적으로 띄우려 하자, 아이템을 내려놓아도 DESERT-TABLE 배열이 계속 비어있는 이상 현상이 나타났습니다. ZIL(Zork Implementation Language) 코드와 Z-머신 루틴을 확인한 결과, 게임플레이 도중에는 거의 문제를 일으키지 않아 아무도 눈치채지 못했지만 실제로는 지정된 배열이 아닌 엉뚱한 메모리 영역을 제멋대로 덮어쓰고 있는 와일드 포인터(wild pointer) 버그이자 컴파일러 버그임이 드러났습니다. 플롯킨은 C 프로그래머로서 메모리 오염은 절대 용납할 수 없는 최악의 죄악이라며 이를 인포콤 게임 역사상 가장 심각한 버그라고 꼬집었습니다.
Sponsored · 광고