Dear Barbara,
I have to keep backward compatibility with this version of MATLAB so I will
have to check amount of data to be written and refuse to write them before
any error occurs. I will have to set a threshold - the maximal allowed
amount of the data for each dataType. However, the amount of the user data
is not exactly 64K(i)B. I have discovered the limits using trial and error
approach but string attributes can be tricky (because of variable char
count per cell). Therefore, I would like to ask you to bring some light
into the 64K limitation.

Here are the limits I have discovered for compound dataType, double, int32
and reference(8 x uint8). Meaning of the numbers follows this header:
<nubber_of_cells><dataTypes_per_cell><bytes_per_dataType> + extra bytes to
reach 65536

complex double (compound datatType 2x8 bytes per cell)
4084*2*8 + 192

double (8 bytes per cell)
8180*1*8 + 96

in32 (4 bytes per cell)
16365*1*4 + 76

reference (8 bytes per cell)
8183*8*1 + 72

Could you, please, explain, where are the the extra bytes (192, 96, 76, 72)
coming from? Origin of these numbers should help me to set proper threshold
for strings.

Best regards,
 Vladimir

2015-04-08 20:58 GMT+02:00 Barbara Jones <[email protected]>:

>  Hi Vladimir,
>
>
>
> I was able to reproduce this issue in a C example, and have entered a bug
> report for it.
>
> For your reference it is HDFFV-9277.
>
>
>
> Thank you for reporting this!
>
>
>
> -Barbara
>
> [email protected]
>
>
>
>
>
> *From:* Hdf-forum [mailto:[email protected]] *On
> Behalf Of *Vladimír Šedenka
> *Sent:* Monday, March 30, 2015 12:37 PM
> *To:* [email protected]
> *Subject:* [Hdf-forum] MATLAB Unable to delete attribute in dense storage
>
>
>
> Dear all,
>
> I am facing a problem when trying to delete HDF5 attribute stored in dense
> storage in MATLAB R2014b. The test code (below) works for small data size
> (10x10) but causes "red errors" for bigger data (100x100).
>
> close all;
> clear all;
> clc;
>
> fileName = 'H5A_delete.h5';
> groupName = 'test';
> attrName = 'testAttribute';
>
> data = 1.23*ones(100, 100);
>
> if exist(fileName, 'file')
>    delete(fileName);
> end
>
> faplID = H5P.create('H5P_FILE_ACCESS');
> H5P.set_libver_bounds(faplID, 'H5F_LIBVER_18', 'H5F_LIBVER_LATEST');
> fileID = H5F.create(fileName, 'H5F_ACC_TRUNC', 'H5P_DEFAULT', faplID);
> H5P.close(faplID);
> groupID = H5G.create(fileID, groupName, 'H5P_DEFAULT', 'H5P_DEFAULT',
> 'H5P_DEFAULT');
> spaceID = H5S.create_simple(length(size(data)), fliplr(size(data)), []);
> % attribute creation
> acplID = H5P.create('H5P_ATTRIBUTE_CREATE');
> attrID = H5A.create(groupID, attrName, 'H5T_IEEE_F64LE', spaceID, acplID);
> H5P.close(acplID);
> % writing attribute value
> H5A.write(attrID, 'H5T_NATIVE_DOUBLE', data);
> H5A.close(attrID);
> H5S.close(spaceID);
> H5G.close(groupID);
> H5F.close(fileID);
>
> clear acplID attrID data faplID fileID groupID spaceID;
>
> % fileattrib(filename, '+w');
> fileID = H5F.open(fileName, 'H5F_ACC_RDWR', 'H5P_DEFAULT');
> groupID = H5G.open(fileID, groupName);
> H5A.delete(groupID, attrName);
> H5G.close(groupID);
> H5F.close(fileID);
>
>
> Error messages:
>
> Error using hdf5lib2
> The HDF5 library encountered an error and produced the following stack
> trace information:
>
>     H5FD_windows_read          addr overflow
>     H5FD_read                  driver read request failed
>     H5F_accum_read             driver read request failed
>     H5F_block_read             read through metadata accumulator failed
>     H5HF_huge_op_real          can't read 'huge' object's data from the
> file
>     H5HF_huge_op               unable to operate on heap object
>     H5HF_op                    can't operate on 'huge' object from fractal
> heap
>     H5A_dense_delete_bt2_cb    heap op callback failed
>     H5B2_delete_node           iterator function failed
>     H5B2_hdr_delete            unable to delete B-tree nodes
>     H5SL_insert_common         can't insert duplicate key
>     H5SL_insert                can't create new skip list node
>     H5FS_sect_link_rest        can't insert free space node into merging
> skip list
>     H5FS_sect_link             can't add section to non-size tracking data
> structures
>     H5FS_sect_add              can't insert free space section into skip
> list
>     H5MF_xfree                 can't add section to file free space
>     H5HF_cache_hdr_dest        unable to free fractal heap header
>     H5HF_cache_hdr_clear       unable to destroy fractal heap header
>     H5C_flush_single_entry     can't clear entry
>     H5C_unprotect              Can't flush.
>     H5AC_unprotect             H5C_unprotect() failed.
>     H5HF_hdr_delete            unable to release fractal heap header
>     H5HF_delete                unable to delete fractal heap
>     H5C_unprotect              Entry already unprotected??
>     H5AC_unprotect             H5C_unprotect() failed.
>     H5HF_delete                unable to release fractal heap header
>     H5A_dense_delete           unable to delete fractal heap
>     H5O_ainfo_delete           unable to free dense attribute storage
>     H5O_delete_mesg            unable to delete file space for object
> header message
>     H5O_release_mesg           unable to delete file space for object
> header message
>     H5O_msg_remove_cb          unable to release message
>     H5O_msg_iterate_real       iterator function failed
>
> Error in H5A.delete (line 21)
> H5ML.hdf5lib2('H5Adelete', loc_id, name);
>
> Error in h5a_delete (line 37)
> H5A.delete(groupID, attrName);
>
>
> Thank you for any help.
>
> Best regards,
>
>  Vladimir Sedenka
>
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> Twitter: https://twitter.com/hdf5
>
_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

Reply via email to