Ошибка 0xc000006b при запуске windows

STOP 0x0000006B

Статья дополняет серию материалов, освещающих методы устранения проблем, приводящих к возникновению критической системной ошибки (BSOD). В материалах раздела рассматриваются ситуации, с которыми я сталкивался лично (в своей практике) и с которыми мне удалось разобраться. STOP-ошибка (STOP error), контроль дефекта (BugCheck) или в простонародье BSOD — фатальный системный сбой операционной системы Windows, являющийся причиной полного прекращения функционирования основных компонентов ядра операционной системы, влекущий за собой потерю динамических не сохраненных пользовательских данных и приводящий к появлению на экране монитора синего экрана смерти (BSOD). Числовое обозначение STOP-ошибки — идентификатор, характеризующий «природу» фатальной системной ошибки, используется при диагностике причины возникшей неполадки. В данной статье речь пойдет о сбое с идентификатором STOP 0000006B.

Теория

STOP 0x0000006B имеет собственную специфику и возникает на ранних стадиях загрузки операционной системы. В момент возникновения сбоя пользователь наблюдает на экране следующее сообщение об фатальной системной ошибке:

В общем случае формат ошибки следующий:

Значение Описание
0xAAAAAAAA Первый параметр. Статус завершения операции.
0xBBBBBBBB Второй параметр. Неофициально — указатель на этап загрузки/инициализации.
0xCCCCCCCC Третий параметр. Зарезервировано.
0xDDDDDDDD Четвертый параметр. Зарезервировано.

Вообще загрузка операционной системы представляет собой достаточно сложную процедуру, которая состоит из множества стадий. На одной из начальных стадий загружается непосредственно ядро операционной системы, которое начинает проходить этапы инициализации/создания собственных структур и создания/запуска основных системных процессов, составляющих исполнительную подсистему ядра. Символическое имя ошибки PROCESS1_INITIALIZATION_FAILED (ОШИБКА_ИНИЦИАЛИЗАЦИИ_ПРОЦЕССА1), по идее разработчиков, должно сообщать нам о том, что ошибка STOP 0000006B возникает в ситуации невозможности загрузки/инициализации некоего критичного для загрузки операционной системы модуля. Что означает имя PROCESS1 , это процесс, загружаемый на стадии 1 или процесс с номером (идентификатором) 1? И если следовать подобной логике, то зададимся вопросом: процесс №1 это случайно не процесс System ? Ведь если брать во внимание высказывание главного разработчика Microsoft Раймонда Чена (Raymond Chen):

..в то время как процесс System имеет PID =4, то получается, что PROCESS1 и есть System ? Далее, опираясь на данные, которые можно получить из исходных кодов ядра, можно утверждать, что на определенном этапе стартует Диспетчер процессов . Диспетчер процессов предназначается для управления процессами в ОС и одной из его задач является загрузка и подготовка (экспорт) функций DLL. На одном из ранних этапов загрузки, при подготовке процесса System, происходит связывание функции основных системных DLL ( ntdll.dll и других). Как раз на этом этапе работы и может появляться рассматриваемая нами ошибка: либо по причине повреждения одной из критичных системных DLL, либо из-за разных версий взаимосвязанных DLL, либо по причине несоответствие подписи (подделки) кода некоторых DLL (защита которых реализована в специальном коде ядра операционной системы).

Второй параметр (BugCheckParameter2)

Все найденные мной точки возникновения критической ошибки STOP 0000006B располагаются в коде ядра операционной системы, размещенного в файле ntoskrnl.exe (либо другом ntkr*.exe в зависимости от аппаратной конфигурации станции). Давайте попробуем разобрать каждую из них подробнее.

Читайте также:  Windows не видит оперативную память amd

Второй параметр =2

Первый найденный фрагмент находится внутри функции PsLocateSystemDlls и выглядит он следующим образом:

Функция PsLocateSystemDll , судя по всему, открывает последовательно все версии библиотеки ntdll.dll (в 64-разрядных системах их несколько) и получает оттуда точки входа функций KiUserApcDispatcher , KiUserExceptionDispatcher , KiUserCallbackDispatcher , RtlRaiseException и некоторых других. Адреса данных процедур необходимы ядру для выполнения основных задач (например, для генерации исключения для процессов пользовательского режима, доставки APC и обратных вызовов графического пользовательского интерфейса win32k.sys ).

Второй параметр =3

Следующий фрагмент был найден внутри функции PspLocateSystemDll :

то есть второй параметр 3! Функция PspLocateSystemDll выполняет инициализацию (заполнение) полей структуры размещаемых в памяти ядра системных библиотек.

Второй параметр =6

Очередной блок размещается внутри функции PspInitializeSystemDlls :

то есть второй параметр 6! Похоже функция PspInitializeSystemDlls производит заполнение (инициализацию) полей структуры экспортируемых библиотекой ntdll.dll функций. Она берет базовый адрес образа ( ImageBase ) каждой доступной в системе версии ntdll.dll и производит разрешение всех экспортируемых функций, а так же производит ряд других манипуляций.

Все параметры =0

И наконец внутри функции Phase1InitializationDiscard имеется такой вот код:

Судя по приведенному блоку кода, непосредственно перед заталкиванием в стек кода ошибки (значение 6Bh ), подготовки четырех параметров перед вызовом функции KeBugCheck не производится. Скорее всего как раз по этой причине, в ряде сбоев, на результирующем синем экране все параметры равны нулю . Как видно из кода, перед возбуждением исключения STOP 0000006B производится проверка результата выполнения функции PsInitSystem . Сама функция фактически представляет собой диспетчер процессов и предназначена для создания структуры процесса, вызывается ядром в ходе инициализации в фазах 0 и 1. Сам останов в этой точке возникает как реакция на нештатное завершение функции PsInitSystem , внутри которой к возникновению ошибки могут приводить следующие события:

  • ошибочное завершение ObCreateObjectTypeEx (Создание объекта в пространстве имен);
  • ошибочное завершение SeRegisterObjectTypeMandatoryPolicy (Регистрация политики доступа к объекту);
  • равенство значений переменных PsPAffinityUpdateLock (?) = PspCidTable (указатель на таблицу описателей, хранящей созданные объекты процессов и нитей);
  • ошибочное завершение ExInitializeResourceLite (инициализация ресурса исполняемой подсистемы);
  • ошибочное завершение PspCreateProcess (Создание процесса);
  • ошибочное завершение ObReferenceObjectByHandle (Поиск объекта по описателю);
  • неправильное значение поля PsInitialSystemProcess +1ECh (глобальная переменная, указатель на структуру EPROCESS для процесса System);
  • ошибочное завершение PsCreateSystemThread (создание потока, запускающийся в режиме ядра, возврат описателя процесса).

Понятное дело, что глубже весь этот кодовый треш никто не собирается тут анализировать, я просто оставил это здесь для того, что бы вы могли проникнуться неопределенностью вместе со мной 🙂

Первый параметр (BugCheckParameter1)

Помимо приведенных выше указателей на этапы (второй параметр BugCheckParameter2 ), в процессе исполнения кода которых произошел сбой, более свободно ориентироваться в причинах проблемы помогает первый параметр. Напомню, что применительно к сбою STOP 0000006B, первый входной параметр ( BugCheckParameter1 ) дает нам статус завершения операции:

Значение первого параметра Символическое имя Описание
0xC0000034 STATUS_OBJECT_NAME_NOT_FOUND Имя объекта не найдено. Проблема часто возникает после сбоя в процессе установки системных обновлений и сообщает о рассинхронизации системных библиотек/драйверов ранних стадий загрузки, в случае когда часть связанных функционалом модулей осталась предыдущих версии, а часть обновилась до последней актуальной. Причиной являются ошибки, возникающие в процессе установки обновления, например пользователь мог жестко прервать процесс, вручную перезагрузившись/отключив питание, не дождавшись завершения установки.
0xC0000020 STATUS_INVALID_FILE_FOR_SECTION Исполняемый образ модуля, участвующего в начальных стадиях загрузки ОС, поврежден, то есть имеет проблемы с одной из секций (в таблице секций). Ошибка может возникать после сбоя в процессе установки обновлений/драйверов в систему, что ведет к повреждению файлов (образов). Так же, ошибка может быть вызвана проблемами загрузки уже существующих драйверов этапа загрузки (BOOT) по множеству причин: поврежденная файловая система, аппаратные проблемы с диском, контроллером.
0xC000012F STATUS_INVALID_IMAGE_NOT_MZ Загрузочный образ не соответствует требуемому формату исполняемых файлов, то есть не содержит сигнатуру MZ в заголовке. Ошибка может возникать после неудачной попытки установки обновлений/драйверов в систему, что влечет за собой повреждение данных. Так же, ошибка может быть вызвана проблемами загрузки уже существующих драйверов этапа загрузки (BOOT) по множеству причин: поврежденная файловая система, аппаратные проблемы с диском, контроллером.
0xC0000102 STATUS_FILE_CORRUPT_ERROR Загрузочный образ поврежден. Ошибка может возникать в следствии ошибки в процессе установки обновлений/драйверов в систему. Так же, ошибка может быть вызвана проблемами загрузки уже существующих драйверов этапа загрузки (BOOT) по множеству причин: поврежденная файловая система, аппаратные проблемы с диском, контроллером.
0xC0000428 STATUS_INVALID_IMAGE_HASH Ошибка контрольной суммы: исполняемый файл, критичный для загрузки ОС, был заменен, его хэш не совпадает с содержащимся в каталоге (.cat). Значение хэша открытого файла отсутствует в записи системного каталога, и файл может быть подделан/поврежден. Обычно это случается при подмене файла ci.dll , ntdll.dll и ряда других.
Читайте также:  Разрешить приложение другому пользователю windows

Общие причины

  • Ошибка обнаружения критичного для загрузки ОС объекта/модуля (драйвера/библиотеки) по причинам: ошибки файловой системы, повреждение носителя информации, .
  • Ошибка инициализации критичного для загрузки ОС объекта/модуля (драйвера/библиотеки): ошибки структуры файла (повреждение данных файла), ошибки файловой системы, повреждение носителя информации, . ;
  • Рассинхронизация (несоответствие) версий ядра (файл(ы) ntoskrnl.exe , ntkrnlmp.exe , ntkrnlpa.exe , ntkrpamp.exe ) и библиотеки ntdll.dll (обычно после обновлений).
  • Иные ошибки, попадающие под общую категорию ошибок инициализации фаз ядра.

Общие варианты решения

В данном заголовке приводятся общие методы восстановления, которые применяются для всех подвидов ошибки STOP 0x0000006B вне зависимости от параметров ошибки ( BugCheckParameter1 , BugCheckParameter2 , BugCheckParameter3 , BugCheckParameter4 ), которые указаны после кода STOP-ошибки в круглых скобках.

Сообщение об ошибке «Stop error code 0x0000006B PROCESS1_INITIALIZATION_FAILED» во время запуска компьютера, работающего под управлением Windows 7 или Windows Server 2008 R2

Не уверены, что решение правильное? Мы добавили эту неполадку к нашей , которую можно провести.

Проблема

Ваш компьютер работает под управлением Windows 7 или Windows Server 2008 R2. Однако он аварийно завершает работу во время запуска перед запросом учетных данных пользователя. Кроме того, появляется такое сообщение о STOP-ошибке:

STOP: 0x0000006B ( Parameter1, Parameter2, Parameter3, Parameter4)
PROCESS1_INITIALIZATION_FAILED

Примечание. Названия четырех параметров в сообщении о STOP-ошибке могут зависеть от конфигурации компьютера.

Причина

Неполадка возникает из-за повреждения файла Bootcat.cache или вследствие изменения его размера после последнего успешного запуска.

Примечание. Файл Bootcat.cache расположен по адресу %SystemRoot%\system32\codeintegrity.

Решение

Чтобы решить эту проблему, установите пакет обновления 1 для Windows 7 и Windows Server 2008 R2. Майкрософт не предоставляет поддерживаемое исправление для этой проблемы. Чтобы получить дополнительные сведения об этом пакете обновления, щелкните номер следующей статьи в базе знаний Майкрософт:

Сведения о пакете обновления 1 для Windows 7 и Windows Server 2008 R2

Временное решение

Чтобы обойти эту неполадку, запустите компьютер с жесткого диска или USB-накопителя с помощью установочного носителя Windows. Удалите файл Bootcat.cache, и перезапустите компьютер.

Статус

Майкрософт подтвердила наличие этой проблемы в ее продуктах, перечисленных в разделе «Применимость».

Дополнительная информация

Чтобы получить дополнительные сведения о терминологии обновления программного обеспечения, щелкните номер следующей статьи в базе знаний Майкрософт:

Описание стандартной терминологии, используемой для описания обновлений программного обеспечения Майкрософт

Ошибка при запуске приложения 0xc0000006

Описание ошибки приложения 0xc0000006

Эта ошибка появляется при запуске какого либо приложения.

Читайте также:  Windows 10 для ноутбука быстрая загрузка

Причины ошибки 0xc0000006

Причины ошибки 0xc000006 разнообразны, но все мнения в сети склоняются к двум вероятным причинам: блокировка доступа к исполняемому файлу или повреждению какого либо системного файла. В принципе, устранить эту ошибку не сложно, попробовав описанные ниже методы, но попотеть придется.

Вероятная причина №1 — Антивирус

Ни для кого не секрет, что практически все игры в которые мы играем, и программы которыми мы ежедневно пользуемся — не лицензионные. Мы не будем говорить, что играть в такие игры и пользоваться не лицензионным софтом плохо. Лишь вкратце опишем, что значит «не лицензионные».

Как правило — не лицензионное ПО взломано. Возможно в таком ПО используются модули или алгоритмы обхода защиты, которые может и не способны навредить системе, но антивирус может подстраховаться и заблокировать какие-то исполняемые *.exe файлы. Все ради Вашей безопасности!

Поэтому напрашивается вопрос: а почему бы антивирусу не сделать этого?

Если это так, то нам остается просмотреть список заблокированных файлов. Если наше приложение в нем присутствует, то удалить его из этого списка и добавить в доверенные.

Если приложения в списке заблокированных нет, тогда нужно просто его добавить в исключения (доверенные) антивируса.

В последнее время, антивирусов стало много, и мы не сможем рассказать как в каждом проделать эти действия. Чуть чуть усилий и интернета, и вы точно разберетесь.

Вероятная причина №2 — вирус

Вторая причина прямо противоположна первой. Вирусы и Malware в последнее время обрели невиданную мощь. Особенно Malware. Это такое ПО которое может творить все что угодно под самым носом у антивируса — устанавливать ненужные программы, изменять ярлыки браузеров, дописывая в них ссылки на непонятные страницы, подменять DNS-сервера в роутере и много чего еще.

Но тут можно и побороться за чистоту системы. Две достаточно эффективных программки, которыми нужно «пройтись» по системе, хорошо справятся с не званными гостями.

MalwareBytes Antimalware — название говорит само за себя.

Dr.Web CureIT! — ветеран на страже компьютерной безопасности.

Скачайте их и запустите. Ни первая ни вторая не вызовут вопросов, даже у начинающего пользователя. А эффект от этих программ видно практически сразу.

Единственное НО. Скачивайте программы только с официальных сайтов или по ссылкам выше. Ни в коем случае не переходите ни на какие файлообменники.

Вероятная причина №3 — поврежденные файлы системы

Еще одной распространенной причиной, является повреждение или подмена системных файлов (в продолжение о вирусах).

Но как выяснить какой именно файл поврежден и где его взять?

А нам это знать и не обязательно. Достаточно в командной строке запущенной от имени «Администратора», выполнить следующую команду:

sfc /scannow

А делать это так — для Windows 7:

Нажмите кнопку , и начните писать cmd . Когда в меню «Пуск» отобразится нужное приложение, щелкните правой кнопкой мыши на нем и запустите от имени «Администратора».

затем введите sfc /scannow и нажмите .

А Windows XP — если она у вас еще жива:

=> Программы => Стандартные => Командная строка

А вот и результат работы программы sfc:

Вообще, исходя из опыта, команда sfc, помогает в большом количестве ситуаций — не запускается то или иное приложение, отказ подсистемы печати, сбой после неудачного обновления и сотни других проблем, решаются при помощи этой утилитки.

Если у Вас есть чем поделиться по поводу ошибки запуска приложения 0xc0000006, пишите в комментарии.

Оцените статью
Adblock
detector