Overflow en alta mar

Hace unos años vimos cómo un bug computacional (error de programación) hacía que algunos pacientes tratados por una de las primeras máquina de rayos para el tratamiento del cáncer (afortunadamente esto fue hace 30 años y ahora son muy seguras) reciban altas dosis de radiación con un resultado fatal.

Esta historia no tiene un final tan trágico, aunque muestra lo fácilmente que puede ser dejar fuera de circulación cualquier sistema por más caro y amenazador que parezca.

Esta es la historia del crucero con capacidad de disparar misiles llamado USS Yorktown (CG48), un “barco de guerra” como mejor lo conocemos y que fue uno de de los miles que tiene Estados Unidos en casi todos los mares del mundo.

El Yorktown no fue un crucero cualquiera, su vida fue marcada el día que se lo seleccionó como parte de un programa para convertir a todos los barcos en Naves inteligentes mediante la sistematización de gran parte de los procesos, con la intención de optimizar los recursos, tal cual como lo dicen los archivos, ahora ya desclasificados:

En diciembre de 1995, el proyecto Buque inteligente fue creado y el USS Yorktown fue elegido como el barco prototipo. El Programa de Envío inteligente tenía como objetivo reducir la dotación, manteniendo la disposición a través de instalaciones tecnológicas y los cambios de filosofía. Las tecnologías centrales instaladas en Yorktown fueron 16 estaciones de trabajo unidas a través de  fibra óptica configuradas en red de área local (LAN). El barco contaba con protocolos tales como Integrated Bridge System (IBS), Voyage Management System (VMS), Damage Control System(DCS), Integrated Conditioning and Assessment System (ICAS), HYDRA wireless communication system, y Standard Machinery Control System (SMCS).

CG48

(El CG48, como todo barco Yankee estaba “armado hasta los dientes”)

El programa comenzó al año siguiente y los equipos aumentaron a 27 estaciones de trabajo con la última tecnología disponible (procesadores dual Pentium PRO de 200mhz) con Windows NT 4.0 como Sistema Operativo. El sistema central estaba basado también en tecnología Intel siendo el Pentium PRO el que equipaba el servidor y Windows NT Server como “alma". Las estimaciones en reducción de gastos preveían un ahorro de u$s 2,8 millones al año (un 10% del total) con este sistema, por lo que las esperanzas en el mismo eran muy grandes.

Todo parecía funcionar correctamente hasta el 21 de septiembre de 1997, fecha en la que, mientras el CG48 se encontraba ejecutando maniobras cerca de las cosas de Virginia (EEUU) un operador ingresó un 0 como dato, valor 0 que ocasionó que la nave quede completamente a la deriva y sin siquiera poder retornar a los controles manuales. Fue tal la falla que la nave tuvo que ser remolcada hasta la base naval más cercana.

Todavía se discute la veracidad sobre el remolque o si después de más de 2 horas los sistemas del barco pudieron volver a ser usables, de todas maneras lo que no da para discusión es la anécdota aunque con el tiempo se descubrió que el problema no fue culpa del hardware ni del OS sino que estuvo en la aplicación que controlaba la base de datos. De todas maneras es una historia totalmente creíble luego de haber conocido (y sufrido) los problemas de los Pentium con la división por cero, procesadores que si bien fueron anteriores, demuestran una época bastante “verde” respecto a bugs comunes y cosas “imposibles” que dejaban completamente inutilizable un sistema.

Igualmente se nota la presión del Lobby de M$ en la historia, tal como dice Ron Redman:

Debido a la política, nos vemos obligados a utilizar cosas que si no tuviésemos presión no usaríamos, como Windows NT. Si fuera por mí, probablemente no habría utilizado Windows NT en esta aplicación particular… La refinación del sistema es un proceso continuo y Unix es un sistema mejor para el control de equipos y maquinaria, mientras que NT es mejor mejor para la transferencia de información y datos. NT nunca ha sido totalmente refinado y hay veces en que hemos tenido paradas culpa de NT.

Hablando de cosas que pueden desmantelar gigantes, ¿te acordás de Stuxnet?

13 Comentarios

  1. una vez lei que no recuerdo en que avion militar , por un bug, al cruzar el ecuador, el avion giraba automaticamente y te dejaba cabeza abajo!

  2. Boludos los que hicieron la transformacion que no pusieron los 3 botones clasicos de windows (ctrl alt supr) en version gigante.

    Gracias a linus (dios) volkswagen usa para sus autos que se manejan solos una version de linux propia, por lo que se espera que estas boludeces no pasen.

    • La dura verdad es que estas boludeces van a seguir pasando siempre. Uses linux, unix, windows, intel, AMD, FOXCONN, asus, etc etc. Todo sistema esta creado por humanos y los humanos se equivocan.

      La única ventaja de usar un sistema abierto sobre otro es que los problemas los podes solucionar uno mismo y no depende de terceros. Pero pasar eso la cagada ya tuvo que pasar

  3. “Use lo mejor:

    Linux para Servidores.
    Mac para graficos.
    Palm para Mobilidad.
    Windows para Solitario. ”

  4. Me imagino el llamado a la gente de windows desde algun telefono satelital xD.

    “Buenas tardes, soy el Tte Cnel al mando del CG48, en una ubicacion desconocida, hemos tenido problemas con su version de windows NT, y todos los sistemas han quedado deshabilitados, las armas estan es estado de alerta maxima y el barco amenaza con autodestruirse. Podria decirme los pasos necesarios para reiniciar el sistema y retomar el control ? Si, tengo service pack 2 instalado, no, no usamos NetFramework para el control de armas”.

    xD

  5. Muy linda la historia, Guille, te corrijo un detalle: ningún procesador divide por cero, porque la división por cero no está definida (no hay un opuesto a, por ejemplo, 0 x 10 = 0).

    El problema de los Pentium II era la precisión a partir de cierta cifra decimal en números con coma flotante.

    En esa época también había un problema bastante peculiar pero de parte del software: http://support.microsoft.com/kb/216641
    No encontré nada con respecto a la definición técnica del problema, pero en algún momento escuché que eso se debía a que no había un manejo correcto del contador que determina la edad de las páginas en memoria (entre otras cosas).

    Una explicación técnica acá:

    http://sites.google.com/site/edmarkovich2/whywindows95andwindows98wouldcrashafter49.7daysofuptime

  6. Interesante historia y como un simple error al ingresar un dato convirtio un barco de guerra en una maquina inutilisable.

    Esto podria traducirse a mayor escala con el pasar de los años, ya que todo esta controlado por computadoras.

Dejar respuesta

Please enter your comment!
Please enter your name here