Several years ago a friend of mine did some robustness testing on a widely used OpenSource Software Library. He instrumented the malloc() call so that it would fail (return a NULL pointer/out-of-memory error) the first time that it was called. On the second program run it would fail the second time that it was called, on the next run the third time, and so on. Then he fired up a test suite wrapper for the library and ran it using the fault-inducing malloc().
Luckily, he’d had the foresight to hard-limit the script he was using to stop after a thousand core dumps rather than running through the full test suite wrapper. The hard drive on his computer still hasn’t forgiven him for the thrashing it got, though. So why did something as simple as a memory allocation failure cause such havoc?