Real-World Bugs and Debugging Embedded System
Real-World Bug (Location: The Equator, Pacific Ocean)
In March 2000, on a modified oil platform in the middle of the Pacific, the countdown proceeded normally. Sea Launch was prepared to launch a communications satellite into Middle Earth Orbit. Off it went, and the vehicle was soon out of sight. The second stage ignited on schedule, but then fizzled, dropping the $100-million payload into the ocean.
What Caused the Sea Launch Failure?
The Sea Launch mission was doomed by a change to one conditional statement in the code that did not initialize a variable, leaving a helium valve open prior to lift off. An excessive amount of gas leaked away, leaving nothing to pressurize the second-stage fuel tanks. The rocket could not reach orbital velocity and the flight was terminated. The million tests automatically conducted in the hours prior to launch missed the one-line code error.
The lesson is that software is very complex and tests don't check everything. However, code coverage mandated by the "DO-178B Level A" software standard would have picked up the problem. Though this is an expensive standard to support, it's a lot cheaper than the $100-million lost payload.
Article Courtesy : If I Only Changed the Software, Why is the Phone on Fire? - Lisa Simone