Hello,
in our software we use the HDF5 format to save the results. We use the it in C++ code, HDF5 version 1.12.0 (the same issue occured in 1.8.16 we used previously)
We run a lot of calculations, each in separate process, without any connection between them. The issue is, that in some of the calculations the HDF5 file is not correctly closed, which results in exception. I think the issue might be connected with our usage of quite slow network drives with slow response times.
The error written by HDF5 is:
HDF5-DIAG: Error detected in HDF5 (1.12.0) thread 0:
_ #000: H5F.c line 886 in H5Fclose(): decrementing file ID failed_
_ major: Object atom_
_ minor: Unable to close file_
_ #001: H5I.c line 1422 in H5I_dec_app_ref(): can’t decrement ID ref count_
_ major: Object atom_
_ minor: Unable to decrement reference count_
_ #002: H5F.c line 243 in H5F__close_cb(): unable to close file_
_ major: File accessibility_
_ minor: Unable to close file_
_ #003: H5VLcallback.c line 3977 in H5VL_file_close(): file close failed_
_ major: Virtual Object Layer_
_ minor: Unable to close file_
_ #004: H5VLcallback.c line 3945 in H5VL__file_close(): file close failed_
_ major: Virtual Object Layer_
_ minor: Unable to close file_
_ #005: H5VLnative_file.c line 884 in H5VL__native_file_close(): can’t close file_
_ major: File accessibility_
_ minor: Unable to decrement reference count_
_ #006: H5Fint.c line 2057 in H5F__close(): can’t close file_
_ major: File accessibility_
_ minor: Unable to close file_
_ #007: H5Fint.c line 2230 in H5F_try_close(): problems closing file_
_ major: File accessibility_
_ minor: Unable to close file_
_ #008: H5Fint.c line 1387 in H5F__dest(): unable to close file_
_ major: File accessibility_
_ minor: Unable to close file_
_ #009: H5FD.c line 850 in H5FD_close(): close failed_
_ major: Virtual File Layer_
_ minor: Unable to close file_
_ #010: H5FDsec2.c line 439 in H5FD_sec2_close(): unable to close file, errno = 5, error message = ‘Input/output error’_
_ major: Low-level I/O_
_ minor: Unable to close file_
dave+: H5VLnative_file.c:862: H5VL__native_file_close: Assertion `(H5F_file_id_exists(f))’ failed.
(not sure if the last line belongs to the error or is another one).
The HDF file itself seems ok, it is openable and contains the data. So I just need to get rid of the error, which breaks any further calculation done by our software.
The issue happens while calling H5File close() function. I tried removing the close() call, leaving the closing to the implicit functionality - did not help. I tried some catching of exceptions, but I only acchieved SEGV instead of ABRT error. I tried using H5F_CLOSE_STRONG property to avoid the calculation of the references, but that did not help either. Now I am pretty much out of ideas.
Does anyone have any experience with such behavior? I tried googling, but did not really find anything.
Thanks in advance.