The idea of the 'perfect software' flew out the window more than a decade ago. Why? Because it's unfeasible for us to program in every little contingency into our programs given the diversity of people's systems. If you were to take into account every possible configuration, with hardware components and drivers themselves imperfectly programmed, then there are trillions of little things to consider. And considering how 'unintended' functionality (e.g. buffer overflow) can often be accidentally added into code, there'll always be some sort of exploit that's out there. Demanding software that runs perfectly, given the non-linear way in which computers are used, is demanding the impossible.