access_violation, или как мы CS2 тестировали
Часть первая - это чудо 17 раз упало и чтение логов
Началась данная история в полтретьего дня, а закончилась почти в полдвенадцатого ночи. За гриндом, переустановкой игры, обновлением драйверов, ребутами, чтением логов, тестами памяти и попытками выловить ошибку было проведено почти девять часов.
Ситуация банальна донельзя - еще вчера отлично работавшая игра начала падать при подключении к любому режиму, будь то Casual или Deathmatch. Краш происходил во время загрузки карты.
Для начала проблему попытались решить самым банальным способом - верификацией локальных файлов и переустановкой игры (эта часть оказалась самой затратной по времени, так как из-за кривых серверов/файлов творения Valve скачивание 45 гигабайт на гигабитном интернете растянулось на полтора часа). Впрочем, скорость загрузки конкретно файлов CS2 - это отдельная история.
Краши продолжилсь. После этого были обновлены драйверы видеокарты. Решилась ли проблема? Да хуй там плавал. Не решилась.
На этом этапе Влад (второй человек в этой истории и главный герой процесса поиска проблемы) предложил посмотреть на логи, которые остаются после падения игры и выяснить проблему этим способом.
За сегодняшний день CS2 упала с ошибкой access_violation 17 раз. 17 раз, Карл.
Довольно забавным оказался и тот факт, что после прочтения что стандартного, что расширенного через параметр запуска -debug лога ситуация для Влада как для программиста яснее не стала. После таких неутешительных результатов мы пошли тестировать память моего ПК.
Часть вторая - тестируем память
После того как мы пососали хуй в логах, был выбран самый верный вариант, после которого станет возможным исключить ошибку на стороне железа - тест памяти.
Его мы провели на 60%, и не выявив никаких ошибок, прекратили. Также до нас дошло, что если бы проблема и вправду была в памяти, то падала бы не только CS, но и что-нибудь еще, включая BSOD в самой системе.
Часть третья - делаем работу QA Valve за них
Вернувшись назад в систему, мы решили запустить игру сразу, не открывая дополнительно никаких других приложений в фоне (ни Discord, ни Spotify, ни Chrome). Античит Riot Vanguard также предварительно закрыли.
ИГРА УПАЛА СНОВА. В этот момент я уже потерял всякую надежду, но как тотальный last resort мы решили проверить несколько теорий, связанных с запуском локальных серверов и серверов сообщества.
В трех случаях из четырех (сервер сообщества, локальный сервер на моей стороне, локальный сервер на моей стороне с подключением Влада) игра не упала. Крашнуть ее удалось лишь один раз, запустив локальный сервер на комьютере Влада, причем вылет произошел с той же причиной - access_violation. Впрочем, это было списано на случайное совпадение.
После этих нехитрых манипуляций мы пришли к выводу, что падения игры на конкретно моем компьютере (сборка полностью AMD + 32гб памяти) вызваны на стороне официальных серверов Valve. Если бы не одно но...
За этот день нам удалось запустить матчмейкинг на официальных серверах достаточное количество раз, чтобы поставить предположение о крашах на стороне сервера под сомнение. Впрочем, удачные запуски матчмейкинга омрачались падением игры через час-полтора после запуска нового лобби.
Все логи лежат в облаке для изучения, если кому-то хочется покопаться в этом говне - https://drive.google.com/drive/folders/1cER8odvnNuOAUksmkGSdd-hxlw2tlqjI?usp=sharing