On 4th June 1966, Ariane 5 rocket was launched by European Space Agency. After 40 seconds of liftoff, it had exploded. It was an unmanned mission so no live was lost but the space agency has lost a US$370 million. Some estimates claim that the agency has spent more than few US$ Billions and many years for this mission.
Just after the failure, an investigation was launched, and the results were very socking. One of the root-cause mentioned that there was a data conversion from 64bit floating point to 16bit signed integer. The number was larger than 32676 so this conversion has resulted in overflow.
“A16 bit signed integer can hold maximum value 32767”
The programmer has done his/her best in protecting the critical variables, but s/he was not aware of the variable that was responsible for holding the value of Horizontal Bias is also very critical. According to Wikipedia, the programmer has protected 4 out of 7 critical variables. This conversion of 64bit floating point to 16bit signed integer has resulted in an “Operand Error”. But as the programmer has not put this variable in the critical section. The exception raised due to this error has halted both the inertial reference systems. More details are available on Wikipedia (Ariane flight V88 – Wikipedia).
We live in a world where complex software driven systems are everywhere. Some are lifesaving equipment’s while some mission-critical system that are worth of many Billion dollars. If they are not designed with utmost care, are not tested enough then those can take lives also and can cost many Billion dollars too.
Although, in Software development cycle everyone takes care and reviews critical sections/modules but still some issue can only be detected in real life. While designing, writing and reviewing the codes utmost care should be taken.
Ref: Wikipedia – Ariane flight V88 – Wikipedia