stringtranslate.com

Авария (вычисления)

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

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

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

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

Сбои приложения

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

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

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

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

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

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

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

Ненормальный конец

Ненормальное завершение или ABEND — это ненормальное завершение работы программного обеспечения или сбой программы. Ошибки или сбои в сетевой операционной системе Novell NetWare обычно называются ABEND. В Интернете возникли сообщества администраторов NetWare , такие как abend.org.

Это использование происходит от макроса ABEND в операционных системах IBM OS/360 , ..., z/OS . Обычно пишется с заглавной буквы, но может отображаться как «abend». Некоторые распространенные коды ABEND — это System ABEND 0C7 (исключение данных) и System ABEND 0CB ( деление на ноль ). [1] [2] [3] Abends могут быть «мягкими» (допускающими автоматическое восстановление) или «жесткими» (прекращающими действие). [4] В шутку утверждается, что этот термин произошел от немецкого слова «Abend», означающего «вечер». [5]

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

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

Воспроизведение аварии

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

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

Примечания

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

Ссылки

  1. ^ "ABEND" (PDF) . Выпуск ОС 21 - Операционная система System/360 - Службы супервизора и макроинструкции (PDF) (Восьмое изд.). IBM . Сентябрь 1974 г. С. 97–99. GC28-6646-7 . Получено 8 июля 2023 г. .
  2. ^ "0Cx - z/OS MVS системные коды". IBM.
  3. ^ Список кодов ABEND Архивировано 16.09.2018 в Wayback Machine на madisoncollege.edu
  4. ^ Парциале, Лидия (2008). z/VM и Linux Operations для z/OS System Programmers. IBM Redbooks. ISBN 9780738431598.страница 352
  5. ^ "Abend" Архивировано 29 сентября 2011 г. на Wayback Machine на dictionary.die.net
  6. ^ Сатват, Киаваш; Саксена, Нитеш (2018). «Крах конфиденциальности: вскрытие утекших отчетов о сбоях веб-браузера». arXiv : 1808.01718 [cs.CR].
  7. ^ «Анализ сбоев для поиска уязвимостей безопасности в ваших приложениях». Msdn.microsoft.com. 26 апреля 2007 г. Архивировано из оригинала 11 декабря 2011 г. Получено 26 июня 2014 г.
  8. ^ "Джесси Рудерман » Ошибки безопасности памяти в коде C++". Squarefree.com. 1 ноября 2006 г. Архивировано из оригинала 11 декабря 2013 г. Получено 26 июня 2014 г.
  9. ^ Чен, Нин; Ким, Сунхун (2015). «STAR: автоматическое воспроизведение сбоев на основе трассировки стека с помощью символического выполнения». Труды IEEE по программной инженерии . 41 (2): 198–220. doi :10.1109/TSE.2014.2363469. ISSN  0098-5589. S2CID  6299263.
  10. ^ Солтани, Можан; Паничелла, Аннибале; ван Дёрсен, Ари (2017). «Управляемый генетический алгоритм для автоматизированного воспроизведения сбоев». 2017 IEEE/ACM 39-я Международная конференция по программной инженерии (ICSE). стр. 209–220. doi :10.1109/ICSE.2017.27. ISBN 978-1-5386-3868-2. S2CID  199514177. Архивировано из оригинала 25 января 2022 г. . Получено 21 декабря 2020 г. .

Внешние ссылки