What Are Unusual Software Bugs?
While some software bugs are simple and easy to find, others are more complex and can be a programmer's worst nightmare. Unusual software bugs refer to a class of programming flaws that are extremely difficult to both comprehend and repair. There are several types, primarily named after the historic scientists who introduced theories that personify their strange behavior.
This type of programming bug only manifests after the programmer reading the code or the person using the program somehow discovers that it never should have worked to begin with. At that point, the program ceases to function until it's repaired.
The name Schroedinbg originates from the Schrodinger's Cat illustration proposed by Erwin Schrondinger.
A Heisenbug is one of the most common of unusual software bugs. This bug is very unique as it alters or conceals its characteristics when researched. The best example would be an error that is encountered in a release-mode compile but not found when researched in debug-mode. This type of bug is often the result of a race condition.
One reason for this unusual behavior is due to the fact that performing an execution in debug mode typically clears out the memory before the program launches, forcing variables onto stack locations rather than maintaining them in registers.
The Heisenbug got its name from the Heisenberg Uncertainty Principle, a concept that describes how observers impact the measurements of what they are observing, by the mere act of observing; this is known as the Observer Effect. Aptly titled, the Heisenbug is just as complex as the quantum physics term it was named after.
Often referred to as a Bohr bug, the Bohrbug is an unusual software bug that consistently makes its presence known under conditions that are either well-defined, possibly unknown or both. Unlike a Heisenbug, the Bohrbug does not hide or modify characteristics when research is performed. This makes the errors much easier to fix yet harder to actually locate. These type of software bugs may remain in the software all the way up to and during the operational stage.
The Bohrbug received its name from the Bohr Atom Model proposed by Niels Bohr in 1913.
This unusual software bug is named after Benoit Madelbrot, a fractal innovator of the early 1900s. A Mandelbug is a programming bug with such a level of complexity that its behavior appears to be malicious. The term is often used to refer to a bug whose behavior doesn't appear malicious, but has such a high level of complexity that it appears to be no practical solution. A prime example would be a bug generated from an error in the fundamental design of an entire operating system.
The Unusual Family
There are numerous inconsistencies in documented statements regarding the association between Heisenbugs, Bohrbugs and Mandelbugs. Some say that Mandelbugs are actually Bohrbugs while Bohrbugs and Heisenbugs are antonyms. A recently published column in IEEE considers most software bugs to be either Bohbugs or Mandelbugs. The complexity of the Mandelbug is assumed to be the result of lengthy delays in between fault activation and failure occurrence or by the presence of other components such as the hardware, the operating system or other software. Since the behavior of a Heisenbug is triggered by a debugger or other means of investigation, the column considers it a Mandelbug.