Heisenbugs, Bohrbug, Mandelbugs, Schroedinbugs

Parecen insultos pero no lo son. De los heisenbugs había oído hablar hace tiempo en ¿Joel on Software? ¿Coding Horror? El resto de estos pintorescos tipos de bugs no los conocía. Muy curiosos.

Heisenbugs

Un heisenbug es un bug que desaparece o altera su comportamiento al intentar depurarlo.

El nombre es un juego de palabras con el “Principio de Incertidumbre de Heisenberg”, que erróneamente se suele identificar con el efecto observador, y que, este si, afirma que el simple hecho de observar un fenómeno puede cambiar su resultado (vaya, yo soy uno de estos que confundía ambos, ¿quizás por Jurassic Park?).

Una causa común de los heisenbugs es que al ejecutar un programa en modo de depuración a menudo se limpia la memoria antes de lanzar la ejecución.

Bohrbug

El bohrbug (del modelo atómico de Bohr) sería el antónimo de los heisenbug. Es un bug que no cambia su comportamiento.

Mandelbugs

Un mandelbug (por el conjunto de Mandelbrot) es un bug cuyas causas son tan complejas que su comportamiento parece caótico.

Schroedinbugs

Un schroedinbug es un bug que no se manifiesta hasta que alguien, leyendo el código o usando el programa de forma inusual, descubre que nunca debió haber funcionado, momento en el cuál deja de funcionar para todo el mundo. Y aunque parezca imposible, este tipo de bugs existe.

El nombre de schroedinbug deriva de la paradoja del gato de Schrödinger, en el que teniendo un gato en una caja, no podemos saber si está vivo o muerto sin abrir la caja, y por lo tanto se considera que se encuentra vivo y muerto a la vez hasta que la abramos.

Stotle

El stotle se da cuando, al introducir una serie de datos al programa que parecen correctos (pero no lo son), obtenemos una salida incorrecta. Como la entrada no era correcta, no se trata de un bug, pero lo puede parecer.

Su nombre deriva de Aristotle (Aristóteles), porque el programador asume que el error se encuentra en el programa y no la entrada, al igual que mucha gente asumía en su día que Aristóteles debía estar siempre en lo cierto y no cuestionaban sus ideas.

Bugs de fase lunar

Se usa de forma humorística para referirse a bugs que parecen depender de factores aleatorios y casi esotéricos.

Fantasma en el código

Se llama así a cualquier bug que no se identifica durante la fase de pruebas. Esta clase de bugs se pueden encontrar a menudo en porciones de código que no suelen ejecutarse a menudo.

Vía

Comentarios
  1. Kartoffel

    Curioso. En el Stotle, una explicación alternativa podría ser la lógica aristotélica: para que un razonamiento sea válido, tienen que ser ciertas las premisas y correctos los silogismos o las argumentaciones. La entrada sería la premisa y el algoritmo o programa el razonamiento deductivo. Pero bueno, no me hagáis mucho caso xD

    Responder

  2. […] Heisenbugs, Bohrbug, Mandelbugs, Schroedinbugs (tipos de bugs)mundogeek.net/archivos/2008/05/11/heisenbugs-bohrbug-mandelb… por locovich hace pocos segundos […]

    Responder

  3. Yo tengo una en el curro que me manda muchos stotles. Es una putada, porque te revisas el código y no le encuentras explicación hasta que te dices “¿no será que se ha equivocado?”. También la culpa es mía por no hacer como House y presuponer que todo el mundo miente (o se equivoca).

    Responder

  4. Por fin encontré el tipo de bug que tengo con el Xorg (un bug de Fase Lunar), ya que aveces me carga, y otras, tengo de reiniciar la mákina para ver si me carga.
    Lo raro es que esto no lo tenía antes de instalarme en otra partición el Kubuntu 8.04, será eso o un simple bug del ubuntu???

    Responder

  5. markintosh

    jajaja lo que no entendi fue lo del gato era una historia mas larga y te falto un tanto o porke no se puede saber si un gato esta muerto encerrandolo en una kaja ?

    rayos ….lo ke me impresiono fue lo del SCHROEDINBUG lo investigare no sera acaso un extraño error de lectura de un compilador o akaso un compilador ke aplico los defaults mas estrictamente ke deberia hacerlo o algun compilador resuelvelotodo.

    saludos

    Responder

    • elzumba70

      Es porque faltó poner que dentro de la caja hay un veneno que el gato debe comer para morir… Por eso al cerrar la caja, y no poder ver si el gato ha comido o no el veneno, se supone que el gato está tanto muerto como vivo. Eso es, claro, hasta que abramos la caja.

      Responder

  6. Calabacín

    Los Schroedinbugs se han usado en ocasiones de manera intencionada para evitar ingeniería inversa. Evidentemente, al ser intencionado no era un bug, pero se basaba en el mismo principio.

    En varias partes del programa ponías código que si se ejecutaba en un depurador el programa terminaba.

    No me preguntéis por qué sé esto. Una pista: nunca he hecho un programa así 😉 Y de hecho no sé cómo lo hacían realmente. Supongo que comprobaban el reloj de alguna manera (en una función que se llamaba cada segundo o yo qué sé).

    Responder

  7. scitelhta

    Por que les dicen inusuales? Yo no recuerdo un bug que no este en estas clasificaciones

    Responder

  8. Muy buena la lista, la verdad es que era algo que desconocía totalmente y que como programador junior me interesa mucho para hablar con propiedad. Me han encantado los Schroedinbugs, seguramente porque también me pierde la quántica…

    Responder

  9. […] a programadores entre otras cosas porque sino ¡no se entienden! xD. Comenzamos con algunos tipos de bugs muy pintorescos listados por Mundo Geek y para muestra un botón: Heisenbugs Un heisenbug es un bug que desaparece […]

    Responder

  10. Pablo Perdomo

    Pa cuando empece a programar en C tuve cientos de Heisenbugs relacionados a los punteros.
    Especialmente uno que solo ocurria en Visual Studio. Me molesto muchisimo que en modo debugger andara todo bien y en modo normal se muriera todo. En fin como tenia que compilar con Cyigwin y solo usaba Visual C++ porque no tenia un Cygwin compatible con vista no le di importancia pero si que lo probe miles de veces con Cygwin antes de entregarlo (era una tarea de la facultad).

    Responder

  11. […] el pasado ya hablamos de bugs especialmente complejos y complicados de depurar en Heisenbugs, Bohrbugs, Mandelbugs y Schroedinbugs. Esta vez hablaremos de bugs especialmente famosos. Y sufridos por otros, que siempre es menos […]

    Responder

  12. […] bugs […]

    Responder

  13. […] Bug “Monstruo del Lago Ness”: cualquier bug que sólo ha podido ver una persona, y no puede ser reproducido. Primo hermano del heisenbug, el mandelbug o el schroedinbug […]

    Responder

  14. […] Bug “Monstruo del Lago Ness”: cualquier bug que sólo ha podido ver una persona, y no puede ser reproducido. Primo hermano del heisenbug, el mandelbug o el schroedinbug […]

    Responder

  15. […] Bug “Monstruo del Lago Ness”: cualquier bug que sólo ha podido ver una persona, y no puede ser reproducido. Primo hermano del heisenbug, el mandelbug o el schroedinbug […]

    Responder

  16. […] ocasiones, programar puede llegar a ser muy frustrante. No es de extrañar que los comentarios de algunos proyectos de software estén llenos de quejas, […]

    Responder

  17. nicolas

    como soluciono el bug de face lunar y el stole?

    Responder

Deja un comentario