A corruption problem was found in the HDF5 1.8 release, which affects versions 1.8.0 through 1.8.4. The problem has been fixed in HDF5 1.8.4 Patch 1.
What Causes The Problem
Files that have this corruption problem meet all of the following circumstances:
The version of HDF5 was before the HDF5 1.8.4 Patch 1 release (which includes the 1.8.4 release).
The file was created on a big-endian platform (SPARC/Solaris, POWER/AIX, etc).
NetCDF-4 was used to create the file, OR the H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) call was made, OR shared object header messages were enabled with H5Pset_shared_mesg_nindexes() when creating the file.
More than 8 attributes were added to an object in the file (in the case of using netCDF-4 or calling H5Pset_libver_bounds), OR if messages of the type specified to be shared were stored in the file (in the case of calling H5Pset_shared_mesg_nindexes).
If your data matches these criteria, then you may have generated files that have incorrectly encoded IDs for attributes and shared object header messages.
How To Determine If Your Files Are Corrupted
There is no foolproof way to detect a file with these IDs incorrectly encoded, but if the h5dump tool reports an error message similar to the following when displaying information about the file, it is likely that you have a file with this problem:
h5dump error: error getting attribute information
For files created with netCDF-4, this message will generally display when dumping information about the root group. If your application is generating an error stack similar to this, it is also likely that the file has this problem:
. . . #008: ../../hdf5_v1.8/src/H5B2int.c line 1951 in H5B2_iterate_node(): iterator function failed major: B-Tree node minor: Unable to list node #009: ../../hdf5_v1.8/src/H5Adense.c line 1076 in H5A_dense_iterate_bt2_cb(): heap op callback failed major: Attribute minor: Can't operate on object #010: ../../hdf5_v1.8/src/H5HF.c line 680 in H5HF_op(): can't operate on object from fractal heap major: Heap minor: Can't operate on object #011: ../../hdf5_v1.8/src/H5HFman.c line 462 in H5HF_man_op(): unable to operate on heap object major: Heap minor: Can't operate on object #012: ../../hdf5_v1.8/src/H5HFman.c line 276 in H5HF_man_op_real(): fractal heap object offset too large major: Heap minor: Out of range
Fixing The Problem
A tool is being developed that can be run on a corrupted file to correct it.
Please contact the HDF Helpdesk if you are unable to wait for this tool.
- - Last modified: 12 September 2016