Jump to content

Общая ошибка защиты

(Перенаправлено из «Ошибка памяти »)
Сообщение об ошибке в белом диалоговом окне с надписью «НЕВОССТАНОВИМАЯ ОШИБКА ПРИЛОЖЕНИЯ: завершение текущего приложения».
Общее сообщение об ошибке общей защиты (неустранимая ошибка приложения) в Windows 3.0.
Сообщение об общей ошибке защиты в Windows 3.1x
Пример сообщения об ошибке общей защиты в Windows 3.1x

Общая ошибка защиты ( GPF ) в x86 архитектуре набора команд (ISA) — это ошибка (тип прерывания ), инициируемая определенными ISA механизмами защиты в ответ на нарушение доступа, вызванное каким-либо работающим кодом либо в ядре , либо в пользовательская программа. Этот механизм впервые описан в руководствах и технических описаниях Intel для процессора Intel 80286 , который был представлен в 1983 году; он также описан в разделе 9.8.13 справочного руководства для программиста Intel 80386 от 1986 года. Общий сбой защиты реализуется как прерывание ( вектор номер 13 (0Dh)). Некоторые операционные системы могут также классифицировать некоторые исключения, не связанные с нарушениями доступа, такие как исключения недопустимых кодов операций , как общие ошибки защиты, даже если они не имеют ничего общего с защитой памяти. Если ЦП обнаруживает нарушение защиты, он прекращает выполнение кода и отправляет прерывание GPF. В большинстве случаев операционная система удаляет завершившийся сбой процесс из очереди выполнения, сигнализирует пользователю и продолжает выполнение других процессов. Однако если операционной системе не удается обнаружить общую ошибку защиты, т. е. происходит другое нарушение защиты до того, как операционная система возвращается из предыдущего прерывания GPF, ЦП сигнализирует об ошибке. двойная ошибка , остановка операционной системы. Если произойдет еще один сбой ( тройной сбой ), ЦП не сможет восстановиться; начиная с 80286, ЦП переходит в специальное состояние остановки, называемое «Выключение», выйти из которого можно только посредством аппаратного сброса . IBM PC AT , первая ПК-совместимая система, содержащая 80286, имеет аппаратное обеспечение, которое определяет состояние выключения и автоматически перезагружает процессор, когда оно происходит. Все потомки ПК АТ делают то же самое, поэтому в ПК тройная ошибка вызывает немедленный сброс системы.

Специфическое поведение

[ редактировать ]

Microsoft Windows

[ редактировать ]

В Microsoft Windows общая ошибка защиты отображается на разных языках в зависимости от версии продукта:

Операционная система Сообщение об ошибке Примечания
Windows 3.0 НЕУСТРАНИМАЯ ОШИБКА ПРИЛОЖЕНИЯ

Завершение текущего приложения.

[ 1 ]
Windows 3.1x [Имя программы] вызвало общую ошибку защиты в модуле [имя модуля] по [адрес памяти]. Это сообщение об ошибке (с тем же форматом оформления) в редких случаях может появляться и в более поздних версиях (95, 98 и Me). Текст этой ошибки также появляется в 95, 98 и Me, если нажать кнопку «Подробнее» или нажать Alt+D, с добавлением регистров, байтов в CS:EIP и дампа стека.
Windows 95
Windows 98
Windows НТ 4.0
Эта программа выполнила недопустимую операцию и будет закрыта.

Если проблема не устранена, обратитесь к поставщику программы.

Иногда в ошибке также говорится: «Закройте все программы, а затем перезагрузите компьютер», особенно если проблема более серьезная или система нестабильна, а обратный адрес указывает на DLL Windows или другие системные процессы. Если установлен отладчик, между кнопками «Закрыть» и «Подробности» также имеется кнопка «Отладка».
Windows 2000 [Название программы] вызвало ошибки и будет закрыто Windows. Вам нужно будет перезапустить программу.

Создается журнал ошибок.

Windows Me [Имя программы] вызвало ошибку в [Имя модуля]. [Название программы] закроется.

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

Если установлен отладчик, под кнопкой «Закрыть» также имеется кнопка «Отладка». Подробности по-прежнему можно просмотреть, нажав Alt+D и через файл Faultlog.txt.
Windows ХР
Windows Сервер 2003
Windows Сервер 2003 Р2
В [Название программы] возникла проблема, и ее необходимо закрыть. Приносим извинения за неудобства.

Если вы были заняты чем-то, информация, над которой вы работали, могла быть потеряна.

[...]

Для получения дополнительной информации об этой ошибке нажмите здесь .

В сообщении об ошибке также есть возможность отправить сведения об ошибке в Microsoft для анализа.
Windows Vista и более поздние версии, за исключением Windows 10
Windows Server 2008 и более поздние версии
[Название программы] перестало работать.

Проблема привела к тому, что программа перестала работать корректно. Windows закроет программу и уведомит вас, если решение доступно.

По умолчанию Windows отправляет сведения об ошибках в Microsoft для анализа, но систему можно настроить так, чтобы она либо не отправляла информацию, либо каждый раз спрашивала пользователя, что делать.
Windows 10
Windows 11
Windows отправит сведения об ошибке в Microsoft для анализа. Пользователи с бизнес-лицензией могут настроить объем отправляемой информации.

В Windows 95, 98 и Me появляется альтернативное сообщение об ошибке, которое чаще всего используется в программах Windows 3.x: «В вашей программе произошла ошибка. Чтобы продолжить работу, нажмите «Игнорировать» и сохраните свою работу в новом файле. выйдите из этой программы, нажмите «Закрыть». Вы потеряете информацию, которую вы ввели с момента последнего сохранения». Нажатие «Закрыть» приводит к появлению одного из приведенных выше сообщений об ошибке, в зависимости от версии Windows. «Игнорировать» тоже иногда делает то же самое.

В Linux и других Unix об ошибках сообщается отдельно (например, ошибка сегментации для ошибок памяти).

Ошибки памяти

[ редактировать ]

При ошибках памяти неисправная программа обращается к памяти , к которой ей не следует обращаться. Примеры включают в себя:

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

Что касается архитектуры x86, общие ошибки защиты специфичны для защиты на основе сегментации, когда речь идет о доступе к памяти. Однако общие ошибки защиты по-прежнему используются для сообщения о других нарушениях защиты (помимо нарушений доступа к памяти) при использовании подкачки, таких как использование инструкций, недоступных с текущего уровня привилегий (CPL).

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

Ошибки привилегий

[ редактировать ]

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

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

Технические причины неисправностей

[ редактировать ]

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

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

Превышены ограничения сегмента

[ редактировать ]

Лимиты сегмента могут быть превышены:

Разрешения сегмента нарушены

[ редактировать ]

Разрешения сегмента могут быть нарушены:

  • переход к неисполняемым сегментам
  • запись в сегменты кода или сегменты только для чтения
  • чтение сегментов, предназначенных только для выполнения

Сегменты загружены незаконно

[ редактировать ]

Это может произойти, когда:

  • сегмент стека (SS) загружается с селектором сегмента для сегмента только для чтения, исполняемого файла, нулевого сегмента или сегмента с привилегией дескриптора, не соответствующей текущей привилегии в CS
  • сегмент кода (CS), загруженный селектором сегмента для сегмента данных, системы или нулевого сегмента
  • SS, DS, ES, FS или GS — это сегменты, в которые загружен селектор сегментов для системного сегмента.
  • SS, DS, ES, FS или GS — это сегменты, загруженные с помощью селектора сегментов для сегмента кода, предназначенного только для выполнения.
  • доступ к памяти с использованием регистров DS, ES, FS или GS, когда они содержат нулевой селектор

Переключение

[ редактировать ]

Сбои в структуре сегмента состояния задачи (TSS) могут возникнуть в следующих случаях:

  • переключение на занятую задачу во время вызова или команды перехода
  • переключение на доступную задачу во время команды возврата прерывания (IRET)
  • использование селектора сегмента на переключателе, указывающем на дескриптор TSS в LDT [ нужны разъяснения ]

Разнообразный

[ редактировать ]

Другими причинами общих неисправностей защиты являются:

  • попытка доступа к обработчику прерываний/исключений из виртуального режима 8086 дескриптора сегмента кода (DPL) обработчика , когда уровень привилегий больше нуля
  • попытка записать единицу в зарезервированные биты CR4
  • попытка выполнить привилегированные инструкции, когда текущий уровень привилегий (CPL) не равен нулю
  • попытка выполнить одну инструкцию длиной более 15 байт (возможно, путем добавления к инструкции лишних префиксов) [ 2 ]
  • запись в зарезервированный бит в MSR инструкции
  • доступ к воротам, содержащим селектор нулевого сегмента
  • выполнение программного прерывания, когда CPL больше, чем DPL, установленный для шлюза прерывания
  • селектор сегмента в шлюзе вызова, прерывания или ловушки не указывает на сегмент кода
  • нарушение правил привилегий
  • включение пейджинга при отключении защиты
  • ссылка на таблицу дескрипторов прерываний после прерывания или исключения, которое не является прерыванием, ловушкой или шлюзом задачи
  • Устаревший SSE : операнд памяти не выровнен по 16 байтам.
  1. ^ «Устранение неполадок «Неустранимой ошибки приложения» в DrWatson» . Поддерживать . Майкрософт . 27 февраля 2014 г.
  2. ^ «Страница 223» . Проверено 24 сентября 2023 г.

Дальнейшее чтение

[ редактировать ]
  • Руководство разработчика программного обеспечения для архитектуры Intel – Том 3: Системное программирование
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 245a66f973bd965f22c595dadee5d8b1__1716836040
URL1:https://arc.ask3.ru/arc/aa/24/b1/245a66f973bd965f22c595dadee5d8b1.html
Заголовок, (Title) документа по адресу, URL1:
General protection fault - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)