This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Crash" computing – news ·newspapers ·books ·scholar ·JSTOR(December 2013) (Learn how and when to remove this message) |
Incomputing, acrash, orsystem crash, occurs when a computer program such as asoftware application or anoperating system stops functioning properly andexits. On some operating systems or individual applications, acrash reporting service will report the crash and any details relating to it (or give the user the option to do so), usually to thedeveloper(s) of the application. If the program is a critical part of the operating system, the entire system may crash or hang, often resulting in akernel panic orfatal system error.
Most crashes are the result of asoftware bug. Typical causes include accessing invalid memory addresses,[a] incorrect address values in theprogram counter,buffer overflow, overwriting a portion of the affected program code due to an earlier bug, executing invalidmachine instructions (anillegal orunauthorized opcode), or triggering an unhandledexception. The original software bug that started this chain of events is typically considered to be the cause of the crash, which is discovered through the process ofdebugging. The original bug can be far removed from thecode that actually triggered the crash.
In early personal computers, attempting to write data to hardware addresses outside the system's main memory could cause hardware damage. Some crashes areexploitable and let a malicious program orhacker executearbitrary code, allowing the replication ofviruses or the acquisition of data which would normally be inaccessible.
Anapplication typically crashes when it performs an operation that is not allowed by the operating system. The operating system then triggers anexception orsignal in the application. Unix applications traditionally responded to the signal bydumping core. Most Windows and UnixGUI applications respond by displaying a dialogue box (such as the one shown in the accompanying image on the right) with the option to attach adebugger if one is installed. Some applications attempt to recover from the error and continue running instead ofexiting.
An application can also containcode to crash[b] after detecting a severe error.
Typical errors that result in application crashes include:
A "crash to desktop" (CTD) is said to occur when aprogram (commonly avideo game) unexpectedly quits, abruptly taking the user back to thedesktop. Usually, the term is applied only to crashes where no error is displayed, hence all the user sees as a result of the crash is the desktop. Many times there is no apparent action that causes a crash to desktop. During normal function, the program mayfreeze for a shorter period of time, and then close by itself. Also during normal function, the program may become ablack screen and repeatedly play the last few seconds ofsound (depending on the size of the audiobuffer) that was being played before it crashes to desktop. Other times it may appear to betriggered by a certain action, such as loading an area.
CTD bugs are considered particularly problematic for users. Since they frequently display no error message, it can be very difficult to track down the source of the problem, especially if the times they occur and the actions taking place right before the crash do not appear to have any pattern or common ground. One way to track down the source of the problem for games is to run them in windowed-mode. Certain operating system versions may feature one or more tools to help track down causes of CTD problems.
Some computer programs such asStepMania and BBC'sBamzooki also crash to desktop if in full-screen, but display the error in a separate window when the user has returned to the desktop.
The software running theweb server behind a website may crash, rendering it inaccessible entirely or providing only an error message instead of normal content.
For example, if a site is using an SQL database (such asMySQL) for a script (such asPHP) and that SQL database server crashes, thenPHP will display a connection error.
An operating system crash commonly occurs when ahardware exception occurs that cannot behandled. Operating system crashes can also occur when internalsanity-checking logic within the operating system detects that the operating system has lost its internal self-consistency.
Modern multi-tasking operating systems, such asLinux, andmacOS, usually remain unharmed when an application program crashes.
Some operating systems, e.g.,z/OS, have facilities forReliability, availability and serviceability (RAS) and the OS can recover from the crash of a critical component, whether due to hardware failure, e.g., uncorrectable ECC error, or to software failure, e.g., a reference to an unassigned page.
An Abnormal end or ABEND is an abnormal termination ofsoftware, or a program crash. Errors or crashes on theNovell NetWare network operating system are usually called ABENDs. Communities ofNetWare administrators sprang up around the Internet, such asabend.org.
This usage derives from theABEND macro on IBMOS/360, ...,z/OS operating systems. Usually capitalized, but may appear as "abend". Some common ABEND codes are System ABEND 0C7 (data exception) and System ABEND 0CB (division by zero).[1][2][3] Abends can be "soft" (allowing automatic recovery) or "hard" (terminating the activity).[4] The term is jocularly claimed to be derived from the German word "Abend" meaning "evening".[5]
Depending on the application, the crash may contain the user's sensitive andprivate information.[6] Moreover, many software bugs which cause crashes are alsoexploitable forarbitrary code execution and other types ofprivilege escalation.[7][8] For example, astack buffer overflow can overwrite the return address of a subroutine with an invalid value, which will cause, e.g., asegmentation fault, when the subroutine returns. However, if an exploit overwrites the return address with a valid value, the code in that address will be executed.
When crashes are collected in the field using acrash reporter, the next step for developers is to be able to reproduce them locally. For this, several techniques exist:STAR uses symbolic execution,[9]EvoCrash performs evolutionary search.[10]