Or the program could simply be poorly written for some condition that
the programmer "thought" would never happen and so didn't take care
of. (I've taken over maintaining a program that the original (bad)
programmer only tested for conditions that should happen. Every time
it hits an unusual situation, like letting the customer use it, it
blows up.)