Mis on ebanormaalne lõpp?

Ebanormaalne lõpp on toimiva arvutiprogrammi või rakenduse järsk ja ootamatu lõpetamine. Selle nimi tuleneb algselt vanemast IBM 360 operatsioonisüsteemist, mis märkis selliseid lõpetamisi kui ABEND-tõrkeid. Programmi ebanormaalne lõpp võib ilmneda mitmel erineval põhjusel, kuid kõige levinumad põhjused on probleemid süsteemimäluga või probleemid tarkvara koodis. Kui seda tüüpi lõpetamine toimub, sulgub programm ise ja operatsioonisüsteem astub kahjustuste leevendamiseks programmi mälu tühjendamiseks ja toimib nii, nagu oleks programm tüüpilistes olukordades edukalt sulgunud.

Probleemid arvuti süsteemimälus võivad käivitada süsteemi ühe või mitme programmi ebatavalise lõppemise. Kui arvuti laseb tekkida mälulekkel – kui see lubab programmil kirjutada mällu, mida operatsioonisüsteem pole talle määranud –, võib see tahtmatult üle kirjutada mõnele teisele programmile kuulunud mäluosad. Kui “sissetungitud” programm proovib sissetungitud mäluosadesse salvestatud teavet tagasi saada, ei leia see enam õigeid oodatud andmeid. See lahknevus põhjustab sageli rakenduse täieliku krahhi, kuna seda ei saa käivitada, kasutades sissetungiva programmi salvestatud ülekirjutatud teavet.

Tarkvarakoodiga seotud probleemid võivad mõnikord käivitada programmi ebatavalise lõpu. Kui tarkvaral on vigu või see ei sisalda piisavalt veakäsitluskoodi, võib lõppkasutaja vale sisestus kaasa tuua tarkvara ebanormaalse lõpetamise. Näiteks programm, mis palub lõppkasutajal sisestada oma telefoninumbri, kodeeritakse tavaliselt nii, et iga mittenumbriline vastus, mis ei sisalda 10 numbrit, on kohe võimaliku veana “nähtav” ja tagastatakse lõppkasutajale halb tulemus. Ebaküps või mittetäielik tarkvara, mis seda veakäsitluskoodi ei sisalda, võib vale sisendi saamisel kokku jooksma; programm ei saa hakkama, kui lõppkasutaja otsustab oma eeldatava telefoninumbrina sisestada “abcdefg”.

Kui ebanormaalne lõpp ilmneb, annab operatsioonisüsteem tavaliselt arvutikasutajale märku, et programm on katkenud. Pärast seda on operatsioonisüsteemi ülesanne krahhist taastuda, ilma et see mõjutaks negatiivselt ühtki teist süsteemi programmi. Selleks vabastab see tavaliselt programmile määratud mälu täpselt samamoodi nagu programmi eduka lõpetamise korral. Teave ebanormaalse programmi lõpetamise kohta salvestatakse sageli operatsioonisüsteemi krahhilogidesse, mis võimaldab lõppkasutajal krahhi teabe üle vaadata, et otsida konflikti võimalikku algpõhjust.