On June 4, 1996, the maiden flight of Ariane 5 ended 37 seconds after liftoff. A software exception in the inertial reference system fed diagnostic data to the flight computer as if it were flight data; the computer obeyed, swiveling the engine nozzles hard over. The vehicle pitched past 20 degrees of attack, aerodynamic loads tore the boosters loose, and the automatic self-destruct fired — destroying the launcher and its four Cluster science satellites.

The root cause was traced to a piece of software reused from the older Ariane 4 system. During the first phase of flight, the Horizontal Velocity Bias (BV) was significantly higher than on Ariane 4. The code attempted to convert this 64-bit floating-point number into a 16-bit signed integer. Because the value exceeded the maximum limit for a 16-bit integer, an arithmetic overflow occurred.

The cruelest detail: the overflowing routine was an alignment function only needed before liftoff. It had been left running into flight purely because it had always run on Ariane 4 — where the rocket's gentler trajectory kept the value small enough to fit. Both redundant inertial units ran the identical code, so the backup failed the same millisecond as the primary.

The overflow came from dead code reused from Ariane 4, left running after liftoff; both redundant units ran identical code, so the backup failed the same millisecond.

A 64-bit float was converted to a 16-bit int without range checking, causing an arithmetic overflow exception.

The software module was inherited from Ariane 4 but never validated for Ariane 5's different flight profile.

Critical redundancy was disabled: both SRI units ran identical code, so they failed simultaneously.

The alignment routine that overflowed served no purpose after liftoff — dead code, running armed.

Reusing code across systems is dangerous if the operational context changes. Verify that every assumption holds in the new environment.

The incident led to a massive overhaul of ESA's software certification processes. It became the definitive case study in software engineering schools, illustrating the catastrophic cost of assuming 'it worked before' and the necessity of rigorous boundary testing.

FOLLOW THE EVIDENCE

The sources

  1. Ariane flight V88 — Wikipedia en.wikipedia.org
  2. ARIANE 5 Flight 501 Failure: Report by the Inquiry Board (1996) esamultimedia.esa.int