Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Crash (computing)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Unexpected program exit due to an error}} {{Redirect-distinguish|System crash|System Crash (TV series)}} {{Use dmy dates|date=December 2024}} {{more citations needed|date=December 2013}} [[File:Crashed computer.jpg|thumb|A [[kernel panic]] displayed on an [[iMac]]. This is the most common form of an operating system failure in Unix-like systems.]] 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 [[exit (system call)|exits]]. On some operating systems or individual applications, a [[crash reporter|crash reporting service]] will report the crash and any details relating to it (or give the user the option to do so), usually to the [[Developer (software)|developer(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 a [[kernel panic]] or [[fatal system error]]. Most crashes are the result of a [[software bug]]. Typical causes include accessing invalid memory addresses,{{efn| name=invaddr|Types of invalid addresses include: * Invalid real address * [[Segmentation fault|Invalid segment number]] * [[page fault|Invalid page number]] * Address not on correct boundary (alignment error) }} incorrect address values in the [[program counter]], [[buffer overflow]], overwriting a portion of the affected program code due to an earlier bug, executing invalid [[machine instructions]] (an [[illegal opcode|illegal]] or [[Protection ring#Supervisor mode|unauthorized]] opcode), or triggering an unhandled [[Exception handling|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 [[source code|code]] 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 are [[Exploit (computer security)|exploitable]] and let a malicious program or [[hacker]] execute [[arbitrary code execution|arbitrary code]], allowing the replication of [[computer virus|viruses]] or the acquisition of data which would normally be inaccessible. ==Application crashes== [[Image:Computer crash airport.jpg|thumb|A display at [[Frankfurt Airport]] running a program under [[Windows XP]] that has crashed due to a [[Segmentation fault|memory read access violation]]]] An [[Application software|application]] typically crashes when it performs an operation that is not allowed by the operating system. The operating system then triggers an [[exception handling|exception]] or [[Signal (IPC)|signal]] in the application. Unix applications traditionally responded to the signal by [[Core dump|dumping core]]. Most Windows and Unix [[Graphical user interface|GUI]] applications respond by displaying a dialogue box (such as the one shown in the accompanying image on the right) with the option to attach a [[debugger]] if one is installed. Some applications attempt to recover from the error and continue running instead of [[exit (system call)|exiting]]. An application can also contain [[code]] to crash{{efn|In [[OS/360 and successors]] the application normally uses an [[ABEND]] macro with a user completion code.}} after detecting a severe error. Typical errors that result in application crashes include: *attempting to read or write memory that is not allocated for reading or writing by that application (e.g., [[segmentation fault]], x86-specific [[general protection fault]]) *attempting to execute privileged or invalid instructions *attempting to perform I/O operations on [[computer hardware|hardware]] devices to which it does not have permission to access *passing invalid arguments to system calls *attempting to access other system resources to which the application does not have permission to access *attempting to execute machine instructions with bad arguments (depending on CPU architecture): [[Division by zero|divide by zero]], operations on [[denormal number]] or [[NaN]] (not a number) values, memory access to [[Bus error|unaligned addresses]], etc. ===Crash to desktop=== A "crash to desktop" (CTD) is said to occur when a [[computer program|program]] (commonly a [[video game]]) unexpectedly quits, abruptly taking the user back to the [[desktop metaphor|desktop]]. 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 may [[Hang (computing)|freeze]] for a shorter period of time, and then close by itself. Also during normal function, the program may become a [[Black Screen of Death|black screen]] and repeatedly play the last few seconds of [[sound]] (depending on the size of the audio [[data buffer|buffer]]) that was being played before it crashes to desktop. Other times it may appear to be [[Event-driven programming|trigger]]ed 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 as ''[[StepMania]]'' and BBC's ''[[Bamzooki]]'' also crash to desktop if in full-screen, but display the error in a separate window when the user has returned to the desktop. ==Web server crashes== The software running the [[web 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 as [[MySQL]]) for a script (such as [[PHP]]) and that SQL database server crashes, then [[PHP]] will display a connection error. ==Operating system crashes== [[File:Windows XP BSOD.png|thumb|A [[Blue screen of death]] as displayed in Windows XP, Vista, and 7]] [[File:OS X Mountain Lion kernel panic.jpg|thumb|A kernel panic as displayed in OS X Mountain Lion]] An operating system crash commonly occurs when a [[Exception handling#Exception handling in hardware|hardware exception]] occurs that cannot be [[Exception handling|handled]]. Operating system crashes can also occur when internal [[Sanity check|sanity-checking]] logic within the operating system detects that the operating system has lost its internal self-consistency. Modern multi-tasking operating systems, such as [[Linux]], and [[macOS]], usually remain unharmed when an application program crashes. Some operating systems, e.g., [[z/OS]], have facilities for [[Reliability, 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. ===Abnormal end=== An Abnormal end or ABEND is an abnormal termination of [[software]], or a program crash. Errors or crashes on the [[Novell]] NetWare network operating system are usually called ABENDs. Communities of [[NetWare]] administrators sprang up around the Internet, such as [https://web.archive.org/web/20050324091448/http://www.abend.org/ abend.org]. This usage derives from the ''ABEND'' macro on IBM [[OS/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]]).<ref>{{cite book|title=OS Release 21 β System/360 Operating System β Supervisor Services and Macro Instructions|id=GC28-6646-7|date=September 1974|section=ABEND|section-url=http://bitsavers.org/pdf/ibm/360/os/R21.7_Apr73/GC28-6646-7_Supervisor_Services_and_Macro_Instructions_Rel_21.7_Sep74.pdf#page=117|pages=97β99|edition=Eighth|url=http://bitsavers.org/pdf/ibm/360/os/R21.7_Apr73/GC28-6646-7_Supervisor_Services_and_Macro_Instructions_Rel_21.7_Sep74.pdf|publisher=[[IBM]]|access-date=8 July 2023}}</ref><ref>{{cite web|url=https://www.ibm.com/docs/en/zos/2.5.0?topic=codes-0cx|title=0Cx β z/OS MVS System Codes|publisher=IBM}}</ref><ref name="ABENDlist">[http://faculty.madisoncollege.edu/schmidt/mainframe/abendcodes.html List of ABEND codes] {{Webarchive|url=https://web.archive.org/web/20180916172643/http://faculty.madisoncollege.edu/schmidt/mainframe/abendcodes.html |date=2018-09-16 }} on madisoncollege.edu</ref> Abends can be "soft" (allowing automatic recovery) or "hard" (terminating the activity).<ref>{{cite book|title=z/VM and Linux Operations for z/OS System Programmers|first=Lydia|last=Parziale|year=2008|publisher=IBM Redbooks|isbn=9780738431598|url=https://books.google.com/books?id=Mbq6AgAAQBAJ}} page 352</ref> The term is jocularly claimed to be derived from the German word "[[wikt:Abend#English|Abend]]" meaning "evening".<ref name="dictionary">[http://dictionary.die.net/abend "Abend"] {{webarchive |url=https://web.archive.org/web/20110929160903/http://dictionary.die.net/abend |date=29 September 2011 }} on dictionary.die.net</ref> ==Security and privacy implications of crashes== Depending on the application, the crash may contain the user's sensitive and [[information privacy|private information]].<ref>{{cite arXiv|title=Crashing Privacy: An Autopsy of a Web Browser's Leaked Crash Reports|eprint=1808.01718|last1=Satvat|first1=Kiavash|last2=Saxena|first2=Nitesh|year=2018|class=cs.CR}}</ref> Moreover, many software bugs which cause crashes are also [[Exploit (computer security)|exploitable]] for [[arbitrary code execution]] and other types of [[privilege escalation]].<ref>{{cite web|url=http://msdn.microsoft.com/en-us/magazine/cc163311.aspx|title=Analyze Crashes to Find Security Vulnerabilities in Your Apps|publisher=Msdn.microsoft.com|date=2007-04-26|access-date=2014-06-26|archive-date=11 December 2011|archive-url=https://web.archive.org/web/20111211180422/http://msdn.microsoft.com/en-us/magazine/cc163311.aspx|url-status=live}}</ref><ref>{{cite web|url=http://www.squarefree.com/2006/11/01/memory-safety-bugs-in-c-code/|title=Jesse Ruderman Β» Memory safety bugs in C++ code|publisher=Squarefree.com|date=2006-11-01|access-date=2014-06-26|archive-date=11 December 2013|archive-url=https://web.archive.org/web/20131211092447/http://www.squarefree.com/2006/11/01/memory-safety-bugs-in-c-code/|url-status=live}}</ref> For example, a [[stack buffer overflow]] can overwrite the return address of a subroutine with an invalid value, which will cause, e.g., a [[segmentation 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. ==Crash reproduction== When crashes are collected in the field using a [[crash reporter]], the next step for developers is to be able to reproduce them locally. For this, several techniques exist: STAR uses symbolic execution,<ref name="ChenKim2015">{{cite journal|last1=Chen|first1=Ning|last2=Kim|first2=Sunghun|title=STAR: Stack Trace Based Automatic Crash Reproduction via Symbolic Execution|journal=IEEE Transactions on Software Engineering|volume=41|issue=2|year=2015|pages=198β220|issn=0098-5589|doi=10.1109/TSE.2014.2363469|s2cid=6299263}}</ref> EvoCrash performs evolutionary search.<ref name="SoltaniPanichella2017">{{cite book|last1=Soltani|first1=Mozhan|title=2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)|last2=Panichella|first2=Annibale|last3=van Deursen|first3=Arie|chapter=A Guided Genetic Algorithm for Automated Crash Reproduction|year=2017|pages=209β220|doi=10.1109/ICSE.2017.27|isbn=978-1-5386-3868-2|s2cid=199514177|url=http://resolver.tudelft.nl/uuid:3490acbb-240b-4ec2-8202-712a7d1bb64e|access-date=21 December 2020|archive-date=25 January 2022|archive-url=https://web.archive.org/web/20220125055704/https://repository.tudelft.nl/islandora/object/uuid:3490acbb-240b-4ec2-8202-712a7d1bb64e?collection=research|url-status=live}}</ref> ==See also== {{div col|colwidth=18em}} *[[Copy protection]] *[[Crash-only software]] *[[Data loss]] *[[Guru Meditation]] *[[Memory corruption]] *[[Memory protection]] *[[Page fault]] *[[Reboot]] *[[Safe mode]] *[[Single-event upset]] *[[Storage violation]] *[[SIGILL]] *[[SystemRescue]] *[[Undefined behavior]] {{div col end}} ==Notes== {{Notelist}} ==References== {{reflist}} ==External links== *[http://windows.microsoft.com/en-us/windows-vista/picking-up-the-pieces-after-a-computer-crash Picking Up The Pieces After A Computer Crash] {{DEFAULTSORT:Crash (Computing)}} [[Category:Computer jargon]] [[Category:Computer errors]] [[Category:Software anomalies]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite arXiv
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Div col
(
edit
)
Template:Div col end
(
edit
)
Template:Efn
(
edit
)
Template:More citations needed
(
edit
)
Template:Notelist
(
edit
)
Template:Redirect-distinguish
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Use dmy dates
(
edit
)
Template:Webarchive
(
edit
)