Computer errors
What Are Computer Errors?
Computer errors are conditions in which a computing system produces an incorrect, unexpected, or undefined result that deviates from its specified behavior. The term is broad, encompassing hardware faults that alter stored bit values, software defects that cause programs to compute wrong outputs or halt abnormally, and communication failures that corrupt data in transit. Errors are categorized by their origin, their detectability, and whether they are transient (occurring once without a persistent physical cause) or permanent (reproducible because a component has degraded or failed). The study of computer errors underlies the fields of dependability engineering, fault-tolerant computing, and software quality assurance.
Systematic work on error classification and mitigation traces back to the foundational period of computing in the 1950s and has grown into a rich research area documented extensively in journals such as the IEEE Transactions on Reliability, which has published decades of work on fault models, reliability measurement, and error recovery strategies.
Hardware Faults and Soft Errors
Hardware errors divide into two broad categories based on their persistence. Hard errors arise from permanent damage to a component: a failed memory cell that always reads the wrong value, a corroded solder joint that intermittently loses continuity, or a storage sector that can no longer hold data. Soft errors, also called single-event upsets (SEUs), are transient bit flips caused by high-energy particles such as cosmic rays or alpha particles striking a memory cell and briefly altering its state; the underlying device is undamaged, but the stored value is wrong until it is overwritten. As device geometries shrink in CMOS technology, the charge stored per bit decreases, making cells more susceptible to soft errors. The NIST Semiconductor Electronics Division has studied soft error rates as a function of altitude, shielding, and process node to help designers quantify the risk in safety-critical applications.
Error Detection and Correction
Detecting and correcting errors before they propagate to observable outputs is a central concern of hardware design. Parity bits add a single redundant bit to a group of data bits, allowing single-bit errors to be detected but not corrected. Error-correcting codes (ECC) extend this to full correction: the most widely used family, Hamming codes and their extensions, adds enough redundant bits to locate and correct any single-bit error and detect any two-bit error in a protected word. ECC memory is standard in server-class systems and high-reliability applications. Cyclic redundancy checks (CRCs) protect blocks of data in storage and communication by computing a polynomial remainder over the data; any change in transit alters the remainder, flagging the block as corrupted. The IEEE 802 family of networking standards mandates CRC protection on all Ethernet frames, ensuring that physical layer noise does not silently corrupt transmitted data.
Software Errors and Exception Handling
In software, errors manifest as logic defects (producing wrong results), runtime exceptions (illegal operations such as division by zero or access to unallocated memory), and resource exhaustion (running out of stack space or file handles). Modern programming languages use structured exception handling mechanisms to separate normal control flow from error handling paths, preventing unchecked errors from silently corrupting program state. Languages such as Rust enforce at compile time that functions declare and handle their error cases, reducing the category of unhandled-error bugs. In long-running systems, accumulating errors from uncorrected hardware faults can be detected through periodic scrubbing: background processes read and rewrite memory or storage to catch and correct ECC-detectable errors before they accumulate past the code's correction capacity. IEEE Xplore publications on software reliability engineering cover formal verification techniques and statistical models for predicting residual defect rates in shipped software.
Applications
Error detection and correction techniques have applications in a wide range of computing domains, including:
- Spacecraft and satellite systems, where cosmic-ray soft errors are more frequent and maintenance is impossible
- Database management, where transaction logs and checksums protect against data corruption
- Storage arrays, where RAID parity and drive-level ECC combine to tolerate multiple simultaneous faults
- Network communications, where CRC and forward error correction ensure data integrity across noisy channels
- Safety-critical embedded systems in avionics and medical devices, where uncorrected errors can have physical consequences