В отчёте о сбое рядом с кодом исключения 0xc0000005 часто стоит «смещение» и длинное шестнадцатеричное число вроде 0x0000000000000000 или 0x00007FF6A12B3C40. Люди ищут это число как будто это отдельная ошибка. Это не так. Смещение - адрес или сдвиг внутри модуля, где процесс споткнулся. Само по себе оно почти никого ни в чём не обвиняет.

Почему это происходит

Программа полезла не в свою память. 0xc0000005 - STATUS_ACCESS_VIOLATION. Параметры исключения говорят, было ли это чтение, запись или выполнение, и по какому адресу. Смещение в окне «Приложение не работает» обычно показывает, где внутри exe или dll произошёл сбой. Два человека с одним смещением и разными программами не лечатся одним файлом.

Нулевой адрес. Смещение 0x00000000 или очень маленькое число часто значит: программа ждала указатель, получила пусто и всё равно пошла читать. Это классика бага в самом приложении, не «вирус смещения». Переустановка этой программы логичнее, чем твик всей Windows.

Адрес внутри чужой dll. Faulting module - ntdll.dll, KERNELBASE.dll, видеодрайвер, оверлей. Тогда смещение имеет смысл только вместе с именем модуля и версией файла. Без модуля число бесполезно: в каждой сборке функции лежат по-разному.

Железо портит биты. Реже смещение «гуляет» от запуска к запуску, падают разные exe. Тогда смотрят память, не конкретный офсет. Одинаковое смещение при каждом старте одной игры - скорее баг игры. Разные смещения каждый день - скорее планка или перегрев.

Не существует базы «смещение 0x13f значит заменить термопасту». Такие таблицы на случайных сайтах сочиняют, чтобы продать утилиту. Официальной расшифровки смещения как диагноза нет и быть не может: адрес зависит от версии модуля и от того, куда система загрузила его сегодня.

Как читать смещение пошагово

  1. Выпишите тройку, не одно число. Код 0xc0000005, имя модуля (Faulting application и Faulting module name), смещение. В «Просмотре событий» это поля журнала «Приложение». Без модуля смещение можно выбросить.
  2. Поймите, одно ли приложение. Падает только game.exe с одним и тем же модулем - чините игру: переустановка, проверка файлов лаунчера, отключение оверлея. Падают Word, браузер и игра - забудьте смещение, проверяйте память и диск.
  3. Не ищите «лечение смещения 0x...». Выдача будет полной рекламных «fix tools». Они не знают ваш модуль. Скачивание такого лечилки чаще даёт уже настоящий вренос, а 0xc0000005 остаётся.
  4. Сверьте версию модуля, если умеете. Свойства файла dll, поле «версия». Совет с форума 2018 года про то же смещение в другой версии - про другую программу. Даже один и тот же Word после обновления смещает функции.
  5. Прогоните память при хаотичных смещениях. mdsched.exe. Если тест чистый, а сыпется один exe - вернитесь к переустановке программы. Если тест грязный - планка, не «патч смещения».
  6. Не правьте реестр по гайдам «исправить 0xc0000005 offset». Часть из них отключает DEP глобально или подменяет ключи совместимости для всех приложений. Это ослабляет защиту и ломает другие программы. Исключение DEP - точечно и только для понятного старого легального инструмента.
  7. Не подменяйте ntdll.dll и другие системные библиотеки файлами «из рабочей Windows». Подпись, сборка, зависимости. Система после этого может не загрузиться. Для системных файлов есть sfc /scannow, не копирование из соседнего системника.

Если в отчёте смещение пустое или нули, а модуль - сам exe, почти всегда виноват установщик или баг автора. Писать разработчику с тройкой полей полезнее, чем менять Windows.

Отдельно про нули: люди ищут «смещение 0x00000000» как будто это редкий код. Это почти всегда пустой указатель, не секретный диагноз. Лечение одно - чинить или менять программу, которая не проверила указатель. Переустановка Windows из-за нулевого смещения в одном лаунчере несоразмерна.

Часто задаваемые вопросы

Смещение - это отдельный код ошибки? Нет. Это адрес внутри модуля. Код ошибки здесь один: 0xc0000005.

Почему у соседа то же смещение и «помогло то-то»? Совпадение чисел при разных версиях ничего не значит. Сосед мог починить случайно: переустановил игру, сменилась dll.

Нужно ли присылать мастеру только смещение? Нет. Нужны имя exe, модуль, полный текст события и когда началось.

0xc0000005 со смещением - это синий экран? Обычно нет. Это вылет программы. Синий экран несёт стоп-код с именем вроде PAGE_FAULT_IN_NONPAGED_AREA.

Смотрите также