Esas veces en las que tirarías el ordenador por la ventana
Ayer fue uno de esos días en los que uno puede llegar a desesperarse y acabar entablando un combate de boxeo con el monitor, la cpu, el teclado, o contra todos a la vez incluso. En esto de la informática no suele haber misterios y cuando un programa falla siempre hay un motivo, el problema suele ser encontrarlo, bueno, en realidad podríamos considerar que el problema es que surjan problemas y que se deberían hacer las cosas mejor, pero eso es otro tema. En cualquier caso, por muy buenos que seamos, por mucha expericencia que tengamos y a pesar de que usemos la mejor metodología existente, es inevitable que en algún momento nos encontremos con algún bug, incompatibilidad, modificación, o cualquier cosa dispuesta a hacernos la vida un poco más difícil.
En algunos casos puede pasar que te pegues media hora delante de la pantalla con un código que falla y que no sabes el motivo, en esos momentos suele ayudar contárselo y explicárselo a alguien, no porque sepa más que tú, sino porque muchas veces al contarlo nos damos cuenta de cuál es el problema. Seguro que os ha pasado alguna vez.
Sin embargo hay otras ocasiones en las que algo falla, haces mil pruebas y sigue fallando, pasan las horas con más y más pruebas, pero sigue fallando, se lo cuentas a todos tus conocidos y nadie sabe nada, buscas cualquier cosa relacionada que se te ocurre en Google y no encuentras nada de nada… se acerca el momento de la desesperación, pero finalmente consigues resolverlo, sin embargo ¿cuál era el problema? El problema de verdad surge cuando el fallo se resuelve pero no tienes ni idea del motivo exacto, es en estos casos en los que te cuestionas eso de que «no hay misterios en la informática».
Esto mismo es lo que me paso ayer, estuve 3 horas intentando depurar un problema para al final llegar a resolverlo pero sin saber exactamente el motivo. Resulta que estoy haciendo una aplicación web en PHP4 y todo funcionaba perfectamente hasta que de repente comienza a fallar. Tras un buen rato pruebo a acceder con el Internet Explorer y todo funciona bien, vuelvo al firefox y sigue fallando. El siguiente paso fue mirar los logs de apache y sorpresa!!! cada vez que accedía a esa página, apache produción un «Segmentation Fault» del proceso que servía la petición, sin embargo esto sólo pasaba cuando accedía con firefox y únicamente en una página concreta. Tras poner infinidad de trazas conseguí localizar el problema, y de nuevo lo curioso, fue que ese fragmento de código se utilizaba en todas las páginas, y por supuesto, de forma completamente independiente del navegador.
Tras unas cuantas pruebas encontré que el problema venía de la captura de una referencia que devolvía una función, por lo que simplemente pasé de la referencia para que se cogiera por valor, y comenzó a funcionar perfectamente. Tiempo total pérdido: 3 horas
La primera impresión tras todo esto es que pudiera ser un problema del módulo de PHP que hiciese que cascase Apache, pero ¿por qué no en todas las páginas? Seguramente por algún error en la gestión de memoria, pero ¿y cómo puede ser que fallase sólo el firefox y no el IE? Seguramente la respuesta será la misma, porque hay que seguir creyendo que no hay misterios en la informática, sólo cosas que no conocemos…
Kaixo Patxi, esas cosas pasan todos los días!!
Si, si,al principio piensas que claro, ha miles de lineas ejecutandose de las que no tienes ni idea, miles posiblidades de bugs desde tus lineas de código hasta la ejecución en lenguaje máquina y que veas el resultado…. pero !NO! La informática hace tiempo que está invadida por unos seres extraños que intentan volvernos locos… son… ¡¡los diminutos!!!
😀
Que sería de nosotros si no surgieran de vez en cuando estos temas, son la salsa de la vida!!! 😉