I'm using GDAL 1.5.2 on debian sid.
Trying the following:
$ gdal_translate -of VRT HDF5:test9001.h5://S01/SBI test9001.h5.vrt
$ gdaladdo -r average test9001.h5.vrt 2 4
I get an IReadBlock failure:
0...10...20...30...40...50...60...70...80...90..
Warning 1: TIFFReadDirectory:test9001.h5.vrt.ovr: Wrong "StripByteCounts" field, ignoring and calculating from imagelength
Warning 1: TIFFReadDirectory:test9001.h5.vrt.ovr: Wrong "StripByteCounts" field, ignoring and calculating from imagelength
ERROR 1: test9001.h5.vrt.ovr:DumpModeDecode: Not enough data for scanline 0
ERROR 1: TIFFReadEncodedTile() failed.
ERROR 1: IReadBlock failed at X offset 0, Y offset 15
ERROR 1: GetBlockRef failed at X block offset 0, Y block offset 15
ERROR 1: test9001.h5.vrt.ovr:DumpModeDecode: Not enough data for scanline 0
ERROR 1: TIFFReadEncodedTile() failed.
[CUT]
ERROR 1: IReadBlock failed at X offset 1, Y offset 16
ERROR 1: GetBlockRef failed at X block offset 1, Y block offset 16
ERROR 1: test9001.h5.vrt.ovr:DumpModeDecode: Not enough data for scanline 128
ERROR 1: TIFFReadEncodedTile() failed.
More than 1000 errors or warnings have been reported. No more will be reported from now.
100 - done.
The problem seems do be related to the "-r average" option.
Attached the test files.