Er, wasn't a Mars Rover stuck because of a buffer overrun in its C code?
[/QUOTE]
(I do not know which one he means.)
Sprit was almost lost due to an over-allocation of file system space
in the flash memory causing it to fail and reboot but recovery was
successful.
I know something about this, and it was not really a "buffer overrun"
at all, but rather due to a change in the use of the file system
on vxWorks on the hardware in question. The system was tested with
a small number of files, and configured to handle only a small
number of files. Some time before or shortly after launch, however,
someone decided to load a bunch of new files to the flash without
deleting the old ones. Since the system was configured to handle
only a small number of files, it was unable to progress with the
large number in place. (The solution was simple: delete the unneeded
files, which -- as I heard it -- were left behind simply because
they were not sure if the new files were right, yet.)
One of the morals, as it were, is: test the system you will use,
in the way you will use it.

If you plan to keep lots of files
around, test the system that way. (Of course, the vxWorks file
system implementation was eventually modified so as to not place
this small fixed limit on the maximum number of files. That
particular change happened well before I ever did anything to the
vxWorks dosFs implementation myself, so I am a bit fuzzy on the
exact problem with the dosFs 1 implementation. The dosFs 2
implementation still has a limit on the number of simultaneously
*open* files, for various reasons, but one can have as many
file-system-resident files as will fit in the directory area, as
long as one does not try to open all of them at the same time.
For FAT32, there is no hard limmit at all, since even the root
directory is handled via an expandable cluster chain.)