domenica, giugno 05, 2016

 

errori di calcolo




20 anni fa (4 giugno 1996). il lancio inaugurale del vettore Ariane 5 abortì dopo appena 40 secondi producendo una spettacolare palla di fuoco e una cascata di rottami incandescenti. Per il consorzio franco-tedesco che produceva il nuovo vettore per conto dell'Ente Spaziale Europeo (ESA) fu un danno economico e d'immagine di dimensioni ciclopiche.

Cos'era successo? Il meccanismo di autodistruzione si era attivato automaticamente perché i sensori di bordo segnalavano che le forze aerodinamiche stavano facendo a pezzi il vettore, ma ciò non sarebbe successo se il razzo non avesse effettuato una brutale correzione di rotta per cercare di compensare un errore di traiettoria che in realtà non esisteva.

Il computer di bordo era stato tratto in inganno dai dati provenienti dal sistema di guida inerziale. Quei numeri, che sembravano dati di volo e che indicavano una traiettoria errata, erano in realtà solo un messaggio di errore diagnostico, dato che il sistema di guida si era disattivato.
Quell'arresto era avvenuto 36,7 secondi dopo il lancio, quando il software aveva tentato di convertire una parte dei dati - la velocità laterale del razzo rispetto alla piattaforma di lancio - da un formato a 64 bit in virgola mobile in un formato a 16 bit. Il numero risultante, però, era risultato troppo grande per essere gestito e - esattamente come un boccone troppo grosso da ingoiare - aveva mandato in tilt il processore. L'Ariane 5 era dotato di un secondo sistema di guida che entrò regolarmente in funzione ma, essendo dotato del medesimo software, si arrestò nel giro di pochi millisecondi.

Dopo un anno e mezzo di polemiche e di inchieste si risalì alla causa del fallimento: un bug del software dovuto a una banale quanto errata scelta dei programmatori.
Non si sa in nome di quale vantaggio in termini di efficienza o semplicemente perché "tanto non era mai successo niente", i programmatori non avevano inserito nel codice le linee aggiuntive che consentono di recuperare la situazione quando una conversione di dati da una forma all'altra va storta generando un'operazione errata.
In sostanza, era stato stabilito che la conversione del dato sulla velocità laterale NON avrebbe potuto produrre un numero troppo grande. Invece era successo uno di quei pastrocchi che nei PC Windows fanno comparire il ferale messaggio "questo programma ha eseguito un'operazione non valida e sarà terminato"

La cosa più assurda è che il calcolo contenente il bug che ha arrestato il sistema di guida, confuso il computer di bordo e costretto il razzo fuori rotta in realtà era inutile una volta che il razzo si era staccato da terra.
La sua unica funzione, infatti, consisteva nell'allineare il sistema prima del lancio e permetterne lo spegnimento e il successivo riavvio in caso di sospensione temporanea del conto alla rovescia. Gli ingegneri, però, avevano deciso che non fosse inutile tenere attivo il programma nei primi 40 secondi di volo.

Etichette: , ,


Comments:
Tu pensa come si sarà sentito il programmatore che ha commesso quell'errore...
Gli avranno fatto il culo, ma avrà anche pensato: "Cazzo, menomale che era una missione senza equipaggio umano; se no avrei dei morti sulla coscienza, oggi."
 
Posta un commento



<< Home

This page is powered by Blogger. Isn't yours?