HDF Bulletin: HDF5 1.8 Corruption Problem 2/26/10

( http://www.hdfgroup.org/newsletters/bulletin20100226.html )

···

===================================================
HDF Bulletin: HDF5 1.8 Corruption Problem 02/26/10

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.

The HDF5 1.8.4 Patch 1 release can be obtained from here:

    http://www.hdfgroup.org/HDF5/release/obtain5.html

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.