• 34년 된 애플 맥 크래시 버그, ‘영원히 발견되지 않았을 것’…MAME 에뮬레이터의 정확성이 빛을 비추다

    실제 하드웨어에서 Motorola 68030은 부팅 시 시스템 충돌을 방지하기 위해 비문서화된(undocumented) 명령어를 실행했지만, 이는 에뮬레이터에서 문제를 일으켰다.

    article image

    컴퓨팅 애호가 한 명이 34년 된 애플 Mac의 버그를 발견했습니다. 이 버그는 시스템 부팅 시 Mac을 마비시킬 수 있는 치명적인 결함이었으나, 모토로라(Motorola) CPU에 내재된 문서화되지 않은 기능 덕분에 조용히 무력화되었습니다. 다운타운의 더그 브라운(Doug Brown)은 MAME 에뮬레이션 시스템(32비트 모드)에서 충돌하는 현상을 목격한 후, 원본 하드웨어에서는 문제가 없었던 Mac Classic II의 ROM 코드 결함을 발견했습니다(출처: PC Gamer). 만약 브라운의 순수한 호기심이 자극되지 않았다면, 이 ROM 속 버그는 영원히 발굴되지 않았을 것이라고 필자는 동의합니다.

    자신을 "애플, 리눅스, 윈도우를 아우르는 전문가(combined geek)"로 소개하는 브라운은 오픈 소스 MAME(Multiple Arcade Machine Emulator) 프로젝트의 열렬한 팬이기도 합니다. 그는 독자들에게 이 소프트웨어가 "68000 기반 Mac 모델을 에뮬레이트하는 가장 완벽한 프로그램 중 하나"라고 주장하며, 자신에게 이 고전적인 모토로라 CPU 기반 시스템들이 에뮬레이터를 사용하는 주요 목적이라고 밝힙니다. 이는 MAME이 본래 고전 아케이드 게임의 재미를 구현하는 데 가장 유명하다는 점을 고려할 때 다소 이례적인 사용 사례입니다.

    브라운의 이야기에 따르면, 그는 MAME에서 Mac 에뮬레이션을 취미로 즐기던 중, 에뮬레이션된 Classic II가 32비트 주소 지정 모드에서는 부팅되지 않는다는 점을 발견했습니다. 그러나 24비트 주소 지정 모드에서는 정상적으로 작동했으며, 24비트 옵션이 켜진 상태에서도 '사라진 맥(sad Mac)'과 같은 오류는 발생하지 않았습니다. 도대체 무슨 원인으로 이런 현상이 벌어지고 있었을까요? 또한, 원본 하드웨어는 아무런 문제를 겪지 않았음에도 불구하고, 에뮬레이션된 Mac이 왜 그리 빠르고 심각하게 충돌했던 것일까요?

    article image

    macOS에는 재부팅을 통해서만 해결되는 49.7일간의 네트워크 시간 폭탄이 내장되어 있습니다.

    에뮬레이터에서 버그가 발생할 수 있는 방식은 많지만, 이 사례에서는 MAME이나 이 프로그램이 의존하는 어떤 코드도 결함의 원인으로 지목할 수 없습니다.

    문서화되지 않은 MC68030 명령어의 역할

    애플의 ROM을 리버스 엔지니어링하고 에뮬레이션된 기기의 오작동을 광범위하게 포렌식 디버깅한 결과, 브라운은 그 버그가 에뮬레이션 소프트웨어와는 아무런 관련이 없이 Mac Classic II의 ROM 코드 자체에 존재한다는 사실을 밝혀냈습니다. 에뮬레이션 시스템과 원본 시스템 사이의 가장 큰 차이점은 CPU가 ROM의 문제가 되는 명령어를 처리하는 방식이었습니다. 에뮬레이션 환경에서는 32비트 모드에서 '사라진 맥'과 함께 충돌했지만, 실제 하드웨어에 장착된 68030 시스템에서는 해당 결함을 아무렇지도 않게 건너뛰었습니다. 하지만 68030의 공식 문서화된 기능 중 어느 것도 이 (행운의) 운영상 특이점을 설명해주지는 못했습니다.

    article image

    브라운은 길고 복잡하게 상세한 블로그 포스트를 마무리하며, "만약 성가신 68030이 이 버그를 숨기지 않았더라면" 애플 개발자들이 32비트 충돌 부팅 문제를 분명히 발견하고 수정했을 것이라고 주장했습니다. 이 컴퓨팅 애호가는 이 비밀스러운 68030의 기능 자체를 "Classic II를 우연히 하나로 지탱하고 있는 접착제"라고 재치 있게 표현했습니다. 또한, 그는 이 버그를 세상에 공개하게 만든 애플 ROM 개발자들에게도 동정심을 표했는데, 그 배경에는 모토로라 CPU가 조용히 결함을 수습해 주었기 때문입니다.

    브라운이 제기한 또 하나의 중요한 지점은, 이 문서화되지 않은 버그의 존재를 고려할 때, "100% 완벽한 모토로라 MC68030 에뮬레이터나 복제품이 현존할 가능성은 매우 낮다"는 것이었습니다. 이 모토로라 CPU를 다뤘던 엔지니어 중 누군가가 이 기사를 읽고, 운 좋게도 Classic II의 부팅 과정에서 구원의 역할을 하는 이 문서화되지 않은 68030 기능에 대한 정보를 가지고 연락할 수도 있다는 가능성을 언급했습니다. 브라운은 또한 다른 많은 68030 기반 기기들 역시 이 프로세서의 기발한 기능에 의해 소프트웨어 수준에서 버그 수정이 이루어졌는지에 대해서도 궁금해했습니다.

    궁금한 최신 뉴스, 분석 및 리뷰를 받으려면 Google News에서 Tom's Hardware를 팔로우하거나 선호 출처로 추가하세요.

    [출처:] https://www.tomshardware.com/video-games/retro-gaming/a-34-year-old-apple-mac-crash-bug-would-have-gone-undiscovered-for-all-eternity-but-the-accuracy-of-the-mame-emulator-shone-a-light-on-it