Epänormaali loppu on toimivan tietokoneohjelman tai -sovelluksen äkillinen ja odottamaton päättyminen. Sen nimi on alun perin peräisin vanhemmasta IBM 360 -käyttöjärjestelmästä, joka huomasi sellaiset lopetukset kuin ABEND -virheet. Ohjelman epänormaali loppu voi tapahtua monista eri syistä, mutta yleisimmät syyt liittyvät järjestelmämuistiin tai ohjelmistokoodiin liittyviin ongelmiin. Kun tämäntyyppinen lopetus tapahtuu, ohjelma sulkeutuu itsestään ja käyttöjärjestelmä ryhtyy lieventämään vahinkoa huuhtelemalla ohjelman muisti ja toimimalla kuin ohjelma olisi sulkeutunut onnistuneesti tyypillisissä tilanteissa.
Tietokoneen järjestelmämuistissa olevat ongelmat voivat laukaista yhden tai useamman järjestelmän ohjelman epänormaalin päättymisen. Kun tietokone sallii muistivuotoja – kun se sallii ohjelman kirjoittaa muistiin, jota käyttöjärjestelmä ei ole määrittänyt sille – se voi vahingossa korvata toiselle ohjelmalle kuuluneet muistin osat. Kun “hyökkää” -ohjelma yrittää palauttaa murtautuneille muistiosille tallennetut tiedot, se ei enää löydä oikeita, odotettuja tietoja. Tämä ristiriita johtaa usein sovelluksen täydelliseen kaatumiseen, koska se ei voi toimia käyttämällä hyökkäävän ohjelman tallentamia päällekirjoitettuja tietoja.
Ohjelmistokoodiin liittyvät ongelmat voivat joskus laukaista ohjelman epänormaalin lopettamisen. Jos ohjelmistossa on vikoja tai se ei sisällä riittävästi virheenkäsittelykoodia, loppukäyttäjän virheelliset syötteet voivat johtaa ohjelmiston epänormaaliin lopettamiseen. Esimerkiksi ohjelma, joka pyytää loppukäyttäjää syöttämään puhelinnumeronsa, yleensä koodataan siten, että mikä tahansa ei-numeerinen vastaus, joka ei sisällä 10 numeroa, “havaitaan” välittömästi mahdollisena virheenä ja palautetaan loppukäyttäjälle huono tulos. Epäkypsä tai epätäydellinen ohjelmisto, joka ei sisällä tätä virheenkäsittelykoodia, voi kaatua, kun se vastaanottaa väärän syötteen; Ohjelma ei pysty selviämään, jos loppukäyttäjä päättää kirjoittaa ”abcdefg” oletettuun puhelinnumeroonsa.
Kun epänormaali loppu ilmenee, käyttöjärjestelmä yleensä varoittaa tietokoneen käyttäjää ohjelman päättymisestä. Tämän jälkeen käyttöjärjestelmän tehtävänä on toipua kaatumisesta vaikuttamatta haitallisesti muihin järjestelmän ohjelmiin. Tätä varten se yleensä vapauttaa ohjelmalle määrittämänsä muistin, aivan kuten se olisi, jos ohjelma olisi päättynyt onnistuneesti. Tiedot epänormaalista ohjelman lopettamisesta tallennetaan usein käyttöjärjestelmän kaatumislokeihin, jolloin loppukäyttäjä voi tarkistaa kaatumistiedot löytääkseen mahdollisen perimmäisen syyn konfliktiin.