Software bug

bugsbugsoftware bugsbuggydefectsprogramming errorsoftware defectsoftware errorbug fixingglitches
A software bug is an error, flaw or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended ways.wikipedia
794 Related Articles

Privilege escalation

jailbreakingjailbreakprivileged control
Other bugs qualify as security bugs and might, for example, enable a malicious user to bypass access controls in order to obtain unauthorized privileges.
Privilege escalation is the act of exploiting a bug, design flaw or configuration oversight in an operating system or software application to gain elevated access to resources that are normally protected from an application or user.

Crash (computing)

crashcrashescrashed
Bugs may have subtle effects or cause the program to crash or freeze the computer.
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.

Therac-25

Therac 25
Bugs in code that controlled the Therac-25 radiation therapy machine were directly responsible for patient deaths in the 1980s. One cause of the Therac-25 radiation machine deaths was a bug (specifically, a race condition) 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.
Additionally the overconfidence of the engineers and lack of proper due diligence to resolve reported software bugs are highlighted as an extreme case where the engineers' overconfidence in their initial work and failure to believe the end users' claims caused drastic repercussions.

Cluster (spacecraft)

ClusterAriane 5 Flight 501501
In 1996, the European Space Agency's US$1 billion prototype Ariane 5 rocket had to be destroyed less than a minute after launch due to a bug in the on-board guidance computer program.
The failure has become known as one of the most infamous and expensive software bugs in history.

Glitch

glitchescomputer glitchbugs
Problems with military gear during World War II were referred to as bugs (or glitches).
A glitch, which is slight and often temporary, differs from a more serious software bug which is a genuine functionality-breaking problem.

Defensive programming

bugsdefensive codingrobust programming
Various innovations in programming style and defensive programming are designed to make these bugs less likely, or easier to spot.

Logic error

logiclogic bugs
Bugs usually appear when the programmer makes a logic error.
In computer programming, a logic error is a bug in a program that causes it to operate incorrectly, but not to terminate abnormally (or crash).

Test-driven development

Test Driven Developmenttest-first developmentTDD
In test-driven development unit tests are written before the code and the code is not considered complete until all tests complete successfully.
Programmers also apply the concept to improving and debugging legacy code developed with older techniques.

Debugging

debugdebuggedanti-debugging
The process of finding and fixing bugs is termed "debugging" and often uses formal techniques or tools to pinpoint bugs, and since the 1950s, some computer systems have been designed to also deter, detect or auto-correct various computer bugs during operations.
However, the term "bug", in the sense of "technical error", dates back at least to 1878 and Thomas Edison (see software bug for a full discussion).

Linus's law

given enough eyeballs, all bugs are shallowLinus' Law
A school of thought popularized by Eric S. Raymond as Linus's law says that popular open-source software has more chance of having few or no bugs than other software, because "given enough eyeballs, all bugs are shallow".
In software development, Linus's law is the assertion that "given enough eyeballs, all bugs are shallow".

Type system

dynamicstatictype checking
Programming languages include features to help prevent bugs, such as static type systems, restricted namespaces and modular programming.
The main purpose of a type system is to reduce possibilities for bugs in computer programs by defining interfaces between different parts of a computer program, and then checking that the parts have been connected in a consistent way.

Software testing

beta testingtestingbeta
Software testers are people whose primary task is to find bugs, or write code to support testing.
Test techniques include the process of executing a program or application with the intent of finding software bugs (errors or other defects), and verifying that the software product is fit for use.

Heisenbug

HeisenbugsBohr bugSchroedinbug
Other bugs may stop occurring whenever the setup is augmented to help find the bug, such as running the program with a debugger; these are called heisenbugs (humorously named after the Heisenberg uncertainty principle).
In computer programming jargon, a heisenbug is a software bug that seems to disappear or alter its behavior when one attempts to study it.

Race condition

race conditionsdata racerace
One cause of the Therac-25 radiation machine deaths was a bug (specifically, a race condition) 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.
It becomes a bug when one or more of the possible behaviors is undesirable.

Debugger

debuggersdebuggingDebugger front-end
Programs known as debuggers help programmers locate bugs by executing code line by line, watching variable values, and other features to observe program behavior.
A "trap" occurs when the program cannot normally continue because of a programming bug or invalid data.

Fault (technology)

faultfaultscondition
A software bug is an error, flaw or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended ways.

Debian

Debian GNU/LinuxDebian LinuxDebian Project
An example of this actually happening, accidentally, was the 2008 OpenSSL vulnerability in Debian.
The perceived poor maintenance and prevalence of bugs in SLS motivated Murdock to launch a new distribution.

Software system

software systemssystemssystem
A software bug is an error, flaw or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended ways.

Bug tracking system

bug trackingbug trackerbugtracker
Proposed changes to software – bugs as well as enhancement requests and even entire releases – are commonly tracked and managed using bug tracking systems or issue tracking systems.
A bug tracking system or defect tracking system is a software application that keeps track of reported software bugs in software development projects.

Computer program

programprogramscomputer programs
A software bug is an error, flaw or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended ways.

Code review

code reviewspeer code reviewReviews
As a part of code review, stepping through the code and imagining or transcribing the execution process may often find errors without ever reproducing the bug as such.

Hang (computing)

hangfreezefreezes
Bugs may have subtle effects or cause the program to crash or freeze the computer.

Buffer overflow

buffer overflowsbuffer overrunbuffer overruns
In information security and programming, a buffer overflow, or buffer overrun, is an anomaly where a program, while writing data to a buffer, overruns the buffer's boundary and overwrites adjacent memory locations.

Eric S. Raymond

Eric RaymondEric Steven RaymondRaymond, Eric
A school of thought popularized by Eric S. Raymond as Linus's law says that popular open-source software has more chance of having few or no bugs than other software, because "given enough eyeballs, all bugs are shallow".
Raymond coined an aphorism he dubbed Linus's law, inspired by Linus Torvalds: "Given enough eyeballs, all bugs are shallow".

Programming language

programming languageslanguagedialect
Programming languages include features to help prevent bugs, such as static type systems, restricted namespaces and modular programming.
However, type errors cannot be automatically detected until a piece of code is actually executed, potentially making debugging more difficult.