인포콤 '인피델'에서 40년 묵은 와일드 포인터 컴파일러 버그 발견
- 인포콤 텍스트 어드벤처 '인피델' 릴리스 22(시리얼 840522)에서 메모리를 엉뚱한 곳에 덮어쓰는 와일드 포인터 버그가 발견됨. 매킨토시용 업데이트판이며, 원판인 시리얼 830916도 주소만 조금 다를 뿐 같은 버그를 가짐
- 저자가 게임을 사실상 메모리 수준 디버거로 플레이한 첫 사람이라 이 버그를 처음 알아냄. 플레이만으로는 거의 드러나지 않는 종류임
- 사막 좌표별 오브젝트를 저장하는 DESERT-TO-TABLE 루틴에서 발생한 컴파일러 버그임. 좌표와 오브젝트 ID를 쌍으로 DESERT-TABLE(주소 11129, 값 100개 200바이트)에 기록하는 구조
- 미지의 사막 전체를 ENDLESS-DESERT 단일 방으로 표현하는 방식은 '인챈터'에서 처음 나왔고, 사막에 떨어뜨린 물건은 3분의 1 확률로 모래에 묻혀 영영 사라짐
Hacker News opinions
나도 이런 기술적으로 재밌는 글 쓰고 싶은데 어떻게 하는지 모르겠음. 내 글은 그냥 인터넷 글 따라가면서 역사 추적하는 수준임.
그건 일단 그런 경험이 있어야 됨. 남들 경험이 아니라 네 경험이면 됨. 다른 사람도 흥미로워할 것 같으면 쓰면 됨.
레딧이나 HN 보다가 예전 경력에서 겪은 재밌는 순간이 떠오르면 짧게 답글을 쓰는데, 그게 그냥 블로그 글 하나가 될 수도 있음. jvns.ca처럼 '오늘 새로 배운 걸 그대로 씀' 식이 좋음. 모든 글이 같은 무게일 필요는 없음.
Digital Antiquarian의 컴퓨터 게임사 연재를 조금씩 읽는 중인데, 디스크 이미지를 애플 II 에뮬레이터에서 돌려야 하는 식이라 직접 해보기엔 번거로움. 이 글 덕분에 텍스트 어드벤처를 처음 해볼까 싶음.
1980년대 게임 프로그래머 중에 메모리 갈아엎는 버그 한 번도 안 낸 사람 손 들어봐. 인턴 때 내가 낸 게 제일 심했는데 팀 리드랑 스태프 엔지니어가 원인을 못 찾고 끙끙댔음. 다른 건 인턴 끝나고 몇 달 뒤에 메일 찾아와서 욕한 사람도 있었음. C 안 하는 게 나을 듯.
C 프로그래머라서 메모리 손상을 최악의 죄로 여겨야 한다는 대목, 자기 채찍질도 좀 적당히 하는 게 좋음.