These maybe 2 different bugs, but they both deal with recursion, so both are reported here.
(1) Hard-disk-drives, Solid-state-drives, flash media, etc. might have errors in certain blocks/sectors. But this does not mean that diff, when running in '--recursive' mode, should stop after encountering the first "input/output error". At the very least, there should be a '--continue-on-error' option, to make diff proceed to the next file comparison(s) when operating in '--recursive' mode. (2) cmp does not have a '--recursive' option analagous to diff - and it should - as there might be a need to compare 2 directories of binary files.