Breaking Bad in your code or how software bug can make fun of you?

First of all, what is “software bug”? Everyone understands that it isn’t an insect ( well, not anymore, anyway 🙂 ).
According to Wikipedia: software bug is an error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended ways.” Some bugs can be detected easily during development. But some bugs might be found late in the development process.

There have been many attempts to classify the bugs.
Most of these represent the general classification which is valid in the cycle of software development and evolution. The classification scheme given in Orthogonal Defect Classification defines eight categories of defects as assignment, checking, algorithm, interface, timing/serial, function documentation, and build/pack/merge. Most everything in such classification understandable, useful and boring.
But, sometimes, going through a code, you may face a dark horse from the bug’s world. There are some software bugs that involve conditions so strange and complicated no one can understand their causes:

#1 Heisenbug

The most bossy bug in this list was named after Walter White aka. Heisenberg, from Breaking Bad, and… Wait… It seems like something is wrong… Here it is! Actually, it was named after theoretical physicist Werner Karl Heisenberg and his uncertainty principle.
This is a type of bugs which disappear or change their characteristics as soon as somebody’s trying to study them. The examples of a heisenbug can sometimes be found in a program’s released version, but never in its debug-mode version. Such a bug can also be caused by the race condition.
Heisenbugs may be viewed as instances of the observer effect in information technology. Frustrated programmers may humorously blame a heisenbug on the phase of the moon, or (if it has occurred only once) may explain it away as a soft error due to alpha particles or cosmic rays affecting the hardware.

#2 Bohrbug

To ever meet this bug you’ll need a ghosts basters skill. Why? Cos nickname for this bug is “ghosts haunting the code”.
Bohrbugs often sit in those pieces of source code which are invoked least often. By opposition to Heisenbug, a bohrbug is a “good, solid bug”. Like the deterministic Bohr atom model, it doesn’t change behavior, but still, it is pretty difficult to find and fix. This type of bugs manifests itself consistently only under some well-defined, but often unknown or unique set of conditions or entered data. Luckily, these bugs don’t alter when researched.

#3 Mandelbug

Named after Benoit Mandelbrot’s fractal, a computer bug of this kind has such complex causes that its behavior gets chaotic. Some use the term “mandelbug” to refer bugs with very complex causes which make it impossible to find some practical solution. Such a bug can be caused, for instance, by some flaw in the entire system’s fundamental design.
However, based on the analogy with the Turing test, the existence of this category of bugs is controversial: If it’s impossible to distinguish a bug whose behavior is similar to the chaotic and bug whose behavior is chaotic, then the difference between Mandelbug and Heisenbug not essential, since impossible to tell who is who.

#4 Schroedinbug

This bug was named after Erwin Schrödinger and his famous thought experiment with a cat and box. This bug only manifests when somebody using a program in some unusual way or reading source code notices it should have never worked at all, and at this point that the program stops working promptly right until it’s fixed. Despite the proximity of the occult, it happens. Some programs are fraught with latent Schroedinbug for years.
With the statement that the system should have never worked under these circumstances before, despite clear evidence of the opposite (the system worked before reading the code!), and because of complexity of computing systems the programmer can only appeal to the supreme and hidden forces.

All of it cases of program failure could be called as “Phase of the Moon bugs”, a random parameter on which something is said to depend. And that’s not all of bugmonsters you may find.

By following the dangerous path of developers and testers, one day you may play hide and seek with Higgs-Bugson, Hindenbug, Loch Ness Monster Bug, Mad Girlfriend Bug, etc., in program code. Be aware, stay cool!

Notes

  • “The Jargon File: Schroedinbug”
  • CATB.org, “phase of the moon”
  • CATB.org, “Heisenbug”, “Bohrbug”, “Mandelbug”, “Schroedinbug”.
  • Wikipedia “Heisenbug”
  • “Log Book With Computer Bug”, National Museum of American History, Smithsonian Institution.
  • Bugs or Defects?
  • List of Common Bugs and Programming Practices to avoid them Vipindeep V, Pankaj Jalote Indian Institute of Technology, Kanpur
  • “A Story About ‘Magic” by A. Hacker Folklore
Author: