Креш (англ. crash) або відмова системи (також аварійна відмова[1][2], фатальний збій[2], аварія[3][2], розм. крах, падіння) — серйозний баг, помилка у програмі, що викликає аварійне завершення програми або операційної системи, коли вона перестає функціонувати належним чином.

Thumb
Відмова системи у iMac
Thumb
Відмова системи у Windows, так званий синій екран смерті

Часто помилка такого роду призводить до виходу з ураженої програми. Програма може не відповідати, доки служба звітності аварії не повідомить подробиці відмови. Якщо програма є критичною частиною операційної системи, вся система може аварійно завершити роботу або зависнути, що часто призводить до поломки ядра або фатальної системної помилки.

Більшість відмов з'являється внаслідок виконання недопустимих машинних інструкцій. Наприклад, коли певний об'єкт був видалений (або переміщений), а значення вказівника не було змінено на нульове, тому він все ще вказує на область пам'яті, де знаходився цей об'єкт і може мати до нього доступ; або в результаті переповнення буфера перезаписуються інші дані що знаходяться поруч з буфером, які може бути пошкоджено[4] а інтерпретація інформації як виконуючого коду порушена[5]. Подібні помилки призводять до порушення безпеки доступу до пам'яті, та виконання обробки винятків.

Початкова помилка програмного забезпечення, що викликала події, що привели до відмови системи, вважається причиною збою та виявляється в процесі налагодження програми. Загалом, знайти початкову помилку буває досить важко, вона може здаватися нічим не пов'язаною зі збоєм, впливаючи на місце крашу не безпосередньо а через серію взаємопов'язаних подій.

Відмова програми

Thumb
Крах програми в аеропорті у результаті помилки сегментації

Програмний додаток зазвичай завершує свою роботу у випадку виконання операції, що не дозволена операційною системою. Тому після такої спроби система запускає в додатку обробку винятків або сигнал.

Unix додатки традиційно відповідають на сигнал за допомогою дампа пам'яті[en]. Більшість Windows та Unix додатків з графічним інтерфейсом користувача відповідають відображаючи діалогове вікно з можливістю підключення налагоджувача, якщо він встановлений.

Деякі додатки намагаються відновитись після помилки та продовжити роботу замість повного завершення.

Типові помилки, що призводять до збою в додатках, містять:

Відмова Web-сервера

Додаток, запущений у вебсервері, може відмовити, що викличе повну недієздатність сайту або роботу в режимі сповіщення повідомлення про помилку.

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

Наслідки аварій в безпеці даних

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

Див. також

Примітки

Література

Посилання

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.