Hace 14 años | Por natrix a asinorum.com
Publicado hace 14 años por natrix a asinorum.com

En un foro de una importante página de programadores informáticos, se debatía sobre cuál era el fallo de programación (bug) más difícil de encontrar que uno se había encontrado a lo largo de su vida. El sistema permitía la votación de las respuestas, con lo que al mismo tiempo tenía un valor de encuesta. El error que ocupaba el primer puesto era el siguiente. El foro en inglés: http://stackoverflow.com/questions/169713/whats-the-toughest-bug-you-ever-found-and-fixed/169773#169773

HeavyBoy

Wow lol Que retorcido el cabrón.

D

acojonante, gran meneo

Firmado: alguien que ha peleado con muchos bugs

g

#3 Si, fue lo primero que vi al entrar en el blog...

m

El meneo esta cojonudo Aunque de esa página prefiero el (ya meneado) topic sobre chistes informáticos

oLiMoN63

#3 FAIL week

Genko

Maldita economía de bytes que nos inculcaron... con lo fácil que es definir variables o campos gigantescos para no tener estos problemas [esto... ¿se nota que es irónico?]

Manda huevos también guardar una fecha en texto, aunque a saber de qué sistema estamos hablando

Fingolfin

Hace poco se descubrio en linux un fallo en el código que se encargaba de insertar un segundo a final de año a petición de ntp. Me parece aun más raro que esto...

natrix

#3 Es cierto, y alguien lo dice en un comentario del blog, pero es más un fallo de traducción que de concepto.

D

y hablando de bugs, que daño han hecho los punteros a los programadores

dulaman

Pues no me parece tan retorcido el fallito. A mí eso mismo ya me ha producido bugs al imprimir facturas con esa fecha (no necesariamente en esa fecha).

dreierfahrer

Vaya mierda de bug... Eso es lo mas extraño que tienen? yo he visto maravillas de java y de microsoft que le dan mil vueltas....

dreierfahrer

#14 Yo he visto fallos en aplicaciones que ocurrian SOLO con el tema por defecto de windows vista -un bug de windows, claro, pero unas risas encontrar el pq....- y otros que pasaban solo con WS a los que se accedia a traves de no recuerdo que tipo de proxy por ssl teniendo mcafee...

Y #11 lo que ha hecho daño a los programadores es que programe tanta gente a la que no le gusta programar y la subcontratacion... pero paso de ponerme serio

Lo que de verdad ha hecho un daño HORRIBLE a la programacion es el ctrl+c, ctrl+v.

Programar es un arte, el que lo dude miserable!

araujo

La verdad es que es un error de principiante. Cuando alguien elige un formato para representar algún valor, inmediatamente debe buscar la combinación más larga posible para indicar la longitud de la cadena. Está claro que lo difícil es buscarlo, pero creo que aquí, pensar en cualquier otra posibilidad como causa del error, sería una tontería.

D

Para fallos el del Zune, jaja, menudo ridículo hizo microsoft.

kikogo

#13 #14 "Yo... he visto cosas que vosotros no creeríais... atacar naves en llamas más allá de Orión, he visto rayos C brillar en la oscuridad cerca de la puerta Tannhäuser.

Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia.

Es hora de morir."

j

El fallo informático mas difícil del mundo es el que se aproxima por los jueces.

Vauldon

Creo que el peor bug que he escrito en mi vida, era un puntero que bajo ciertas circunstancias, podia terminar apuntando a puntero que apuntaba a su vez al primer puntero, imaginaos el lio....

S

#18 Simplemente genial.

Lobo_Manolo

#14 En realidad no se trata de que el bug sea complicado, sino que sea complicado encontrar el fallo, sobre todo, vistos los síntomas.

Tú te encuentras con que un programa falla 3 días al año y funciona bien el resto del tiempo y alucinas pepinillos (aunque admito que lo primero que podría ocurrísele a uno sería mirar que pasa con las fechas).

Pero miremos el segundo caso: una cámara falla cuando el jefe entra en plano. Ahora dime lo que hay que mirar, sin mirar la solución

darthdeckard

¿y donde queda el error que dio nacimiento a Fenomenoide (freakazoid)?

s

El caso de abajo es mucho más retorcido que un simple buffer overflow del que hablamos.

jag2kn

voto igual por ese #18 muy bueno

bage

#20 Discúlpame colega, pero eso no es un bug, es un error lógico
Sé que suena a que es lo mismo, pero NO lo es.

dreierfahrer

#22 El segundo me parece cojonudo, aparte de lo que es el problema es el descojone que casque cada vez que entra en escena el super sheriff de la empresa lol.

Lo primero que hay que hacer -he visto la solucion, es lo primero que yo haria- es un mail que pasara por todos tus compañeros comentando como la fealdad de el CEO ha destruido un maravilloso software.

Ese error si mola, es hasta gracioso, pero el que ha ganado parece 'facil' de sacar -vamos, que es muy curioso, pero no me parece demasiado dificil de sacar debuggeando, de hecho el tercer miercoles que te entre canguelo de la ostia que se ha pegado la aplicacion ya sabras que 'solo casca los miercoles' sin mirar el codigo y el primer miercoles de octubre, si no lo tuvieras ya arreglado, fijo que ibas con dodotis al curro-

court

Pues no sé... a mi me parece que con un depurador los fallos de ese tipo se encuentran en 0 segundos...

D

Pues yo lo he visto a la legua

D

Bah! se pone en el manual y ya está

D

Conforme lo estaba leyendo, cantaba a la legua que era un overflow.
En mis primeros tiempos, con un compilador de C de hace casi 20 años, se me ocurrió abreviar el nombre de la variable longitud (int long=0;)
No recuerdo el error de compilación, pero no tenía nada que ver con esa línea.

#18 Simplemente genial. Por extraño que parezca, en este caso, el usuario tenía razón.

Azicuetano

Un error que nos costó bastante encontrar:
Una aplicación de reserva de coches online. Al seleccionar ciertas fechas de inicio y fin el programa no calculaba bien los días de reserva y cascaba... Al final era porque la función encargada de contar los días transcurridos entre dos fechas lo calculaba contabilizando los segundos de diferencia entre ambas fechas. Pues bien, cuando entre la fecha de inicio y fin estaba el día donde se adelantaba una hora el reloj o se atrasaba una hora, el calculo salía con decimales y se iba todo al carajo... ¡Alucinábamos con el error hasta que caímos en el tema horario! ^_^

C

No es un bug, pero a mi me hace bastante gracia cuando ves a gente que empieza a picar C#. Como algunos sabreis, y si no os lo digo yo, la declaracion y acceso a arrays multidimensionales se hace con comas, pej: "int[,] matriz" nos serviría para un array de 2 dimensiones de enteros, en lugar del típico "int[][] matriz" que usaríamos en C/C++ o Java.

El caso es que es un error bastante fácil de solucionar: Un vistacito a la msdn o a google y rápidamente lo arreglas, pero te encuentras gente en la facultad que llega a echarse horas intentando hacer compilar los corchetitos de marras lol

p

Yo antes era de los que pensaba que C++ era lo mejor. Ahora me da pánico. Espero que se generalicen alternativas mejores como D (que es básicamente lo que C++ debería haber sido desde el principio) o cualquier otro lenguaje con GC.
De lejos lo más agradable para programar, por la claridad, facilidad de uso y por la sintaxis que evita que tú mismo metas la pata sin querer, es Python. Dicen por ahí que Ruby es aun mejor, pero aun no lo he probado.

Comandante007

¿esto en portada?
Eso explica el porqué del concepto que la gente tiene de los informáticos...

p

Yo antes era de los que pensaba que C++ era lo mejor. Ahora me da pánico. Espero que se generalicen alternativas mejores como D (que es básicamente lo que C++ debería haber sido desde el principio: más claro, bien definido, con GC opcional Y con punteros si los quieres, compilado, etc.) o cualquier otro lenguaje con GC.
De lejos lo más agradable para programar, por la claridad, facilidad de uso y por la sintaxis que evita que tú mismo metas la pata sin querer, es Python (probé también Ada, pero es demasiado estricto para mi gusto). Dicen por ahí que Ruby es aun mejor, pero aun no lo he probado. Espero con ansia que Google o el equipo de PyPy saquen por fin la máquina virtual de Python con JIT para que muchas más aplicaciones sean viables en estos lenguajes.
En serio, a estas alturas los programadores no deberían andar aun perdiendo tiempo en asignar memoria a mano excepto para el código más crítico. Es una tarea repetitiva, que genera bugs a punta pala y no aporta ningún beneficio.

D

Yo siempre que quiero guardar una fecha de esa forma, busco precísamente la fecha más larga, que es un miércoles de septiembre a partir del día 10.

LBrown

Ya ves que que cosa; pues yo tengo varios fallos cada semana lo suficientemente chungos como para plantearme seguir con esta mierda.

sanh

... no es el más dificil que he resuelto, pero sí el último; trabajando con una aplicación que genera órdenes contables me doy cuenta de que sólo funciona correctamente si la ejecuto en debug, aún sin tocar ninguna variable; si se ejecuta en background no funcionaba bien... después de 1 día entero al borde del suicidio (la aplicación es muy compleja), encuentro el error en un commit transaccional al que le "faltaba" añadir un tiempo de espera....
Dichoso commit work sin wait!!!!

Y haciendo honores a mis antiguos compañeros de trabajo... "Unknown character 0xb7". Ese error se lo encontraron compilando un programa simplón de C puro en una línea tristona como pudo ser un printf cualquiera. Comentaron la línea del error, la borraron, seleccionaron el texto y escribieron el "Hola Mundo!".... y el error persistía, hasta que después de algunas horas.... Ctrl+E ... y descubrieron una gigantesca línea en cuyo final aparecía agazapado el puntito del 3 ("·") ... el famoso unknown character ^^ ahora ya menos unknown lol

.... el error más dificil... siempre está por llegar

D

#28 Esas averías no son nada raras hoy día, en el opel corsa C si pones el móvil en el bolsillo de la puerta izquierda te salta avería de airbag. Por no contar las veces que se descodifican llaves y mandos de cierre por este tema.

DiThi

#39 No hace falta que esperes a un JIT para usar Python en casi todo: puedes reescribir fácilmente las partes críticas en C, con Cython.

Secundo lo de D. Te votaría positivo si pudiera. Desde el ban day no he podido votar nada.

i

#18, yo iba a poner también el de las 500 millas. Es fabuloso.

http://www.microsiervos.com/archivo/ordenadores/email-500-millas.html

k

El error más cachondo que he tenido yo fue con la clase SimpleDateFormat de la librería de java. Esos son los errores más graciosos, tiendes a pensar que el código de las librerías de java es infalible. Pero si usas el mismo objeto SimpleDateFormat en varios hilos formateando varias fechas y si no sabes que la maldita clase tiene internamente variables static que modifica al hacer un "parse" (menuda chapuza) y no es "thread safe", los resultados obtenidos son inquietantes lol porque no tienes ni puta idea de cómo puedes estar obteniendolos tan mal... Estuve varios días con este tema.

yoprogramo

#46 ¿no será que usas el mismo SimpleDateFormat en distintos hilos? Porque esa clase no es estática ni ninguna de sus fuciones lo son. Un simple new SimpleDateFormat ("...") y el objeto obtenido no puede ser modificable fuera del alcance de su definición...

No es lo mismo "thread safe" que tenga elementos estáticos. Obviamente si modificas el mismo objeto desde distintos hilos y no controlas las condiciones de concurrencia te pasarán cosas raras, para eso lo mejor es crear un objeto nuevo por cada hilo (o sincronizar el objeto).

D

La dificultad de depurar es inversamente proporcional a la posibilidad de reproducir. Las relacionadas con fechas suelen ser complicadas. Pero las peores son los bugs en hilos.

D

Siempre recordaré un problema que tuvo mi hermano con una pareja de colegas: cuando ella encendía el ordenador, todo iba bien, pero cuando lo encendía él, tenía que darle al reset porque se colgaba nada más empezar a arrancar.

Tras echar un vistazo y pedirles a cada uno que lo encendieran, descubrió que era por el monitor (uno de 17 pulgadas, muy viejo). Ella encendía primero el monitor y luego la CPU, pero el lo hacía al revés. Cuando el monitor se encendía daba un tirón tan fuerte de corriente que, si la CPU ya estaba encendida, se colgaba.

a

#45 El de las 500 millas es muy divertido pero tiene pinta de ser falso. Solo hay que saber como funcionan las redes para darse cuenta que no tiene nada que ver la distancia con el tiempo de respuesta, y que un timeout de 3 ms no lo he visto configurado en ningún sendmail en mi vida.

k

#47 Precisamente eso es lo que digo, el mismo objeto SimpleDateFormat en varios hilos. Una clase no necesita ser necesariamente estática para que sea "thread safe". Simplemente en su momento supuse que el objeto SimpleDateFormat simplemente guardaba el patrón y que el método parse utilizaba sólo variables locales (¡al menos yo lo habría programado así!). Obviamente pasé ampliamente de la documentación de la clase hasta que llevaba un rato con el problema y lo había acotado.

Como dice #48, los problemas relacionados con condiciones de carrera suelen ser los que producen resultados más desconcertantes y difíciles de depurar.

F

#31 Para eso se inventaron las pruebas unitarias

D

Pues yo el peor fallo que me he encontrado es un día que quería imprimir y no podía. Quise ver el código fuente de los drivers y... NO ESTABA!

D

No me puedo creer que nadie haya mencionado a los casts implícitos y a los null pointers.

T

La verdad que no me ha parecido algo muy dificil de detectar. Ya me gustaría ver a esta peña intentando realizar detecciones de colisión a nivel de pixels.
#2, ¿de verdad has peleado con muchos bugs y este te ha parecido acojonante? 0.o

ampos

Yo la cosa más rara que he visto fue con mi primer AMD K6II-350mhz, creo recordar. Lo pido al distribuidor, que era además el primer AMD que montaban.

Ya en casa, instalo windows, instalo photoshop y trabajando se apagaba el ordenador.

Total, lo mando al distribuidor, y me lo devuelven diciendo que a ellos les funcionaba perfectamente.

Sigo con él, y lo mismo, peta.

Consigo sacar un procedimiento que siempre lo colgaba: abrir photosop y crear un documento nuevo de nosecuantos megas. Siempre se apagaba.

Lo mando de nuevo y les explico qué hacer para que les petase. Me llaman diciendo que no, que no peta.

No es posible, a mí siempre se me apagaba.

Me cabreo y cojo el coche y me voy 100 kms a donde estaban ellos. Hago yo las pruebas y ¡no se apagaba!

Vuelvo a casa con el ordenador, y me seguía haciendo lo mismo.

Un "tonto" de esos que dicen tonterías tol día me dice "cambialo de enchufe, a ver..."

Sopotamadre... fue enchufarlo en otro enchufe (¡a tan sólo 10 cms de distancia!) e iba como la seda.

Nunca he entendido el porqué...

MycroftHolmes

NO ES UN BUG, ES UN FEATURE

Cantro

#58 A mí me pasó con un Pentium 120 algo parecido. En mi caso era por una toma de tierra: al encender el equipo, si el protector de pantalla no estaba atado a una toma de tierra el ordenador se colgaba.

Igual tiene que ver con la toma de tierra de tu enchufe.

D

Yo tuve un error con un juego de PC. Se llamaba Dreamweb y funcionaba en MSDOS.

Era una especie de aventura gráfica que tenia la opción de grabar partida. Si jugaba y no grababa partida, todo perfecto, pero a la que grababa, cerraba el juego y lo volvía a abrir, ya no arrancaba, se quedaba la pantalla en negro. Era pirata, así que me lo compré original pensando que así se arreglaría y... el fallo seguía. Formatée el pc varias veces y seguía haciéndolo.

Además el juego era puñetero, pedía 592 KB de memoria convencional, y yo tenia 596. En aquel entonces tenía la costumbre de no abrir el Windows si quería jugar a juegos de MSDOS, sino que daba al F8 y elegía "solo símbolo de sistema". Tenía cargados drivers de ratón, soundblaster, etc. Y nada, que el juego no volvía a cargar si grababa partida.

Y bajo Windows sí que cargaba, pero el sonido iba intermitente todo el rato y se hacía muy incómodo.

Solución? No la hubo, hasta que no me cambié de PC 3 años después (de un pentium 133 pasé a un AMD k62 300Mhz) no me funcionó. Para entonces ya había mandado a la mierda ese juego y ya no me apeteció jugarlo.

Esto me hizo no volver a comprar un juego de PC a menos que lo haya jugado pirata antes y me haya gustado mucho. Para jugar, nada mejor que una consola, con hardware dedicado exclusivamente a ello y sin fallos raros (al menos en los tiempos en que yo usaba consolas (gameboy, supernintendo), las de ahora no sé qué tal serán).

D

No os engañéis. El fallo informático más difícil del mundo está entre la silla y el teclado, y no es informático.

HACKERZ STOLE MAH WALLET!

D

#56 no me suelo reir de los comentarios de nadie pero es que esto me puede... ¿de verdad que tú has peleado con algún bug alguna vez en tu vida? ese error es extremadamente difícil de detectar por sus características pero paso de explicarte más porque sería ponerme a tu nivel (casi cero)

sin acritud

i

http://en.wikipedia.org/wiki/Deadlock

Sin duda, el problema más difícil de solucionar, sobre todo cuando las "race conditions" no están bien definidas o no son óptimas.

AunEstoyAqui

y que tal este fallo Popular.es, la nueva web del PP, hackeada

Hace 14 años | Por blogal a netoraton.es

"El error técnico está en los controles de sesión; es un defecto de programación de base. Mezclan autentificación por sesiones, cookies y variables, una auténtica chapuza de programación."

T

#63, lol cuanta ira junta, jajaja. No te piques que vas a generar un segfault, solo te hacía un comentario. Y no, mi nivel no es casi cero, es solo cero.
Venga, una tilita y a seguir peleando

PD: con respecto a la pregunta que me haces: "Si, estoy haciéndolo ahora mismo con este mensaje ;)"

p

Yo sufrí un bug en una fotocopiadora durante dos días seguidos en la Escuela en la que estudiaba. Mis compañeros de curso siguen descojonándose cada vez que me ven. El bug consistía simple y llánamente en que la fotocopiadora dejaba de funcionar en mi presencia. Era una fotocopiadora de monedas qu estaba en un pasillo. Hacías cola hasta que te tocaba y justo en ese momento la fotocopiadora pasaba olimpicamente de hacer copias y lo mejor es que hasta que no me iba no volvía a funcionar. No es que se apagase, simplemente no rulaba. Al rato volvía y la gente estaba haciendo fotocopias. Me ponía a la cola y cuando me tocaba ¡zas! se escoñaba. A la tercera vez que me pasó se lo conté a un par de amigos que, entre bromas, me acompañaron a dar fé del evento, y volvió a ocurrir.
Me tuvieron que hacer las fotocopias.
Nunca supe que fué (supongo que mala suerte), pero la cosa duró dos días. Pensé que era una broma que alguien me estaba gastando, pero nunca me lo contaron y tampoco se me ocurre como pudieron hacerlo.

D

#66 vaya no sabia que un worm podia detectar bugs, enhorabuena, has llegado a tu weakest precondition

L

Me parece un atropello guardar la fecha como una cadena de texto, así, de esta manera, pero bueno lol

Desde luego es un bug en el que tienes que caer en el motivo del problema, aunque creo que yo he tenido bugs más complicados.

Ahora que se me pase por la cabeza, me acuerdo que un bot mio para salas Jabber se colgaba estrepitosamente en algún momento, sin saber exactamente en cual. Sin pistas ni nada, al final descubrí que, el sistema de logs guarda todo lo que se escribe en la sala con datos como nombre, fecha, comentario... pues bien, al cambiar el titulo de la sala (mi cliente no me avisaba cuando se cambia el titulo, lo que dificultó más la tarea), no hay un usuario que envié la corrección, lo que provocaba un efecto mariposa que acababa colgando el bot. Me costó lo suyo descubrirlo.

ny80

Pues yo una vez estuve horas intentando ver qué fallo tenía un script embebido en un SVG, después de darle mil vueltas resulta que *el fallo estaba en un comentario* (WTF?!)

Resulta que por alguna razón los scripts de ese tipo no admitían acentos en los comentarios (esto fue hace varios años ya), los cuales deberían ser ignorados por el parser en cualquier caso. Manda huevos.

p

#58 - A mi me pasó algo parecido pero era que de repente el ratón y el teclado dejaban de responder... aunque el equipo seguía funcionando sin problemas. En mi casa ocurría pero no en el taller... medimos corriente, etc... me instalé un SAI... le cambiamos pieza por pieza el equipo entero... y nada... seguía igual... Cambiamos enchufe... todo. Lo único que solucionó el problema fué cambiar el ordenador 1 metro más a la izquierda... Ahora que lo estoy pensando es posible que fuese debido a interferencias producidas por un repetidor de Vodafone que está en el edificio de enfrente...

Y con respecto a los bugs mencionados... lo siento por vosotros pero aparte de los Deadlocks en la programación multithread el resto no son de mucha dificultad. Como ya ha dicho T-1000, poneros a programar videojuegos... ya veréis lo que es bueno... (y bueno la detección de colisiones al píxel tampoco tiene nada...)...