г дэ
из-за таких долбоëбов линукс и нужен только задротам
ты поставил минт или федору в один клик и горя не знаешь? нееет, ты должен проебать весь остаток своей жалкой жизни на настройку арча, тайлового кала или пердолингом с nixos какой-нибудь
🏆4😁1
Forwarded from утиные лапки (gustrah северной части)
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from интернеты 2 (Олег🥝)
ПОШЕЛ ТЕЛЕГРАМ В ЗАДНИЦУ Я ВОЗВРАЩАЮСЬ ДОМОЙ МОЯ ЖЕНА ДЕЛАЛА ЭТИ 30 ШРИФТОВ НЕБЛАГОДАРНЫЕ СУКИНЫ ДЕТИ А ВЫ ТОЛЬКО НЕДЕЛАЕТЕСЬ НЕПИШИТЕСЬ НЕОТПРАВЛЯЕТЕСЬ
Forwarded from Гипермда
Прочитал про раскопки одного из самых странных багов в истории видеоигр – исчезновение гидроплана из GTA San Andreas после… обновления Windows 11 24H2? Как обновление винды смогло что-то поломать в игре двадцатилетней давности? Почему именно исчезающий гидроплан? На самом деле, это история про категории, самоисправление систем и строгость с любопытными перспективами.
Автор популярного семейства патчей для серии GTA – SilentPatch – примерно с октября 2024 года начал получать на гитхабе жалобы на “исчезнувший гидроплан” Skimmer. Исчез он только в San Andreas, вне зависимости от того, модфицировали игру или нет. Из исходных данных в анамнезе был только один общий факт – гидроплан всегда пропадал после установки обновления 24H2. Причем гидроплан нельзя было даже заспавнить с помощью скриптов – скрипт срабатывает, но гидроплана не видно.
Тогда Silent использовал скрипт, чтобы заспавнить гидроплан и сразу посадить в него аватар игрока. Оказывается, самолет все же появлялся, просто на первом же кадре он взлетал на высоту в 1087 квадриллионов световых лет даже без включения двигателя (выходит, что в каком-то смысле гидроплан даже прокачался).
Silent дает детальное описание проблемы (очень советую прочитать), я постараюсь упростить. Дело в том, что во время создания транспорта игра обращается к данным о размерах передних и задних колес...
Которых у гидроплана нет. И параметров этих у гидроплана тоже нет.
В GTA этих параметров нет у лодок, и поэтому в Vice City с гидропланами нет проблем – они принадлежат классу лодок, Skimmer is a boat. Но в San Andreas их перенесли в класс самолетов, у которых колеса уже должны быть. И если внести параметры колес в описание гидроплана ручками, никаких проблем в San Andreas не возникает. Но при чем тут Windows 11 и обновление, что именно ломается? Если кратко, то раньше в игре пустые строки заполнялись автоматически самой игрой, и размер “колес” гидроплана менялся на 1.0. На Win11 24H2 – на невозможные числа (7.84421263e+33 и 4.54809690e-38).
Проблема, в общем, оказалась не в самой Windows – в 24H2 изменилось стэковое пространство, занимаемое Critical Section Objects. Что это значит? В программном коде есть участки, называемые “критическими секциями” – они не могут быть использованы более чем одним потоком выполнения одновременно; другим потокам нужно подождать разблокировки. Проще говоря, какие-то наборы операции не могут выполняться одновременно.
“Нарезка” таких секций на уровне машинного кода меняется от одной версии Windows к другой, но в случае с San Andreas переменные, которые отвечали за размер колес, не попадали в критическую секцию кода, который спавнил гидроплан. Сам исполнительный файл видел пустоту в параметрах и выставлял значения для колес по умолчанию – поэтому проблем с гидропланом не было на компьютерах. А вот на Xbox эта проблема возникала, и ее Rockstar правили патчем отдельно, прописывая значения колес; но все компьютерные версии игры полагались, по факту, на авось. На 24H2 размер стэка стал таким, что в критическую секцию попал параметр размера колес, и сама игра уже не могла “посмотреть” в этот мусор и прописать нужное значение – доступ блокировался свойствами секции, винда практически говорит “модифицировать эти данные сейчас нельзя”, а значит, нельзя поменять значения на “по умолчанию”, и данные на нужных адресах в итоге дают кучу мусора. Если бы код в этом участке был короче всего на 4 байта, этот баг всплыл бы намного раньше, так как попадал бы в границы критической секции. (Да, если кто-то может чуть более грамотно это сформулировать – добро пожаловать в комменты).
Полезных выводов из этой истории два. Во-первых, как советует автор, нужно валидировать данные и не надеяться, что ошибки сами исправятся стандартными значениями. Ну а во-вторых, чудо, что игры вообще запускаются.
UPD. На хабре есть перевод на русский.
Автор популярного семейства патчей для серии GTA – SilentPatch – примерно с октября 2024 года начал получать на гитхабе жалобы на “исчезнувший гидроплан” Skimmer. Исчез он только в San Andreas, вне зависимости от того, модфицировали игру или нет. Из исходных данных в анамнезе был только один общий факт – гидроплан всегда пропадал после установки обновления 24H2. Причем гидроплан нельзя было даже заспавнить с помощью скриптов – скрипт срабатывает, но гидроплана не видно.
Тогда Silent использовал скрипт, чтобы заспавнить гидроплан и сразу посадить в него аватар игрока. Оказывается, самолет все же появлялся, просто на первом же кадре он взлетал на высоту в 1087 квадриллионов световых лет даже без включения двигателя (выходит, что в каком-то смысле гидроплан даже прокачался).
Silent дает детальное описание проблемы (очень советую прочитать), я постараюсь упростить. Дело в том, что во время создания транспорта игра обращается к данным о размерах передних и задних колес...
Которых у гидроплана нет. И параметров этих у гидроплана тоже нет.
В GTA этих параметров нет у лодок, и поэтому в Vice City с гидропланами нет проблем – они принадлежат классу лодок, Skimmer is a boat. Но в San Andreas их перенесли в класс самолетов, у которых колеса уже должны быть. И если внести параметры колес в описание гидроплана ручками, никаких проблем в San Andreas не возникает. Но при чем тут Windows 11 и обновление, что именно ломается? Если кратко, то раньше в игре пустые строки заполнялись автоматически самой игрой, и размер “колес” гидроплана менялся на 1.0. На Win11 24H2 – на невозможные числа (7.84421263e+33 и 4.54809690e-38).
Проблема, в общем, оказалась не в самой Windows – в 24H2 изменилось стэковое пространство, занимаемое Critical Section Objects. Что это значит? В программном коде есть участки, называемые “критическими секциями” – они не могут быть использованы более чем одним потоком выполнения одновременно; другим потокам нужно подождать разблокировки. Проще говоря, какие-то наборы операции не могут выполняться одновременно.
“Нарезка” таких секций на уровне машинного кода меняется от одной версии Windows к другой, но в случае с San Andreas переменные, которые отвечали за размер колес, не попадали в критическую секцию кода, который спавнил гидроплан. Сам исполнительный файл видел пустоту в параметрах и выставлял значения для колес по умолчанию – поэтому проблем с гидропланом не было на компьютерах. А вот на Xbox эта проблема возникала, и ее Rockstar правили патчем отдельно, прописывая значения колес; но все компьютерные версии игры полагались, по факту, на авось. На 24H2 размер стэка стал таким, что в критическую секцию попал параметр размера колес, и сама игра уже не могла “посмотреть” в этот мусор и прописать нужное значение – доступ блокировался свойствами секции, винда практически говорит “модифицировать эти данные сейчас нельзя”, а значит, нельзя поменять значения на “по умолчанию”, и данные на нужных адресах в итоге дают кучу мусора. Если бы код в этом участке был короче всего на 4 байта, этот баг всплыл бы намного раньше, так как попадал бы в границы критической секции. (Да, если кто-то может чуть более грамотно это сформулировать – добро пожаловать в комменты).
Полезных выводов из этой истории два. Во-первых, как советует автор, нужно валидировать данные и не надеяться, что ошибки сами исправятся стандартными значениями. Ну а во-вторых, чудо, что игры вообще запускаются.
UPD. На хабре есть перевод на русский.
Silent’s Blog
How a 20 year old bug in GTA San Andreas surfaced in Windows 11 24H2
After over two decades, players are now forbidden from flying a seaplane, all thanks to undefined code behavior.
🤯1🤣1
г дэ
мир был бы чуточку лучше, если бы этот альбом не был записан на картофелечистку
просто для сравнения
Раньше всех. Ну почти.
⚡️Заморозки до -6 градусов ожидаются в столичном регионе с 1 по 3 мая – МЧС
This media is not supported in your browser
VIEW IN TELEGRAM
😭2🤡1