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 г. .

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