Nienormalny koniec to nagłe i nieoczekiwane zakończenie działającego programu komputerowego lub aplikacji. Jego nazwa pochodzi od starszego systemu operacyjnego IBM 360, który odnotował takie zakończenia, jak błędy ABEND. Nieprawidłowy koniec programu może wystąpić z wielu różnych powodów, ale najczęstsze przyczyny to problemy z pamięcią systemową lub problemy z kodem oprogramowania. Kiedy ma miejsce tego typu zakończenie, program zamyka się samoczynnie, a system operacyjny podejmuje działania, aby złagodzić szkody, opróżniając pamięć programu i zachowując się tak, jakby program został pomyślnie zamknięty w typowych sytuacjach.
Problemy z pamięcią systemową na komputerze mogą spowodować nieprawidłowe zakończenie działania jednego lub więcej programów w systemie. Gdy komputer pozwala na wystąpienie przecieku pamięci — gdy pozwala programowi na zapis w pamięci, która nie została mu przypisana przez system operacyjny — może nieumyślnie nadpisać części pamięci, które należały do innego programu. Gdy „zaatakowany” program spróbuje odzyskać informacje przechowywane w zaatakowanych sekcjach pamięci, nie będzie już mógł znaleźć poprawnych, oczekiwanych danych. Ta rozbieżność często powoduje całkowitą awarię aplikacji, ponieważ nie można jej uruchomić przy użyciu nadpisanych informacji zapisanych przez program atakujący.
Problemy z kodem oprogramowania mogą czasami powodować nieprawidłowe zakończenie działania programu. Jeśli oprogramowanie zawiera błędy lub nie zawiera wystarczającego kodu obsługi błędów, nieprawidłowe dane wprowadzone przez użytkownika końcowego mogą spowodować nieprawidłowe zakończenie działania oprogramowania. Na przykład program, który prosi użytkownika końcowego o wprowadzenie swojego numeru telefonu, będzie zwykle zakodowany w taki sposób, że każda nienumeryczna odpowiedź, która nie zawiera 10 cyfr, zostanie natychmiast „przechwycona” jako potencjalny błąd i zwrócona użytkownikowi końcowemu jako zły wynik. Niedojrzałe lub niekompletne oprogramowanie, które nie zawiera tego kodu obsługi błędów, może ulec awarii po otrzymaniu nieprawidłowych danych wejściowych; program nie będzie w stanie poradzić sobie, jeśli użytkownik końcowy zdecyduje się wpisać „abcdefg” jako jego domniemany numer telefonu.
Po wystąpieniu nieprawidłowego zakończenia system operacyjny zwykle ostrzega użytkownika komputera, że nastąpiło zakończenie programu. Po wykonaniu tej czynności zadaniem systemu operacyjnego jest odzyskanie sprawności po awarii bez negatywnego wpływu na inne programy w systemie. Aby to zrobić, zwykle zwalnia pamięć przypisaną do programu, dokładnie tak samo, jak gdyby program został pomyślnie zakończony. Informacje o nieprawidłowym zakończeniu programu są często zapisywane w dziennikach awarii systemu operacyjnego, umożliwiając użytkownikowi końcowemu przejrzenie informacji o awarii w poszukiwaniu potencjalnej przyczyny konfliktu.