In computing, a crash (or system crash) occurs when a computer program, such as a software application or an operating system, stops functioning properly and exits. The program responsible may appear to hang until a crash reporting service reports the crash and any details relating to it. If the program is a critical part of the operating system, the entire system may crash or hang, often resulting in a kernel panic or fatal system error.
Most crashes are the result of executing invalid machine instructions. Typical causes include incorrect address values in the program counter, buffer overflow, overwriting a portion of the affected program code due to an earlier bug, accessing invalid memory addresses, using an illegal opcode or triggering an unhandled exception. 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 of debugging. The original bug can be far removed from the code that actually crashed.
In earlier personal computers, attempting to write data to hardware addresses outside of the system's main memory could cause hardware damage. Some crashes are exploitable and allow a malicious program or hacker to execute arbitrary code allowing for the replication of viruses or the acquisition of data which would normally be inaccessible.