Сбой (вычисления) - Crash (computing)

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

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

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

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

Вылетает приложение

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

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

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

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

Вылет на рабочий стол

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

Ошибки, связанные со сбоями на рабочем столе, считаются особенно проблемными для пользователей. Поскольку они часто не отображают сообщений об ошибках, может быть очень сложно отследить источник проблемы, особенно если время, когда они возникают, и действия, выполняемые непосредственно перед аварией, не имеют какой-либо закономерности или общего основания. Один из способов отследить источник проблемы для игр - запустить их в оконном режиме. Виндоус виста имеет функцию, которая может помочь отследить причину проблемы 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]

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

Рекомендации

  1. ^ Сатват, Киаваш; Саксена, Нитеш (2018). «Конфиденциальность при сбоях: вскрытие утекших отчетов о сбоях веб-браузера». arXiv:1808.01718. Bibcode:2018arXiv180801718S. Цитировать журнал требует | журнал = (помощь)
  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. Дои:10.1109 / TSE.2014.2363469. ISSN  0098-5589. S2CID  6299263.
  5. ^ Сюань, Цзифэн; Се, Сяоюань; Монперрус, Мартин (2015). «Воспроизведение сбоев с помощью мутации тестовых примеров: пусть существующие тестовые примеры помогут». Труды 10-го совместного совещания по основам программной инженерии - ESEC / FSE 2015 (PDF). С. 910–913. Дои:10.1145/2786805.2803206. ISBN  9781450336758. S2CID  10358523.
  6. ^ Солтани, Можан; Паничелла, Аннибале; ван Дерсен, Ари (2017). «Управляемый генетический алгоритм для автоматического воспроизведения аварий». 2017 39-я Международная конференция по программной инженерии IEEE / ACM (ICSE). С. 209–220. Дои:10.1109 / ICSE.2017.27. ISBN  978-1-5386-3868-2.

внешняя ссылка