Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Паника ядра отображается на iMac . Это наиболее распространенная форма сбоя операционной системы в Unix-подобных системах.

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

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

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

Сбой приложения [ править ]

Дисплей в аэропорту Франкфурта, на котором запущена программа под Windows XP, которая вышла из строя из-за нарушения доступа для чтения из памяти

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

Приложение также может содержать код для аварийного завершения [a] после обнаружения серьезной ошибки.

Типичные ошибки, приводящие к сбою приложения, включают:

  • попытка чтения или записи памяти, которая не выделена для чтения или записи этим приложением ( ошибка сегментации ) или специфична для x86 ( общая ошибка защиты )
  • попытка выполнить привилегированные или недопустимые инструкции
  • пытается выполнять операции ввода-вывода на аппаратных устройствах, к которым у него нет разрешения на доступ
  • передача недопустимых аргументов системным вызовам
  • попытка доступа к другим системным ресурсам, к которым у приложения нет разрешения на доступ
  • попытки выполнить машинные инструкции с неверными аргументами (в зависимости от архитектуры ЦП): деление на ноль , операции с денормальным числом или значениями NaN (не числом), доступ к памяти по невыровненным адресам и т. д.

Вылет на рабочий стол [ править ]

Говорят, что «сбой на рабочий стол» происходит, когда программа (обычно видеоигра ) неожиданно завершает работу, внезапно возвращая пользователя на рабочий стол . Обычно этот термин применяется только к сбоям, при которых ошибка не отображается, поэтому все, что пользователь видит в результате сбоя, - это рабочий стол. Часто нет очевидного действия, которое вызывает сбой на рабочем столе. Во время нормальной работы программа может зависнуть на более короткий период времени, а затем закрыться сама. Также во время нормальной работы программа может отображать черный экран и многократно воспроизводить последние несколько секунд звука (в зависимости от размера буфера данных.), который воспроизводился до того, как он вылетел на рабочий стол. В других случаях может показаться, что это вызвано определенным действием, например загрузкой области.

Ошибки, связанные со сбоями на рабочем столе, считаются особенно проблемными для пользователей. Поскольку они часто не отображают сообщения об ошибке, может быть очень сложно отследить источник проблемы, особенно если время, когда они возникают, и действия, выполняемые непосредственно перед аварией, не имеют какой-либо закономерности или общего основания. Один из способов отследить источник проблемы для игр - запустить их в оконном режиме. В Windows Vista есть функция, которая может помочь отследить причину проблемы CTD, когда она возникает в любой программе. [ требуется пояснение ] Windows XP также включает аналогичную функцию. [ требуется разъяснение ]

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

Сбой веб-сервера [ править ]

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

Например: если сайт использует базу данных SQL (например, MySQL ) для сценария (например, PHP ) и этот сервер базы данных SQL дает сбой, то PHP отобразит ошибку подключения.

Сбои операционной системы [ править ]

Синий экран смерти , как показано в Windows XP, Vista и 7
Паника ядра, отображаемая в OS X Mountain Lion

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

Современные многозадачные операционные системы, такие как Linux и macOS , обычно остаются невредимыми при сбое прикладной программы.

Некоторые операционные системы, например z / OS , имеют средства обеспечения надежности, доступности и удобства обслуживания (RAS), и ОС может восстанавливаться после сбоя критического компонента, будь то аппаратный сбой, например, неисправимая ошибка ECC, или сбой программного обеспечения. , например, ссылка на неназначенную страницу.

Последствия сбоев для безопасности и конфиденциальности [ править ]

В зависимости от приложения сбой может содержать конфиденциальную и личную информацию пользователя. [1] Более того, многие программные ошибки, вызывающие сбои, также могут быть использованы для выполнения произвольного кода и других типов повышения привилегий . [2] [3] Например, переполнение буфера стека может перезаписать адрес возврата подпрограммы недопустимым значением, что вызовет, например, ошибку сегментации при возврате подпрограммы. Однако, если эксплойт перезаписывает адрес возврата допустимым значением, код в этом адресе будет выполнен.

Воспроизведение сбоев [ править ]

Когда сбои собираются в полевых условиях с помощью репортера сбоев , следующий шаг для разработчиков - иметь возможность воспроизвести их локально. Для этого существует несколько методов: STAR использует символическое выполнение, [4] MuCrash изменяет тестовый код приложения, в котором произошел сбой, [5] и EvoCrash выполняет эволюционный поиск. [6]

См. Также [ править ]

  • Синий экран смерти
  • Программное обеспечение только для сбоев
  • Потери данных
  • Гуру Медитация
  • Повреждение памяти
  • Перезагрузить
  • Безопасный режим
  • SystemRescueCD
  • Неопределенное поведение

Заметки [ править ]

  1. ^ В OS / 360 и последующих версиях приложение обычно используетмакрос ABEND с кодом завершения пользователя.

Ссылки [ править ]

  1. ^ Сатват, Киаваш; Саксена, Нитеш (2018). «Конфиденциальность при сбоях: вскрытие утечек отчетов о сбоях в веб-браузере». arXiv : 1808.01718 . Bibcode : 2018arXiv180801718S . Цитировать журнал требует |journal=( помощь )
  2. ^ «Анализируйте сбои, чтобы найти уязвимости в безопасности в ваших приложениях» . Msdn.microsoft.com. 26 апреля 2007 . Проверено 26 июня 2014 .
  3. ^ «Джесси Рудерман» Ошибки безопасности памяти в коде C ++ » . Squarefree.com. 1 ноября 2006 . Проверено 26 июня 2014 .
  4. ^ Чен, Нин; Ким, Сунгхун (2015). «STAR: автоматическое воспроизведение сбоев на основе стека с помощью символьного исполнения». IEEE Transactions по разработке программного обеспечения . 41 (2): 198–220. DOI : 10.1109 / TSE.2014.2363469 . ISSN 0098-5589 . S2CID 6299263 .  
  5. ^ Сюань, Цзифэн; Се, Сяоюань; Монперрус, Мартин (2015). «Воспроизведение сбоев с помощью мутации тестовых примеров: пусть существующие тестовые примеры помогут» . Материалы 10-го совместного совещания по основам программной инженерии - ESEC / FSE 2015 (PDF) . С. 910–913. DOI : 10.1145 / 2786805.2803206 . ISBN  9781450336758. S2CID  10358523 .
  6. ^ Солтани, Можан; Паничелла, Аннибале; ван Дерсен, Ари (2017). «Управляемый генетический алгоритм для автоматического воспроизведения аварий». 2017 39-я Международная конференция по программной инженерии IEEE / ACM (ICSE) . С. 209–220. DOI : 10.1109 / ICSE.2017.27 . ISBN 978-1-5386-3868-2.

Внешние ссылки [ править ]

  • Сбор деталей после сбоя компьютера