Bricking a Mars probe, before Curiosity (2012)
gregsramblings.com
gregsramblings.com
That problem has been (partially) solved even in devices here on Earth: there's a small amount of memory which is either much more difficult or impossible to modify, and that holds "recovery mode" code which is responsible for the basic operations including updating the main application code. This is known as the bootloader, boot block, or boot ROM. It's designed to be simple and thus nearly bug-free as possible.
I wonder if they had a way to test this software update on the ground before they sent it.
Edit: The report referenced in [2] is available for download at [3]. Starting at page 184 there is a description of the Viking Test Language, which appears to have been used for scripting tests to be run against the flight hardware/software. And this was back in 1977.
[1] http://www.unmannedspaceflight.com/index.php?s=bf5c742cc7bc7...
[2] http://www.retrotechnology.com/memship/viking_software.txt
"Originally it had been planned to slowly take STE programmers off of the Viking Project. By the time the STE was moved to KSC for operational test support, there were to be no programmers left. As matters turned out, the number of programmers assigned to STE peaked during this period. This was only partially due to the problems with maintaining the H-632. New requirements for software functions constantly arose, both in Denver and at KSC. Two new programs were written at the Cape to assure that Flight loads would be correct."
[1] http://appel.nasa.gov/2011/05/13/galileos-rocky-road-to-jupi...
[1] By that I mean an actual, hard-to-foresee mistake that no one else caught rather than just incompetence or lack of ability. It's safe to assume that people without ability don't get in to decision making positions at NASA though.