>If I expect a program to do something (eg. handle IO errors) that its code says very clearly that it doesn't, that's not the programs fault.
Is there no such thing as a bug then? The program does what the code says so every "misbehavior" and crash is expected behavior.