An abnormal end is an abrupt and unexpected termination of a functioning computer program or application. Its name originally derives from the older IBM 360 operating system, which noted such terminations as ABEND errors. An abnormal end to a program can occur for many different reasons, but the most common reasons involve problems with the system memory or problems within the code of the software. When this type of termination takes place, the program closes on its own and the operating system steps in to mitigate the damage by flushing the program's memory and acting as though the program had closed down successfully under typical situations.
Problems within the system memory on a computer can trigger an abnormal end to one or more programs on the system. When the computer allows a memory leak to occur — when it allows a program to write to memory that has not been assigned to it by the operating system — it can inadvertently overwrite portions of memory that belonged to another program. Once the "invaded" program tries to reclaim the information stored in the invaded sections of memory, it will no longer find the correct, anticipated data. This discrepancy often results in a complete crash of the application, as it cannot run by using the overwritten information saved by the invading program.
Issues with software code can sometimes trigger an abnormal end to a program. If the software has bugs or does not contain sufficient error handling code, incorrect inputs by the end user can result in an abnormal termination of the software. For example, a program that asks the end user to input his or her telephone number will usually be coded so that any non-numerical answer that does not contain 10 digits is immediately "caught" as a potential error and returned to the end user as a bad result. Immature or incomplete software that does not include this error handling code may crash upon receiving incorrect input; the program will not be able to cope if the end user decides to enter "abcdefg" as his or her supposed phone number.
Once an abnormal end occurs, the operating system usually alerts the computer user that a program termination has occurred. After doing this, the operating system's job is to recover from the crash without adversely affecting any of the other programs on the system. To do this, it typically frees up the memory that it assigned to the program, exactly as it would if the program had terminated successfully. Information about the abnormal program termination is often saved in the crash logs of the operating system, allowing an end user to review the crash information to look for a potential root cause for the conflict.