When reading a file with a bad block, rsync 2.6.7 goes in to a infinte loop, rereading the bad block. rsync 2.6.6 just fil in zeros. Which is worse! Bad data and no indication. The error is also i rsync 2.5.7 from RHEL 3. There are no error message in either case. The minimum requerement is an error message, and an error exit code. The best solution, would be to be able to select to skip changes from files with readerrors, and just continue with other files.
Rsync is not in an infinite loop, but it was not properly bumping the read position forward after a failed read so that it could try to read the remainder of the file. This is now fixed in CVS and also in the most recent "nightly" tar file. Thanks for the report!