Hace tiempo los automóviles Toyota reportaron casos de aceleración «no solicitada», lo cual es consecuencia de un bug en el software que controla algunas funciones del automóvil. Lo que ha quedado claro es que hay que quizás pensar dos veces antes de comprar un auto con funciones pre-programadas.

La historia se remonta al 2009 donde se reportó que los modelos Camry y Corolla de Toyota de pronto aceleraban a 90 mph/hora sin que el conductor siquiera presionase sobre el pedal del acelerador. Lo peor es que el freno no ayudaba en este caso, incluso presionándolo directamente. Los incidentes incluyeron un número de accidentes fatales y hasta un conductor fue a la cárcel por matar a tres personas, a pesar de sus alegatos de que el coche aceleró solo.

Toyota revisó la dificultad reportada y supuestamente arregló el bug, pero hubo más reportes. Una investigación de la NASA encontró cero problemas con el software y no hallaron manera de duplicar el problema en el auto. Toyota tomó esto como una exoneración oficial y así se cerró la investigación oficialmente.

Sin embargo, tiempo después un conductor salió lastimado por esta «aceleración no solicitada» y demandó a Toyota en Oklahoma. Ganó 1.5 millones de dólares después de que expertos en software del grupo Barr presentó pruebas de que el software estaba muy mal diseñado. Esto ocurrió en octubre del 2013. Sin embargo, solamente se reportó que un «stack overflow» (desbordamiento de la pila), causó la aceleración inesperada.

Sin embargo, la presentación que se mostró en la Corte contó una terrible historia. Al examinar el software que controla la aceleración no tenía la suficiente calidad. Había más de 11,000 variables globales (lo cual en la carrera de ciencias de la computación de la Facultad de Ciencias hubiese sido motivo suficiente para ponerle cero a un trabajo de esa naturaleza). Además, muchas de las funciones usadas eran largas y complejas. Dicho en pocas palabras, el software estaba escrito de manera muy deficiente, por decir lo menos.

Curiosamente no se encontró la causa específica que provocaba el problema, pero la manera en como se usaba el stack parecía indicar que el desbordamiento del mismo podía eventualmente dar las condiciones para causar esa aceleracióon descontrolada. Para colmo, el 94% del código usaba recursión, lo cual hace muchas veces las labores de depuración mucho más difícil. La MISRA (Motor Industry Software Reliability Association) tiene una regla que prohibe terminantemente la recursión en el software para vehículos. Toyota indicó que seguía las indicaciones de MISRA, pero se hallaron más de 80,000 violaciones al respecto.

La lección no se puede obviar. La verdadera falla va más allá del escribir el software, sino del entender cómo construir software de misión crítica.

Referencias:

Diapositivas del problema
Transcripción del juicio