Независимый разработчик под ником Nathan Baggs обнаружил причины частых вылетов игры Return to Castle Wolfenstein на современных системах под управлением Windows 10 и Windows 11. Автор не только детально разобрал технические проблемы шутера 2001 года выпуска, но и выпустил неофициальное исправление, устраняющее сбои при запуске и перезагрузке уровней.
Сбой при запуске игры был связан с работой на компьютерах с интегрированной графикой, в виртуальных машинах, а также при изменении имени исполняемого файла WolfSP.exe. С помощью инструментов отладки энтузиаст выяснил, что игра использует устаревшую функцию vsprintf для копирования списка расширений OpenGL в буфер фиксированного размера, составляющий 4096 байт. В 2001 году этого объема было достаточно, однако за прошедшие годы количество поддерживаемых графическими драйверами расширений значительно увеличилось. В результате при запуске на современном оборудовании происходит переполнение буфера, приводящее к нарушению прав доступа и мгновенному закрытию приложения.
Интересно, что видеокарты компании Nvidia избегают этого сбоя благодаря специальному профилю в драйверах. Драйвер распознает оригинальный исполняемый файл игры и намеренно передает ей урезанный список расширений OpenGL. Если переименовать файл игры, защита драйвера перестает работать, и игра вылетает даже на современных дискретных графических адаптерах. Разработчики аналогичного движка Quake 3 в свое время исправили эту проблему, заменив небезопасную функцию на более надежную vsnprintf, которая ограничивает размер записываемых данных. Однако создатели Return to Castle Wolfenstein из студии Gray Matter Studios использовали более раннюю версию исходного кода движка и не перенесли это исправление в свою игру.
Другой