All Topics  
Software bug

 
Software Bug

   Email Print
   Bookmark   Link






 

Software bug



 
 
A software bug is an error, flaw, mistake, failure
Failure

Failure in general refers to the state or condition of not meeting a desirable or intended objective. It may be viewed as the opposite of success....
, or fault
Fault (technology)

In document ISO/CD 10303-226, a fault is defined as an abnormal condition or defect at the component, equipment, or sub-system level which may lead to a failure....
 in a computer program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
 that prevents it from behaving as intended (e.g., producing an incorrect or unexpected result). Most bugs arise from mistakes and errors made by people in either a program's source code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 or its design
Software architecture

The software architecture of a program or computing system is the structure or structures of the software system, which comprise software components, the externally visible properties of those components, and the relationships between them....
, and a few are caused by compiler
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
s producing incorrect code. A program that contains a large number of bugs, and/or bugs that seriously interfere with its functionality, is said to be buggy.






Discussion
Ask a question about 'Software bug'
Start a new discussion about 'Software bug'
Answer questions from other users
Full Discussion Forum



Encyclopedia


A software bug is an error, flaw, mistake, failure
Failure

Failure in general refers to the state or condition of not meeting a desirable or intended objective. It may be viewed as the opposite of success....
, or fault
Fault (technology)

In document ISO/CD 10303-226, a fault is defined as an abnormal condition or defect at the component, equipment, or sub-system level which may lead to a failure....
 in a computer program
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
 that prevents it from behaving as intended (e.g., producing an incorrect or unexpected result). Most bugs arise from mistakes and errors made by people in either a program's source code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 or its design
Software architecture

The software architecture of a program or computing system is the structure or structures of the software system, which comprise software components, the externally visible properties of those components, and the relationships between them....
, and a few are caused by compiler
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
s producing incorrect code. A program that contains a large number of bugs, and/or bugs that seriously interfere with its functionality, is said to be buggy. Reports detailing bugs in a program are commonly known as bug reports, fault reports, problem reports, trouble reports, change requests, and so forth.

Effects


Bugs can have a wide variety of effects, with varying levels of inconvenience to the user of the program. Some bugs have only a subtle effect on the program's functionality, and may thus lie undetected for a long time. More serious bugs may cause the program to crash
Crash (computing)

A crash or in computing is a condition where a program stops performing its expected function and also stops responding to other parts of the system....
 or freeze leading to a denial of service. Others qualify as security bugs and might for example enable a malicious user to bypass access controls in order to obtain unauthorized privileges.

The results of bugs may be extremely serious. Bugs in the code controlling the Therac-25
Therac-25

The Therac-25 was a radiation therapy machine produced by Atomic Energy of Canada Limited and CGR of France after the Therac-6 and Therac-20 units....
 radiation therapy
Radiation therapy

Radiation therapy is the medicine use of ionizing radiation as part of cancer oncology to control malignant cell s . Radiotherapy may be used for curative or Adjuvant chemotherapy cancer treatment....
 machine were directly responsible for some patient deaths in the 1980s. In 1996, the European Space Agency
European Space Agency

The European Space Agency , established in 1975, is an intergovernmentalism organisation dedicated to the Space exploration, currently with 18 member states....
's US$1 billion prototype Ariane 5
Ariane 5

Ariane 5 is a European expendable launch system designed to deliver payloads into geostationary transfer orbit or low Earth orbit.It is manufactured under the authority of the European Space Agency and the Centre National d'Etudes Spatiales , with EADS Astrium Space Transportation as prime contractor, leading a consortium of sub-contracto...
 rocket was destroyed less than a minute after launch, due to a bug in the on-board guidance computer program. In June 1994, a Royal Air Force Chinook
CH-47 Chinook

The Boeing CH-47 Chinook is a versatile, twin-engine, tandem rotor heavy-lift helicopter. Its top speed of 170 knot was faster than utility and attack helicopters of the 1960s and even many of today....
 crashed into the Mull of Kintyre, killing 29. This was initially dismissed as pilot error, but an investigation by Computer Weekly
Computer Weekly

ComputerWeekly is a weekly magazine for IT professionals which has been published by Reed Business Information for over 40 years. The magazine is available free to IT professionals who meet the circulation requirements....
 uncovered sufficient evidence to convince a House of Lords
House of Lords

The House of Lords is the second house of the Parliament of the United Kingdom and is also commonly referred to as "the Lords". The Parliament comprises the British monarchy, the British House of Commons , and the Lords....
 inquiry that it may have been caused by a software bug in the aircraft's engine control computer
FADEC

A FADEC is a system consisting of a digital computer, called an "electronic engine control" or "electronic control unit" , and its related accessories that control all aspects of aircraft engine performance....
.

In 2002, a study commissioned by the US Department of Commerce' National Institute of Standards and Technology
National Institute of Standards and Technology

The National Institute of Standards and Technology , known between 1901 and 1988 as the National Bureau of Standards , is a measurement standards laboratory which is a non-regulatory agency of the United States Department of Commerce....
 concluded that software bugs, or errors, are so prevalent and so detrimental that they cost the US economy an estimated $59 billion annually, or about 0.6 percent of the gross domestic product.

Etymology

The concept that software might contain errors dates back to 1842 in Ada Byron's notes on the analytical engine
Ada Byron's notes on the analytical engine

Ada Byron's notes on the analytical engine are a description and associated documents produced by Ada Lovelace, on Charles Babbage's design for a mechanical computer called the analytical engine....
 in which she speaks of the difficulty of preparing program 'cards' for Charles Babbage
Charles Babbage

Charles Babbage, Royal Society was an England mathematician, philosopher, inventor and mechanical engineer who originated the concept of a programmable computer....
's Analytical engine
Analytical engine

The analytical engine, an important step in the history of computers, was the design of a mechanical general-purpose computer by the British mathematician Charles Babbage....
:

Usage of the term "bug" to describe inexplicable defects has been a part of engineering jargon for many decades and predates computers and computer software; it may have originally been used in hardware engineering to describe mechanical malfunctions. For instance, Thomas Edison
Thomas Edison

Thomas Alva Edison was an American inventor and businessman who developed many devices that greatly influenced life around the world, including the phonograph and the long-lasting, practical electric light bulb....
 wrote the following words in a letter to an associate in 1878:

Problems with radar electronics during World War II were referred to as bugs (or glitches), and there is additional evidence that the usage dates back much earlier.

H96566k
The invention of the term is often erroneously attributed to Grace Hopper
Grace Hopper

Rear admiral Grace Murray Hopper was an American computer scientist and United States Navy officer. A pioneer in the field, she was one of the first programmers of the Harvard Mark I calculator, and she developed the first compiler for a computer programming language....
, who publicized the cause of a malfunction in an early electromechanical computer. A typical version of the story is given by this quote:

Hopper was not actually the one who found the insect, as she readily acknowledged. And the date was September 9, but in 1947, not 1945. The operators who did find it (including William "Bill" Burke, later of the Naval Weapons Laboratory, Dahlgren Va. ), were familiar with the engineering term and, amused, kept the insect with the notation "First actual case of bug being found." Hopper loved to recount the story.

While it is certain that the Mark II
Harvard Mark II

The Harvard Mark II was an electromechanical computer built at Harvard University under the direction of Howard Aiken and was finished in 1947. It was financed by the United States Navy....
 operators did not coin the term "bug", it has been suggested that they did coin the related term, "debug". Even this is unlikely, since the Oxford English Dictionary
Oxford English Dictionary

The Oxford English Dictionary , published by the Oxford University Press , is a comprehensive dictionary of the English language. Two fully-bound print editions of the OED have been published under its current name, in 1928 and 1989; as of December 2008 the dictionary's current editors have completed a quarter of the third edition....
 entry for "debug" contains a use of "debugging" in the context of airplane engines in 1945 (see the debugging
Debugging

Debugging is a methodical process of finding and reducing the number of computer bugs, or defects, in a computer program or a piece of electronic hardware thus making it behave as expected....
 article for more).

Prevention

Bugs are a consequence of the nature of human factors in the programming task. They arise from oversights made by computer programmers during design, coding and data entry. For example: In creating a relatively simple program to sort a list of words into alphabetical order, one's design might fail to consider what should happen when a word contains a hyphen
Hyphen

A hyphen is a punctuation mark. It is used both to join words and also to separate syllables of a single word. It is often confused with the dash , which are longer and have different uses, and with the minus sign which is also longer....
. Perhaps, when converting the abstract design into the chosen programming language, one might inadvertently create an off-by-one error
Off-by-one error

An off-by-one error is a logical error involving the discrete equivalent of a boundary condition. It often occurs in computer programming when an control flow#Loops iterates one time too many or too few....
 and fail to sort the last word in the list. Finally, when typing the resulting program into the computer, one might accidentally type a '<' where a '>' was intended, perhaps resulting in the words being sorted into reverse alphabetical order. More complex bugs can arise from unintended interactions between different parts of a computer program. This frequently occurs because computer programs can be complex — millions of lines long in some cases — often having been programmed by many people over a great length of time, so that programmers are unable to mentally track every possible way in which parts can interact. Another category of bug called a
race condition
Race condition

A race condition or race hazard is a flaw in a system or process whereby the output and/or result of the process is unexpectedly and critically dependent on the sequence or timing of other events....
comes about either when a process is running in more than one thread
Thread (computer science)

In computer science, a thread of execution is a Fork of a computer program into two or more Concurrency running task s. The implementation of threads and process es differs from one operating system to another, but in most cases, a thread is contained inside a process....
 or two or more processes run simultaneously, and the exact order of execution of the critical sequences of code have not been properly synchronized.

The software industry has put much effort into finding methods for preventing programmers from inadvertently introducing bugs while writing software. These include:

Programming style: While typos in the program code most likely are caught by the compiler, a bug usually appears when the programmer makes a logic error. Various innovations in programming style
Programming style

Programming style is a set of rules or guidelines used when writing the source code for a computer program. It is often claimed that following a particular programming style will help programmers to read and understand source code conforming to the style, and help to avoid introducing errors....
 and defensive programming
Defensive programming

Defensive programming is a form of defensive design intended to ensure the continuing function of a piece of software in spite of unforeseeable usage of said software....
 are designed to make these bugs less likely, or easier to spot.

Programming techniques: Bugs often create inconsistencies in the internal data of a running program. Programs can be written to check the consistency of their own internal data while running. If an inconsistency is encountered, the program can immediately halt, so that the bug can be located and fixed. Alternatively, the program can simply inform the user, attempt to correct the inconsistency, and continue running.

Development methodologies: There are several schemes for managing programmer activity, so that fewer bugs are produced. Many of these fall under the discipline of software engineering
Software engineering

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches....
 (which addresses software design issues as well.) For example, formal program specifications are used to state the exact behavior of programs, so that design bugs can be eliminated.

Programming language support: Programming languages
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
 often include features which help programmers prevent bugs, such as static type systems
Type system

In computer science, a type system may be defined as "a tractable syntactic method for proving the absence of certain program behaviors by classifying phrases according to the kinds of values they compute."....
, restricted name spaces
Namespace (computer science)

A namespace is an abstract container or environment created to hold a logical grouping of unique identifiers or symbols . An identifier defined in a namespace is associated with that namespace....
 and modular programming, among others. For example, when a programmer uses a variable of different type instead of another, although grammatically correct, the code doesn't type check and fails to compile
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
. In addition, many recently-invented languages have deliberately excluded features which can easily lead to bugs. For example, the Java programming language
Java (programming language)

Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
 does not support pointer arithmetic.

Code analysis: Tools for code analysis
Static code analysis

Static code analysis is the Program analysis that is performed without actually executing programs built from that software . In most cases the analysis is performed on some version of the source code and in the other cases some form of the object code....
 help developers by inspecting the program text beyond the compiler's capabilities to spot potential problems. Although in general the problem of finding all programming errors given a specification is not solvable (see halting problem
Halting problem

In computability theory , the halting problem is a decision problem which can be stated as follows: given a description of a computer program and a finite input, decide whether the program finishes running or will run forever, given that input....
), these tools exploit the fact that human programmers tend to do the same kind of mistakes when writing software.

Debugging

Classpath Bugs
Finding and fixing bugs, or "debugging", has always been a major part of computer programming
Computer programming

Computer programming is the process of writing, testing, debugging/troubleshooting, and maintaining the source code of computer programs. This source code is written in a programming language....
. Maurice Wilkes, an early computing pioneer, described his realization in the late 1940s that much of the rest of his life would be spent finding mistakes in his own programs. As computer programs grow more complex, bugs become more common and difficult to fix. Often programmers spend more time and effort finding and fixing bugs than writing new code.

Usually, the most difficult part of debugging is locating the erroneous part of the source code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
. Once the mistake is found, correcting it is usually easy. Programs known as debugger
Debugger

A debugger is a computer program that is used to test and debug other programs. The code to be examined might alternatively be running on an Instruction Set Simulator, a technique that allows great power in its ability to halt when specific conditions are encountered but which will typically be much slower than executing the code directly on...
s exist to help programmers locate bugs. However, even with the aid of a debugger, locating bugs is something of an art. It is not uncommon for a bug in one section of a program to cause failures in a completely different section, thus making it especially difficult to track (for example, an error in a graphic rendering
Rendering (computer graphics)

Rendering is the process of generating an image from a 3D model, by means of computer programs. The model is a description of three-dimensional objects in a strictly defined language or data structure....
 routine causing a file I/O
Input/output

In computing, input/output, or I/O, refers to the communication between an information processing system , and the outside world ? possibly a human, or another information processing system....
 routine to fail); this is most commonly caused by errors that lead to the corruption of program instructions or variables in memory.

Typically, the first step in locating a bug is finding a way to reproduce it easily. Once the bug is reproduced, the programmer can use a debugger or some other tool to monitor the execution of the program in the faulty region, and find the point at which the program went astray. Sometimes, a bug is not a single flawed instruction, but represents an error of thinking or planning on the part of the programmer. Such
logic error
Logic error

In computer programming, a logic error is a Software_bug in a program that causes it to operate incorrectly, but not to terminate abnormally . A logic error produces unintended or undesired output or other behavior, although it may not immediately be recognized as such....
s require a section of the program to be overhauled or rewritten.

It is not always easy to reproduce bugs. Some bugs are triggered by inputs to the program which may be difficult for the programmer to re-create. One cause of the Therac-25
Therac-25

The Therac-25 was a radiation therapy machine produced by Atomic Energy of Canada Limited and CGR of France after the Therac-6 and Therac-20 units....
 radiation machine deaths was a bug that occurred only when the machine operator very rapidly entered a treatment plan; it took days of practice to become able to do this, so the bug did not manifest in testing or when the manufacturer attempted to duplicate it. Other bugs may disappear when the program is run with a debugger; these are heisenbugs (humorously named after the Heisenberg uncertainty principle
Uncertainty principle

In quantum physics, the Werner Heisenberg uncertainty principle states that certain physical quantities, like the position and momentum, cannot both have precise values at the same time....
.)

Debugging is still a tedious task requiring considerable manpower. Since the 1990s, particularly following the Ariane 5 Flight 501
Ariane 5 Flight 501

Flight 501, which took place on June 4, 1996, was the first, and unsuccessful, test flight of the European Ariane 5 expendable launch system. Due to a malfunction in the control software, the rocket veered off its flight path 37 seconds after launch and was destroyed by its automated self-destruct system when high aerodynamic forces caused th...
 disaster, there has been a renewed interest in the development of effective automated aids to debugging. For instance, methods of static code analysis
Static code analysis

Static code analysis is the Program analysis that is performed without actually executing programs built from that software . In most cases the analysis is performed on some version of the source code and in the other cases some form of the object code....
 by abstract interpretation
Abstract interpretation

In computer science, abstract interpretation is a theory of sound approximation of the semantics of computer programs, based on monotonic functions over ordered sets, especially lattice s....
 have already made significant achievements, while still remaining much of a work in progress.

Bug management


It is common practice for software to be released with known bugs that are considered non-critical. While software products contain an unknown number of unknown bugs when shipped, measurements during the testing may provide a statistically reliable estimate of the number of likely bugs remaining. Most big software projects maintain a list of "known bugs". This list inform users about bugs that are not fixed in the current release, or not fixed at all, and often a workaround
Workaround

A workaround is a bypass of a recognized problem in a system. A workaround is typically a temporary fix that implies that a genuine solution to the problem is needed....
 is offered additionally.

There are various reasons for such a list:
  • The developers often don't have time to fix all non-severe bugs.
  • The bug could be fixed in a new version or patch
    Patch (computing)

    A patch is a small piece of software designed to fix problems with or update a computer program or its supporting data. This includes fixing computer bug, replacing graphics and improving the usability or performance....
     that is not yet released.
  • The changes to the code required to fix the bug would be large, and would bring with them the chance of introducing other bugs into the system.


Given the above, it is often considered impossible to write completely bug-free software of any real complexity. So bugs are categorized by severity, and low-severity non-critical bugs are tolerated, as they do not impact the proper operation of the system, for the majority of users. NASA's SATC
Software Assurance Technology Center

The Software Assurance Technology Center is a NASA department founded in 1992 as part of their Systems Reliability and Safety Office at Goddard Space Flight Centre....
 managed to reduce number of errors to fewer than 0.1 per 1000 lines of code (SLOC
Source lines of code

Source lines of code is a software metric used to measure the size of a Computer software by counting the number of lines in the text of the program's source code....
) but this was not felt to be feasible for any real world projects.

One school of thought, popularized by Eric S. Raymond
Eric S. Raymond

Eric Steven Raymond , often referred to as ESR, is a computer programmer, author and open source software advocate. His name became known within the hacker culture when he became the maintainer of the "Jargon File"....
 as Linus's Law
Linus's Law

Linus's Law can refer to two different notions, both named after Linus Torvalds....
 in his essay
The Cathedral and the Bazaar
The Cathedral and the Bazaar

The Cathedral and the Bazaar is an essay by Eric S. Raymond on software engineering methods, based on his observations of the Linux kernel development process and his experiences managing an open source project, fetchmail....
, holds that popular open-source software
Open-source software

Open source software is defined as computer software for which the source code and certain other rights normally reserved for copyright holders are provided under a computer software license that meets the Open Source Definition or that is in the public domain....
 holds a better chance of having few or no bugs than other software, because "given enough eyeballs, all bugs are shallow". This assertion has been disputed, however: computer security specialist Elias Levy
Elias Levy

Elias Levy , was the moderator of the full disclosure vulnerability mailing list Bugtraq from May 14 1996, until he stepped down on October 15 2001....
 wrote that "it is easy to hide vulnerabilities in complex, little understood and undocumented source code," because, "even if people are reviewing the code, that doesn't mean they're qualified to do so."

Security vulnerabilities

Malicious software
Malware

Malware, a portmanteau from the words Malice and Computer software, is software designed to infiltrate or damage a computer system without the owner's informed consent....
 may attempt to exploit known vulnerabilities in a system — which may or may not be bugs. Viruses are not bugs in themselves — they are typically programs that are doing precisely what they were designed to do. However, viruses are occasionally referred to as such in the popular press.

Common types of computer bugs


  • Conceptual error (code is correctly written, but the programmer or designer really intended for it to do something else)
  • Division by zero
    Divide By Zero

    Divide By Zero was a United Kingdom video game developer. It was disestablished somewhere in 1996.Divide By Zero is a BBS originally started in 1996 in Columbia SC by Keven and Eric Coots....
  • Use of the wrong operator, such as performing assignment instead of equality test
  • Null pointer dereference
  • Infinite loop
    Infinite loop

    An infinite loop is a sequence of instructions in a computer program which control flow#Loops endlessly, either due to the loop having no terminating condition or having one that can never be met....
    s and infinite recursion
    Recursion (computer science)

    Recursion is a way of thinking about and solving problems. In fact, Recursion_ is one of the central ideas of computer science. Solving a problem using recursion means the solution depends on solutions to smaller instances of the same problem....
  • Using an uninitialized variable
    Uninitialized variable

    In computing, an uninitialized variable is a variable that is declared but is not set to a definite known value before it is used. It will have some value, but not a predictable one....
  • Accessing memory not owned (Access violation)
  • Resource leaks, where a system resource such as memory
    Memory leak

    In computer science, a memory leak is a particular type of unintentional memory consumption by a computer program where the program fails to release dynamic memory when no longer needed....
     or file handles
    Handle leak

    A handle leak is a type of software bug that occurs when a computer program asks for a Smart pointer#Handles to a resource but does not free the handle when it is no longer used....
     is exhausted by repeatedly allocating new units and never releasing them.
  • Buffer overflow
    Buffer overflow

    In computer security and computer programming, a buffer overflow, or buffer overrun, is an Anomaly in software condition where a process attempts to store data beyond the boundaries of a fixed-length buffer ....
    , in which a program tries to store data past the end of an array.
  • Deadlock
    Deadlock

    A deadlock is a situation wherein two or more competing actions are waiting for the other to finish, and thus neither ever does. It is often seen in a paradox like 'the chicken or the egg'....
  • Off by one error
  • Race condition
    Race condition

    A race condition or race hazard is a flaw in a system or process whereby the output and/or result of the process is unexpectedly and critically dependent on the sequence or timing of other events....
  • Arithmetic overflow
    Arithmetic overflow

    The term arithmetic overflow or simply overflow has the following meanings.# In a digital computer, the condition that occurs when a calculation produces a result that is greater in magnitude than what a given processor register or Computer storage location can store or represent....
     or underflow
    Arithmetic underflow

    Arithmetic underflow is a condition that can occur when the result of a floating-point operation would be smaller in magnitude than the smallest quantity representable....
  • Loss of arithmetic precision due to rounding
    Rounding

    Rounding involves reducing the number of significant digits in a number. The result of rounding is a "shorter" number having fewer non-zero digits yet similar in magnitude....
    , for instance in type conversion
    Type conversion

    In computer science, type conversion or typecasting refers to changing an entity of one data type into another. This is done to take advantage of certain features of type hierarchies....
     or in output formatting
  • Loss of arithmetic precision due to numerically unstable
    Numerical stability

    In the mathematics subfield of numerical analysis, numerical stability is a desirable property of numerical algorithms. The precise definition of stability depends on the context, but it is related to the accuracy of the algorithm....
     algorithms
  • Unprotected Critical section
    Critical section

    In concurrent programming a critical section is a piece of code that accesses a shared resource that must not be concurrently accessed by more than one thread of execution....
     resulting in failure to mutually exclude
    Mutual exclusion

    Mutual exclusion algorithms are used in concurrent programming to avoid the simultaneous use of a common resource, such as a global variable, by pieces of computer code called critical sections....
     access to a variable common to more than one concurrent process. Unprotected critical sections can lead to race condition
    Race condition

    A race condition or race hazard is a flaw in a system or process whereby the output and/or result of the process is unexpectedly and critically dependent on the sequence or timing of other events....
    s. Time-of-check-to-time-of-use
    Time-of-check-to-time-of-use

    A time-of-check-to-time-of-use bug is a software bug caused by changes in a system between the checking of a condition and the use of the results of that check....
     (TOCTTOU) is a form of unprotected critical section.
  • Unpropagated updates; e.g. programmer fixes bug for "myAdd" but forgets to fix same bug in "mySubtract" due to lack of code reuse (these errors mitigated by the Don't Repeat Yourself
    Don't repeat yourself

    Don't Repeat Yourself is a process philosophy aimed at reducing duplication, particularly in computing. The philosophy emphasizes that information should not be duplicated, because duplication increases the difficulty of change, may decrease clarity, and leads to opportunities for inconsistency....
     philosophy)
  • Comments out of date or incorrect; e.g. "Returns an integer", "The following function is bug-free"


Bugs in popular culture


  • In the 1968 novel 2001: A Space Odyssey
    2001: A Space Odyssey (novel)

    2001: A Space Odyssey is a science fiction novel by Arthur C. Clarke. It was developed concurrently with Stanley Kubrick's 2001: A Space Odyssey and published after the release of the film....
    (and the corresponding 1968 film
    2001: A Space Odyssey (film)

    2001: A Space Odyssey is a 1968 in film science fiction film directed by Stanley Kubrick, written by Kubrick and Arthur C. Clarke. The film deals with thematic elements of human evolution, technology, artificial intelligence, and extraterrestrial life, and is notable for its scientific realism, pioneering special effects, ambiguous and of...
    ), a spaceship's onboard computer, HAL 9000
    HAL 9000

    HAL 9000 is a fictional computer in Arthur C. Clarke's Space Odyssey saga. The novels, along with two films, begin with 2001: A Space Odyssey, released in 1968....
    , attempts to kill all its crew members. In the followup 1982 novel,
    2010: Odyssey Two
    2010: Odyssey Two

    2010: Odyssey Two is a best-selling science fiction novel by Arthur C. Clarke, which was released in January 1982. It is the sequel to 2001: A Space Odyssey and was nominated for the Hugo Award for Hugo Award for Best Novel in 1983....
    , and the accompanying 1984 film, 2010, it is revealed that this action was caused by the computer having been programmed with two conflicting objectives: to fully disclose all its information, and to keep the true purpose of the flight secret from the crew; this conflict caused HAL to become paranoid and eventually homicidal.
  • In the 1984 song 99 Red Balloons (though not in the original German version), "bugs in the software" lead to a computer mistaking a group of balloons for a nuclear missile and starting a nuclear war
    Nuclear warfare

    Nuclear warfare, or atomic warfare refers to the strategy for fighting or deterring military conflicts and terrorism when nuclear weapons are present....
    .
  • The 2004 novel The Bug, by Ellen Ullman
    Ellen Ullman

    Ellen Ullman is an United States computer programmer and author. She has written novels as well as articles for various publications, including Harper's, Wired , the New York Times and Salon.com....
    , is about a programmer's attempt to find an elusive bug in a database application.


See also


  • Glitch
    Glitch

    A glitch is a short-lived fault in a system. The term is particularly common in the computing and electronics industries, and in circuit bending, as well as among players of video games, although it is applied to all types of systems including human organizations and nature....
  • Software regression
    Software regression

    A software regression is a software bug which makes a feature stop functioning as intended after a certain event . A software performance regression is a situation where the software still functions correctly, but performs slowly or uses more memory when compared to previous versions....
  • ISO 9126
    ISO 9126

    ISO 9126 is an international standard for the evaluation of software quality. The fundamental objective of this standard is to address some of the well known human biases that can adversely effect the delivery and perception of a software development project....
    , which classifies a bug as either a defect or a nonconformity
  • Workaround
    Workaround

    A workaround is a bypass of a recognized problem in a system. A workaround is typically a temporary fix that implies that a genuine solution to the problem is needed....
  • Bug tracking system
    Bug tracking system

    A bug tracking system is a software application that is designed to help quality assurance and computer programmer keep track of reported software bugs in their work....
  • Bit rot
    Bit rot

    Bit rot, or bit decay, is a colloquial computing term used either to describe gradual decay of storage media or to facetiously describe the spontaneous degradation of a software program over time....
  • Anti-pattern
    Anti-pattern

    In software engineering, an anti-pattern is a design pattern that appears obvious but is ineffective or far from optimal in practice.The term was coined in 1995 by Andrew Koenig ,...
  • Unusual software bug
    Unusual software bug

    Unusual software bugs are a class of software bugs that are considered exceptionally difficult to understand and repair. There are several kinds, mostly named after scientists who discovered counterintuitive things....
    s (schroedinbug, heisenbug, Bohr bug, and mandelbug)


External links


  • (Thomas Huckle, TU München)
  • (Peter B. Ladkin et al., Universität Bielefeld)
  • (Nancy Leveson
    Nancy Leveson

    Prof. Nancy G. Leveson is a leading American expert in system safety and software safety. She is Professor of Aeronautics and Astronautics at MIT, United States....
    , University of Washington and Clark S. Turner, University of California at Irvine)
  • (Barbara Wade Rose, Canadian Coalition for Nuclear Responsibility)
  • (Nachum Dershowitz)
  • (Paul Niquette]
  • The error of this term is elaborated above. (Naval Historical Center)
  • (National Museum of American History
    National Museum of American History

    The National Museum of American History collects, preserves and displays American heritage in the areas of social, political, cultural, scientific and military history....
    )
  • An email from 1981 about Adm. Hopper's bug
  • (Simon G. Tatham
    Simon Tatham

    Simon Tatham is an English programmer known primarily for creating and maintaining PuTTY, a free software implementation of Telnet and Secure Shell clients for Win32 and Unix platforms, along with an xterm terminal emulator....
    )
  • (Mitch Allen)
  • - This project is to track bugs of popular open source software. (Packages for Fedora available)
  • - Crawls the web for the latest bugs in popular server software. It tries to display only open bugs.