* to HDF5 1.4.1-post2 or 1.4.2-pre3 debug library.
* If the assertion errors are ignored, the program eventially causes
* an error in H5Gcreate2 when writing object 83381.
* When writing in single file mode, the assertion errors still occur
* but the H5Gcreate2 error does not.
#define FILEN "testmeta.h5"
#define FILEN "testmeta.h5"
#define NDATAOBJECTS 100000
#define NDATAOBJECTS 100000
hid_t file_id, prop_id, memspace_id, type_id;
hid_t dataset_id, dataspace_id;
hid_t file_id, prop_id, memspace_id, type_id;
hid_t dataset_id, dataspace_id;
file_id = H5Fcreate(FILEN, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
/* Create a dataset to hold the number of data objects */
/* Create the data space */
dataspace_id = H5Screate(H5S_SCALAR);
dataset_id = H5Dcreate2(file_id, "/NumDataObj",
H5T_NATIVE_UINT, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
/* Write value to NumDataObj dataset */
status = H5Dwrite(dataset_id, H5T_NATIVE_UINT, H5S_ALL,
H5S_ALL, H5P_DEFAULT, &numdataobj);
status = H5Dwrite(dataset_id, H5T_NATIVE_UINT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &numdataobj);
/* Close the identifiers */
status = H5Dclose(dataset_id);
status = H5Sclose(dataspace_id);
/* Create extendible arrays */
/* Set up for extendible dataset */
prop_id = H5Pcreate(H5P_DATASET_CREATE);
status = H5Pset_chunk(prop_id, 1, dims);
maxdims[0]=H5S_UNLIMITED;
maxdims[0] = H5S_UNLIMITED;
dataspace_id = H5Screate_simple(1, dims, maxdims);
for(i=0; i<NEXTARRAYS; i++)
for(i = 0; i < NEXTARRAYS; i++) {
sprintf(name, "/ExtArray%06d", i);
dataset_id = H5Dcreate2(file_id, name,
H5T_NATIVE_FLOAT, dataspace_id, H5P_DEFAULT, prop_id, H5P_DEFAULT);
dataset_id = H5Dcreate2(file_id, name, H5T_NATIVE_FLOAT, dataspace_id, H5P_DEFAULT, prop_id, H5P_DEFAULT);
/* Close the identifier */
status = H5Dclose(dataset_id);
/* Close the identifiers */
status = H5Sclose(dataspace_id);
status = H5Pclose(prop_id);
/* Create group to hold data object data arrays */
group_id = H5Gcreate2(file_id, "/DataArray", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
for(j=0; j<NDATAOBJECTS; j++)
for(j = 0; j < NDATAOBJECTS; j++) {
/* Removed print statement as it would lock system resources on Windows */
* printf("\rWriting Object #%d of %d", j+1, NDATAOBJECTS);
* HDprintf("\rWriting Object #%d of %d", j+1, NDATAOBJECTS);
/* Create group to hold data arrays for this object */
sprintf(name, "/DataArray/%06d", j);
HDsprintf(name, "/DataArray/%06d", j);
group_id = H5Gcreate2(file_id, name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
fprintf(stderr, "Failed to create DataArray group.\n");
HDfprintf(stderr, "Failed to create DataArray group.\n");
status = H5Fclose(file_id);
/* Loop over data arrays */
for(i=0; i<NDATAARRAYS; i++)
for(i = 0; i < NDATAARRAYS; i++) {
dataspace_id = H5Screate_simple(1 ,dims, maxdims);
sprintf(name, "DataArray%06d", i);
dataset_id = H5Dcreate2(group_id, name,
H5T_NATIVE_FLOAT, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
HDsprintf(name, "DataArray%06d", i);
dataset_id = H5Dcreate2(group_id, name, H5T_NATIVE_FLOAT, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
fprintf(stderr, "Failed to create DataArray dataset.\n");
HDfprintf(stderr, "Failed to create DataArray dataset.\n");
status = H5Fclose(file_id);
/* Write the data array data */
status = H5Dwrite(dataset_id, H5T_NATIVE_FLOAT, H5S_ALL,
H5S_ALL, H5P_DEFAULT, data);
status = H5Dwrite(dataset_id, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
fprintf(stderr, "Failed to write DataArray dataset.\n");
HDfprintf(stderr, "Failed to write DataArray dataset.\n");
status = H5Fclose(file_id);
/* Close the identifiers */
status = H5Dclose(dataset_id);
status = H5Sclose(dataspace_id);
/* Open NumDataObj dataset */
dataset_id = H5Dopen2(file_id, "/NumDataObj", H5P_DEFAULT);
fprintf(stderr, "Failed to open NumDataObj dataset.\n");
HDfprintf(stderr, "Failed to open NumDataObj dataset.\n");
status = H5Fclose(file_id);
/* Write value to NumDataObj dataset */
status = H5Dwrite(dataset_id, H5T_NATIVE_UINT, H5S_ALL,
H5S_ALL, H5P_DEFAULT, &numdataobj);
status = H5Dwrite(dataset_id, H5T_NATIVE_UINT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &numdataobj);
fprintf(stderr, "Failed to write NumDataObj dataset.\n");
HDfprintf(stderr, "Failed to write NumDataObj dataset.\n");
status = H5Fclose(file_id);
status = H5Dclose(dataset_id);
status = H5Gclose(group_id);
/* Extend attribute arrays */
for(i = 0; i < NEXTARRAYS; i++) {
/* Open extendable dataset */
sprintf(name, "/ExtArray%06d", i);
HDsprintf(name, "/ExtArray%06d", i);
dataset_id = H5Dopen2(file_id, name, H5P_DEFAULT);
fprintf(stderr, "Failed to open ExtArray dataset.\n");
HDfprintf(stderr, "Failed to open ExtArray dataset.\n");
status = H5Fclose(file_id);
/* Extend attribute dataset */
dims[0] = (hsize_t)j + 1;
status = H5Dset_extent(dataset_id, dims);
fprintf(stderr, "Failed to extend DataArray dataset.\n");
HDfprintf(stderr, "Failed to extend DataArray dataset.\n");
status = H5Fclose(file_id);
/* Select element and write value to attribute dataset */
memspace_id = H5Screate_simple(1, dims, dims);
dataspace_id = H5Dget_space(dataset_id);
type_id = H5Dget_type(dataset_id);
status = H5Sselect_hyperslab(memspace_id, H5S_SELECT_SET,
start, stride, count, NULL);
status = H5Sselect_hyperslab(memspace_id, H5S_SELECT_SET, start, stride, count, NULL);
status = H5Sselect_hyperslab(dataspace_id, H5S_SELECT_SET,
start, stride, count, NULL);
status = H5Dwrite(dataset_id, type_id, memspace_id,
dataspace_id, H5P_DEFAULT, &floatval);
fprintf(stderr, "Failed to write DataArray dataset.\n");
status = H5Sselect_hyperslab(dataspace_id, H5S_SELECT_SET, start, stride, count, NULL);
status = H5Dwrite(dataset_id, type_id, memspace_id, dataspace_id, H5P_DEFAULT, &floatval);
HDfprintf(stderr, "Failed to write DataArray dataset.\n");
status = H5Fclose(file_id);
status = H5Tclose(type_id);
status = H5Sclose(dataspace_id);
status = H5Sclose(memspace_id);
status = H5Dclose(dataset_id);
status = H5Fclose(file_id);