Los bugs son tan antiguos como la informática o la programación, y prácticamente ningún sistema operativo, firmware o software que potenciara a dispositivos ha estado exento de ellos. En ese sentido, muchos nacen y permanecen en los equipos durante años sin que nadie los perciba, mientras que otros llegan a causa de limitaciones o hacks del momento en que se escribe el código.
@Foone, un usuario de Twitter, ha contado la historia de un bug nacido en 1974 y que aún permanece en Windows 10, como consecuencia de contar en su interior con la base del CP/M de Gary Kildall y el Q-DOS de Tim Paterson. Mientras intentaba copiar el archivo ‘aux.h’, el sistema lanzó un error anunciando que "el fichero AUX.H es demasiado grande para el sistema de archivos de destino". Todo ello, pese a contar sólo con 9,57 kilobytes. Es muy poco desde la perspectiva actual, pero mucho para la época.
Un bug eterno, en aras de la compatibilidad
El origen del problema está en los archivos especiales presentes en carpetas especiales de Unix. En el viejo sistema, según @Foone, "todo era un archivo", algo que Kildall llevó a CP/M en 1974. Sin embargo, al estar CP/M diseñado para ordenador de 8-bit, con muy poco memoria, sin discos duros, no se usaban directorios, sino distintos discos. Al no haber directorios, los ficheros están en todo el disco. Así, según el ejemplo,para imprimir un archivo había que ejecutar "PIP LST:=FOO.TXT", que lo que hace es copiar FOO.TXT al archivo LST, la impresora. Toda referencia a un archivo de impresora o teclado podía adquirir su extensión, por lo que LST.TXT seguía funcionando como impresora.
It is 2018 and this error message is a mistake from 1974.
Todo esto también existió en Q-DOS y PC-DOS, y para no romper la compatibilidad con versiones antiguas del sistema, los archivos especiales estarían ahora en todos los directorios con todas las extensiones. Así fue en Windows 95, basado en DOS. Luego la base fue Windows NT, que llega hasta estos días, y que en XP, de nuevo para garantizar compatibilidad, hizo uso del antiguo sistema de DOS.
Así, en Windows 10, por ejemplo, no es posible crear un archivo .txt que haga referencia a hardware: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9. Microsoft lo recoge aquí.
En Windows 95, de hecho, como @Foone cuenta, acceder a "C:\con\con" producía una BSOD de forma automática. En cualquier caso, hay debate sobre si es un bug o no. En este caso, hablamos de un bug a día de hoy, porque ya no usamos el hardware de esa forma, pero no en su momento, cuando tenía bastante sentido.