From 1639ef88083df9fcfdef56b7cef64ab0a3abe54a Mon Sep 17 00:00:00 2001 From: Neil Fortner Date: Wed, 18 Sep 2024 12:39:05 -0500 Subject: [PATCH 1/7] Fix issues with large external data files (#4843) (#4847) --- src/H5Defl.c | 73 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 64 insertions(+), 9 deletions(-) diff --git a/src/H5Defl.c b/src/H5Defl.c index 22348e33fcc..34d48e690b7 100644 --- a/src/H5Defl.c +++ b/src/H5Defl.c @@ -278,12 +278,12 @@ H5D__efl_read(const H5O_efl_t *efl, const H5D_t *dset, haddr_t addr, size_t size { int fd = -1; size_t to_read; + size_t left_to_read; #ifndef NDEBUG hsize_t tempto_read; #endif /* NDEBUG */ hsize_t skip = 0; haddr_t cur; - ssize_t n; size_t u; /* Local index variable */ char *full_name = NULL; /* File name with prefix */ herr_t ret_value = SUCCEED; /* Return value */ @@ -325,15 +325,43 @@ H5D__efl_read(const H5O_efl_t *efl, const H5D_t *dset, haddr_t addr, size_t size #else /* NDEBUG */ to_read = MIN((size_t)(efl->slot[u].size - skip), (hsize_t)size); #endif /* NDEBUG */ - if ((n = HDread(fd, buf, to_read)) < 0) - HGOTO_ERROR(H5E_EFL, H5E_READERROR, FAIL, "read error in external raw data file"); - else if ((size_t)n < to_read) - memset(buf + n, 0, to_read - (size_t)n); + + /* Inner loop - read to_read bytes from a single external file */ + left_to_read = to_read; + while (left_to_read > 0) { + h5_posix_io_t bytes_in = 0; /* # of bytes to read */ + h5_posix_io_ret_t bytes_read = -1; /* # of bytes actually read */ + + /* Trying to read more bytes than the return type can handle is + * undefined behavior in POSIX. + */ + if (left_to_read > H5_POSIX_MAX_IO_BYTES) + bytes_in = H5_POSIX_MAX_IO_BYTES; + else + bytes_in = (h5_posix_io_t)left_to_read; + + do { + bytes_read = HDread(fd, buf, bytes_in); + } while (-1 == bytes_read && EINTR == errno); + + if (bytes_read < 0) + HGOTO_ERROR(H5E_EFL, H5E_READERROR, FAIL, "read error in external raw data file"); + + if (0 == bytes_read) { + /* End of file on disk, fill the remaining sectors to be read from this file with 0 */ + memset(buf, 0, left_to_read); + bytes_read = (h5_posix_io_ret_t)left_to_read; + } /* end if */ + + left_to_read -= (size_t)bytes_read; + buf += bytes_read; + } + + /* Prepare to advance to next external file */ full_name = (char *)H5MM_xfree(full_name); HDclose(fd); fd = -1; size -= to_read; - buf += to_read; skip = 0; u++; } /* end while */ @@ -364,6 +392,7 @@ H5D__efl_write(const H5O_efl_t *efl, const H5D_t *dset, haddr_t addr, size_t siz { int fd = -1; size_t to_write; + size_t left_to_write; #ifndef NDEBUG hsize_t tempto_write; #endif /* NDEBUG */ @@ -414,13 +443,39 @@ H5D__efl_write(const H5O_efl_t *efl, const H5D_t *dset, haddr_t addr, size_t siz #else /* NDEBUG */ to_write = MIN((size_t)(efl->slot[u].size - skip), size); #endif /* NDEBUG */ - if ((size_t)HDwrite(fd, buf, to_write) != to_write) - HGOTO_ERROR(H5E_EFL, H5E_READERROR, FAIL, "write error in external raw data file"); + + /* Inner loop - write to_write bytes to a single external file */ + left_to_write = to_write; + while (left_to_write > 0) { + h5_posix_io_t bytes_in = 0; /* # of bytes to write */ + h5_posix_io_ret_t bytes_wrote = -1; /* # of bytes actually written */ + + /* Trying to write more bytes than the return type can handle is + * undefined behavior in POSIX. + */ + if (left_to_write > H5_POSIX_MAX_IO_BYTES) + bytes_in = H5_POSIX_MAX_IO_BYTES; + else + bytes_in = (h5_posix_io_t)left_to_write; + + do { + bytes_wrote = HDwrite(fd, buf, bytes_in); + } while (-1 == bytes_wrote && EINTR == errno); + + if (bytes_wrote < 0) + HGOTO_ERROR(H5E_EFL, H5E_WRITEERROR, FAIL, "write error in external raw data file"); + if (bytes_wrote == 0) + HGOTO_ERROR(H5E_EFL, H5E_WRITEERROR, FAIL, "wrote 0 bytes to external raw data file"); + + left_to_write -= (size_t)bytes_wrote; + buf += bytes_wrote; + } + + /* Prepare to advance to next external file */ full_name = (char *)H5MM_xfree(full_name); HDclose(fd); fd = -1; size -= to_write; - buf += to_write; skip = 0; u++; } /* end while */ From d9b4a95df6516c24a211f1ac580ce38f813dcea1 Mon Sep 17 00:00:00 2001 From: bmribler <39579120+bmribler@users.noreply.github.com> Date: Thu, 26 Sep 2024 17:05:50 -0400 Subject: [PATCH 2/7] Fixed a memory leak from H5FL_blk_malloc (#4882) In H5F__accum_reset(), when H5F__accum_flush() failed, the freeing of f_sh->accum.buf was never reached, causing resource leak. @fortnern added the third argument to H5F__accum_reset() so we can free f_sh->accum.buf when we close the file, that is, when H5F__accum_reset() is called from the H5F__dest() route, and can leave the accumulator in place otherwise. --- src/H5Faccum.c | 13 ++++++++----- src/H5Fint.c | 4 ++-- src/H5Fio.c | 2 +- src/H5Fpkg.h | 2 +- test/accum.c | 2 +- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/H5Faccum.c b/src/H5Faccum.c index 9c4c8cdbbda..5fabf5266a0 100644 --- a/src/H5Faccum.c +++ b/src/H5Faccum.c @@ -725,7 +725,7 @@ H5F__accum_write(H5F_shared_t *f_sh, H5FD_mem_t map_type, haddr_t addr, size_t s /* Make certain that data in accumulator is visible before new write */ if ((H5F_SHARED_INTENT(f_sh) & H5F_ACC_SWMR_WRITE) > 0) /* Flush if dirty and reset accumulator */ - if (H5F__accum_reset(f_sh, true) < 0) + if (H5F__accum_reset(f_sh, true, false) < 0) HGOTO_ERROR(H5E_IO, H5E_CANTRESET, FAIL, "can't reset accumulator"); /* Write the data */ @@ -776,7 +776,7 @@ H5F__accum_write(H5F_shared_t *f_sh, H5FD_mem_t map_type, haddr_t addr, size_t s } /* end if */ else { /* Access covers whole accumulator */ /* Reset accumulator, but don't flush */ - if (H5F__accum_reset(f_sh, false) < 0) + if (H5F__accum_reset(f_sh, false, false) < 0) HGOTO_ERROR(H5E_IO, H5E_CANTRESET, FAIL, "can't reset accumulator"); } /* end else */ } /* end if */ @@ -1039,7 +1039,7 @@ H5F__accum_flush(H5F_shared_t *f_sh) *------------------------------------------------------------------------- */ herr_t -H5F__accum_reset(H5F_shared_t *f_sh, bool flush) +H5F__accum_reset(H5F_shared_t *f_sh, bool flush, bool force) { herr_t ret_value = SUCCEED; /* Return value */ @@ -1050,8 +1050,11 @@ H5F__accum_reset(H5F_shared_t *f_sh, bool flush) /* Flush any dirty data in accumulator, if requested */ if (flush) - if (H5F__accum_flush(f_sh) < 0) - HGOTO_ERROR(H5E_FILE, H5E_CANTFLUSH, FAIL, "can't flush metadata accumulator"); + if (H5F__accum_flush(f_sh) < 0) { + HDONE_ERROR(H5E_FILE, H5E_CANTFLUSH, FAIL, "can't flush metadata accumulator"); + if (!force) + HGOTO_DONE(FAIL); + } /* Check if we need to reset the metadata accumulator information */ if (f_sh->feature_flags & H5FD_FEAT_ACCUMULATE_METADATA) { diff --git a/src/H5Fint.c b/src/H5Fint.c index f653e0b71f0..3a9c65f1783 100644 --- a/src/H5Fint.c +++ b/src/H5Fint.c @@ -1559,7 +1559,7 @@ H5F__dest(H5F_t *f, bool flush, bool free_on_failure) } /* end if */ /* Destroy other components of the file */ - if (H5F__accum_reset(f->shared, true) < 0) + if (H5F__accum_reset(f->shared, true, true) < 0) /* Push error, but keep going*/ HDONE_ERROR(H5E_FILE, H5E_CANTRELEASE, FAIL, "problems closing file"); if (H5FO_dest(f) < 0) @@ -3893,7 +3893,7 @@ H5F__start_swmr_write(H5F_t *f) } /* end if */ /* Flush and reset the accumulator */ - if (H5F__accum_reset(f->shared, true) < 0) + if (H5F__accum_reset(f->shared, true, false) < 0) HGOTO_ERROR(H5E_IO, H5E_CANTRESET, FAIL, "can't reset accumulator"); /* Turn on SWMR write in shared file open flags */ diff --git a/src/H5Fio.c b/src/H5Fio.c index 2cd8a53ba53..3d50b50fc51 100644 --- a/src/H5Fio.c +++ b/src/H5Fio.c @@ -422,7 +422,7 @@ H5F_flush_tagged_metadata(H5F_t *f, haddr_t tag) HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush tagged metadata"); /* Flush and reset the accumulator */ - if (H5F__accum_reset(f->shared, true) < 0) + if (H5F__accum_reset(f->shared, true, false) < 0) HGOTO_ERROR(H5E_IO, H5E_CANTRESET, FAIL, "can't reset accumulator"); /* Flush file buffers to disk. */ diff --git a/src/H5Fpkg.h b/src/H5Fpkg.h index f60841ec55f..7acd243aa82 100644 --- a/src/H5Fpkg.h +++ b/src/H5Fpkg.h @@ -445,7 +445,7 @@ H5_DLL herr_t H5F__accum_write(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr const void *buf); H5_DLL herr_t H5F__accum_free(H5F_shared_t *f, H5FD_mem_t type, haddr_t addr, hsize_t size); H5_DLL herr_t H5F__accum_flush(H5F_shared_t *f_sh); -H5_DLL herr_t H5F__accum_reset(H5F_shared_t *f_sh, bool flush); +H5_DLL herr_t H5F__accum_reset(H5F_shared_t *f_sh, bool flush, bool force); /* Shared file list related routines */ H5_DLL herr_t H5F__sfile_add(H5F_shared_t *shared); diff --git a/test/accum.c b/test/accum.c index c0401ac3d10..482ebcfa4e3 100644 --- a/test/accum.c +++ b/test/accum.c @@ -61,7 +61,7 @@ void accum_printf(const H5F_t *f); #define accum_read(a, s, b) H5F_block_read(f, H5FD_MEM_DEFAULT, (haddr_t)(a), (size_t)(s), (b)) #define accum_free(f, a, s) H5F__accum_free(f->shared, H5FD_MEM_DEFAULT, (haddr_t)(a), (hsize_t)(s)) #define accum_flush(f) H5F__accum_flush(f->shared) -#define accum_reset(f) H5F__accum_reset(f->shared, true) +#define accum_reset(f) H5F__accum_reset(f->shared, true, false) /* ================= */ /* Main Test Routine */ From 314f8f5d5bc005834d72961cade120d3fe5b4962 Mon Sep 17 00:00:00 2001 From: bmribler <39579120+bmribler@users.noreply.github.com> Date: Fri, 27 Sep 2024 11:06:59 -0400 Subject: [PATCH 3/7] Added an entry for the GH-4585 fix (#4889) --- release_docs/RELEASE.txt | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 66f5cedb46d..0bb324ce6dc 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -188,6 +188,63 @@ Bug Fixes since HDF5-1.14.4 release =================================== Library ------- + - Fixed a memory leak in H5F__accum_write() + + The memory was allocated in H5F__accum_write() and was to be freed in + H5F__accum_reset() during the closing process but a failure occurred just + before the deallocation, leaving the memory un-freed. The problem is + now fixed. + + Fixes GitHub #4585 + + - Fixed an incorrect returned value by H5LTfind_dataset() + + H5LTfind_dataset() returned true for non-existing datasets because it only + compared up to the length of the searched string, such as "Day" vs "DayNight". + Applied the user's patch to correct this behavior. + + Fixes GitHub #4780 + + - Fixed a segfault by H5Gmove2, extending to H5Lcopy and H5Lmove + + A user's application segfaulted when it passed in an invalid location ID + to H5Gmove2. The src and dst location IDs must be either a file or a group + ID. The fix was also applied to H5Lcopy and H5Lmove. Now, all these + three functions will fail if either the src or dst location ID is not a file + or a group ID. + + Fixes GitHub #4737 + + - Fixed a segfault by H5Lget_info() + + A user's program generated a segfault when the ID passed into H5Lget_info() + was a datatype ID. This was caused by non-VOL functions being used internally + where VOL functions should have been. This correction was extended to many + other functions to prevent potential issue in the future. + + Fixes GitHub #4730 + + - Fixed a segfault by H5Fget_intent(), extending to several other functions + + A user's program generated a segfault when the ID passed into H5Fget_intent() + was not a file ID. In addition to H5Fget_intent(), a number of APIs also failed + to detect an incorrect ID being passed in, which can potentially cause various + failures, including segfault. The affected functions are listed below and now + properly detect incorrect ID parameters: + + H5Fget_intent() + H5Fget_fileno() + H5Fget_freespace() + H5Fget_create_plist() + H5Fget_access_plist() + H5Fget_vfd_handle() + H5Dvlen_get_buf_size() + H5Fget_mdc_config() + H5Fset_mdc_config() + H5Freset_mdc_hit_rate_stats() + + Fixes GitHub #4656 and GitHub #4662 + - Fixed a bug with large external datasets When performing a large I/O on an external dataset, the library would only From 752dda300826144d2637785dce3f3c28808b522b Mon Sep 17 00:00:00 2001 From: bmribler <39579120+bmribler@users.noreply.github.com> Date: Tue, 24 Sep 2024 07:20:06 -0400 Subject: [PATCH 4/7] Fix an incorrect returned value by H5LTfind_dataset() (#4869) H5LTfind_dataset() returns true for non-existing datasets because it only compares up to the length of the searched string, such as "Day" vs "DayNight" (issue GH-4780). This PR applied the user's patch and added tests. --- hl/src/H5LT.c | 2 +- hl/test/test_ds.c | 17 +++++++++++++---- hl/test/test_lite.c | 24 +++++++++++++++++++++++- release_docs/RELEASE.txt | 12 ++++++++++++ 4 files changed, 49 insertions(+), 6 deletions(-) diff --git a/hl/src/H5LT.c b/hl/src/H5LT.c index 7d44792fbc0..7b55cedeb3b 100644 --- a/hl/src/H5LT.c +++ b/hl/src/H5LT.c @@ -1228,7 +1228,7 @@ find_dataset(H5_ATTR_UNUSED hid_t loc_id, const char *name, H5_ATTR_UNUSED const * cause the iterator to immediately return that positive value, * indicating short-circuit success */ - if (strncmp(name, (char *)op_data, strlen((char *)op_data)) == 0) + if (strcmp(name, (char *)op_data) == 0) ret = 1; return ret; diff --git a/hl/test/test_ds.c b/hl/test/test_ds.c index f85ed81b7fb..0172cb45a22 100644 --- a/hl/test/test_ds.c +++ b/hl/test/test_ds.c @@ -1341,10 +1341,11 @@ test_detachscales(void) static int test_char_attachscales(const char *fileext) { - hid_t fid = -1; - hid_t did = -1; - char dsname[32]; - char scalename[32]; + hid_t fid = -1; + hid_t did = -1; + char dsname[32]; + char scalename[32]; + herr_t ds_existed = 0; snprintf(dsname, sizeof(dsname), "%s%s", DATASET_NAME, "ac"); @@ -1357,6 +1358,14 @@ test_char_attachscales(const char *fileext) if (create_char_dataset(fid, "ac", 0) < 0) goto out; + /* test finding dataset dsname */ + if ((ds_existed = H5LTfind_dataset(fid, dsname)) < 0) + goto out; + if (ds_existed == 0) { + printf("Unexpected result: Dataset \"%s\" does exist\n", dsname); + goto out; + } + if ((did = H5Dopen2(fid, dsname, H5P_DEFAULT)) >= 0) { snprintf(scalename, sizeof(scalename), "%s%s", DS_1_NAME, "ac"); if (test_attach_scale(fid, did, scalename, DIM0) < 0) diff --git a/hl/test/test_lite.c b/hl/test/test_lite.c index 9bbad45d609..23508b79990 100644 --- a/hl/test/test_lite.c +++ b/hl/test/test_lite.c @@ -29,6 +29,9 @@ #define DSET6_NAME "dataset double" #define DSET7_NAME "dataset string" +/* Name of a non-existing dataset, do not create a dataset with this name */ +#define NODS_NAME "dataset" + #define DIM 6 #define ATTR_NAME_SUB "att" @@ -60,6 +63,7 @@ test_dsets(void) hsize_t dims[2] = {2, 3}; hid_t file_id; hid_t dataset_id; + herr_t ds_existed = 0; /* whether searched ds exists */ char data_char_in[DIM] = {1, 2, 3, 4, 5, 6}; char data_char_out[DIM]; short data_short_in[DIM] = {1, 2, 3, 4, 5, 6}; @@ -348,6 +352,23 @@ test_dsets(void) if (strcmp(data_string_in, data_string_out) != 0) goto out; + PASSED(); + + /*------------------------------------------------------------------------- + * H5LTfind_dataset test + *------------------------------------------------------------------------- + */ + + HL_TESTING2("H5LTfind_dataset"); + + /* Try to find a non-existing ds whose name matches existing datasets partially */ + if ((ds_existed = H5LTfind_dataset(file_id, NODS_NAME)) < 0) + goto out; + if (ds_existed > 0) { + printf("Dataset \"%s\" does not exist.\n", NODS_NAME); + goto out; + } + /*------------------------------------------------------------------------- * end tests *------------------------------------------------------------------------- @@ -1075,7 +1096,7 @@ test_integers(void) char *dt_str; size_t str_len; - HL_TESTING3("\n text for integer types"); + HL_TESTING3(" text for integer types"); if ((dtype = H5LTtext_to_dtype("H5T_NATIVE_INT\n", H5LT_DDL)) < 0) goto out; @@ -1881,6 +1902,7 @@ test_text_dtype(void) { HL_TESTING2("H5LTtext_to_dtype"); + printf("\n"); if (test_integers() < 0) goto out; diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 0bb324ce6dc..78ed4d5d8b5 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -285,6 +285,18 @@ Bug Fixes since HDF5-1.14.4 release APIs in HDF5 will be modified/written in this manner, regarding the length of a character string. + Fixes GitHub #4447 + + - Fixed heap-buffer-overflow in h5dump + + h5dump aborted when provided with a malformed input file. The was because + the buffer size for checksum was smaller than H5_SIZEOF_CHKSUM, causing + an overflow while calculating the offset to the checksum in the buffer. + A check was added so H5F_get_checksums would fail appropriately in all + of its occurrences. + + Fixes GitHub #4434 + - Fixed library to allow usage of page buffering feature for serial file access with parallel builds of HDF5 From a3d4ba37bcf0748976435fc3bb3ae8c6fb5e8e54 Mon Sep 17 00:00:00 2001 From: bmribler <39579120+bmribler@users.noreply.github.com> Date: Mon, 23 Sep 2024 23:28:23 -0400 Subject: [PATCH 5/7] Fix minor spelling in documentation (#4870) --- src/H5Ppublic.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h index 6ee93441586..0ebe6c54a7a 100644 --- a/src/H5Ppublic.h +++ b/src/H5Ppublic.h @@ -2499,8 +2499,8 @@ H5_DLL herr_t H5Pset_deflate(hid_t plist_id, unsigned level); * pipeline * \param[in] flags Bit vector specifying certain general properties of * the filter - * \param[in] cd_nelmts Number of elements in \p c_values - * \param[in] c_values Auxiliary data for the filter + * \param[in] cd_nelmts Number of elements in \p cd_values + * \param[in] cd_values Auxiliary data for the filter * * \return \herr_t * @@ -2756,7 +2756,7 @@ H5_DLL herr_t H5Pset_deflate(hid_t plist_id, unsigned level); * */ H5_DLL herr_t H5Pset_filter(hid_t plist_id, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, - const unsigned int c_values[]); + const unsigned int cd_values[]); /** * \ingroup OCPL * From b568de32e8eb2d5072980d7cb9c5604d2a891699 Mon Sep 17 00:00:00 2001 From: Larry Knox Date: Sat, 28 Sep 2024 07:02:37 -0500 Subject: [PATCH 6/7] Updated Platforms tested in RELEASE.txt Incremented version subrelease to -3. --- README.md | 2 +- config/cmake/scripts/HDF5config.cmake | 2 +- configure | 22 ++--- configure.ac | 2 +- release_docs/NEWSLETTER.txt | 2 +- release_docs/RELEASE.txt | 120 ++++++++++++-------------- src/H5public.h | 6 +- 7 files changed, 71 insertions(+), 85 deletions(-) diff --git a/README.md b/README.md index 2f4f512f8c4..c2a9f2ea50c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -HDF5 version 1.14.5-2 currently under development +HDF5 version 1.14.5-3 currently under development ![HDF5 Logo](doxygen/img/HDF5.png) diff --git a/config/cmake/scripts/HDF5config.cmake b/config/cmake/scripts/HDF5config.cmake index 21f21c9d80c..102e2b94ba2 100644 --- a/config/cmake/scripts/HDF5config.cmake +++ b/config/cmake/scripts/HDF5config.cmake @@ -38,7 +38,7 @@ cmake_minimum_required (VERSION 3.18) ############################################################################## set (CTEST_SOURCE_VERSION "1.14.5") -set (CTEST_SOURCE_VERSEXT "-2") +set (CTEST_SOURCE_VERSEXT "-3") ############################################################################## # handle input parameters to script. diff --git a/configure b/configure index c9da1a0298b..f844b15efc3 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for HDF5 1.14.5-2. +# Generated by GNU Autoconf 2.71 for HDF5 1.14.5-3. # # Report bugs to . # @@ -629,8 +629,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='HDF5' PACKAGE_TARNAME='hdf5' -PACKAGE_VERSION='1.14.5-2' -PACKAGE_STRING='HDF5 1.14.5-2' +PACKAGE_VERSION='1.14.5-3' +PACKAGE_STRING='HDF5 1.14.5-3' PACKAGE_BUGREPORT='help@hdfgroup.org' PACKAGE_URL='' @@ -1711,7 +1711,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures HDF5 1.14.5-2 to adapt to many kinds of systems. +\`configure' configures HDF5 1.14.5-3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1782,7 +1782,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of HDF5 1.14.5-2:";; + short | recursive ) echo "Configuration of HDF5 1.14.5-3:";; esac cat <<\_ACEOF @@ -2098,7 +2098,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -HDF5 configure 1.14.5-2 +HDF5 configure 1.14.5-3 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2910,7 +2910,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by HDF5 $as_me 1.14.5-2, which was +It was created by HDF5 $as_me 1.14.5-3, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -4410,7 +4410,7 @@ fi # Define the identity of the package. PACKAGE='hdf5' - VERSION='1.14.5-2' + VERSION='1.14.5-3' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -35221,7 +35221,7 @@ Usage: $0 [OPTIONS] Report bugs to ." lt_cl_version="\ -HDF5 config.lt 1.14.5-2 +HDF5 config.lt 1.14.5-3 configured by $0, generated by GNU Autoconf 2.71. Copyright (C) 2011 Free Software Foundation, Inc. @@ -37398,7 +37398,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by HDF5 $as_me 1.14.5-2, which was +This file was extended by HDF5 $as_me 1.14.5-3, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -37470,7 +37470,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -HDF5 config.status 1.14.5-2 +HDF5 config.status 1.14.5-3 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 47c41f6f12f..5fa8095103a 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ([2.71]) ## NOTE: Do not forget to change the version number here when we do a ## release!!! ## -AC_INIT([HDF5], [1.14.5-2], [help@hdfgroup.org]) +AC_INIT([HDF5], [1.14.5-3], [help@hdfgroup.org]) AC_CONFIG_SRCDIR([src/H5.c]) AC_CONFIG_HEADERS([src/H5config.h]) diff --git a/release_docs/NEWSLETTER.txt b/release_docs/NEWSLETTER.txt index a622e45942f..e114b54af6f 100644 --- a/release_docs/NEWSLETTER.txt +++ b/release_docs/NEWSLETTER.txt @@ -1,4 +1,4 @@ -HDF5 version 1.14.5-2 currently under development +HDF5 version 1.14.5-3 currently under development Features included for the next major release: ---------------------------------------------------------------------------- diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 78ed4d5d8b5..f03310283fb 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -1,4 +1,4 @@ -HDF5 version 1.14.5-2 currently under development +HDF5 version 1.14.5-3 currently under development ================================================================================ @@ -205,7 +205,7 @@ Bug Fixes since HDF5-1.14.4 release Fixes GitHub #4780 - - Fixed a segfault by H5Gmove2, extending to H5Lcopy and H5Lmove + - Fixed a segfault by H5Gmove2, extended to fix H5Lcopy and H5Lmove A user's application segfaulted when it passed in an invalid location ID to H5Gmove2. The src and dst location IDs must be either a file or a group @@ -224,7 +224,7 @@ Bug Fixes since HDF5-1.14.4 release Fixes GitHub #4730 - - Fixed a segfault by H5Fget_intent(), extending to several other functions + - Fixed a segfault by H5Fget_intent(), extended to fix several other functions A user's program generated a segfault when the ID passed into H5Fget_intent() was not a file ID. In addition to H5Fget_intent(), a number of APIs also failed @@ -458,64 +458,68 @@ Bug Fixes since HDF5-1.14.4 release Platforms Tested =================== - - HDF5 supports the latest macOS versions, including the current and two - preceding releases. As new major macOS versions become available, HDF5 - will discontinue support for the oldest version and add the latest - version to its list of compatible systems, along with the previous two - releases. - - Linux 5.16.14-200.fc35 GNU gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9) - #1 SMP x86_64 GNU/Linux GNU Fortran (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9) - Fedora35 clang version 13.0.0 (Fedora 13.0.0-3.fc35) + - HDF5 is tested with the two latest macOS versions that are available + on github runners. As new major macOS versions become available, HDF5 + will discontinue support for the older version and add the new latest + version to its list of compatible systems, along with the previous + version. + + Linux 6.8.0-1010-aws GNU gcc, gfortran, g++ + #10-Ubuntu SMP 2024 x86_64 (Ubuntu 13.2.0-23ubuntu4) 13.2.0 + GNU/Linux Ubuntu 24.04 Ubuntu clang version 18.1.3 (1ubuntu1) + Intel(R) oneAPI DPC++/C++ Compiler 2024.2.0 + ifx (IFX) 2024.2.0 20240602 (cmake and autotools) - Linux 5.19.0-1023-aws GNU gcc, gfortran, g++ - #24-Ubuntu SMP x86_64 GNU/Linux (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0 + Linux 6.5.0-1018-aws GNU gcc, gfortran, g++ + #18-Ubuntu SMP x86_64 GNU/Linux (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Ubuntu 22.04 Ubuntu clang version 14.0.0-1ubuntu1 - Intel(R) oneAPI DPC++/C++ Compiler 2023.1.0 - ifort (IFORT) 2021.9.0 20230302 + Intel(R) oneAPI DPC++/C++ Compiler 2024.0.2 + ifx (IFX) 2024.0.2 20231213 (cmake and autotools) - Linux 5.14.21-cray_shasta_c cray-mpich/8.1.23 + Linux 5.14.21-cray_shasta_c cray-mpich/8.1.28 #1 SMP x86_64 GNU/Linux cce/15.0.0 - (frontier) gcc/12.2.0 + (frontier) gcc/13.2 (cmake) - Linux 5.11.0-34-generic GNU gcc (GCC) 9.4.0-1ubuntu1 - #36-Ubuntu SMP x86_64 GNU/Linux GNU Fortran (GCC) 9.4.0-1ubuntu1 - Ubuntu 20.04 Ubuntu clang version 10.0.0-4ubuntu1 - Intel(R) oneAPI DPC++/C++ Compiler 2023.1.0 - ifort (IFORT) 2021.9.0 20230302 + Linux 5.14.0-427.24.1.el9_4 GNU gcc, gfortran, g++ (Red Hat 11.4.1-3) + #1 SMP x86_64 GNU/Linux clang version 17.0.6 + Rocky 9 Intel(R) oneAPI DPC++/C++ Compiler 2024.2.0 + ifx (IFX) 2024.2.0 (cmake and autotools) - Linux 4.14.0-115.35.1.1chaos aue/openmpi/4.1.4-arm-22.1.0.12 - #1 SMP aarch64 GNU/Linux Arm C/C++/Fortran Compiler version 22.1 - (stria) (based on LLVM 13.0.1) + Linux-4.18.0-553.16.1.1toss.t4 openmpi/4.1.2 + #1 SMP x86_64 GNU/Linux clang 14.0.6 + (corona, dane) GCC 12.1.1 + Intel(R) oneAPI DPC++/C++ Compiler 2023.2.1 + ifx (IFX) 2023.2.1 + + Linux-4.18.0-553.5.1.1toss.t4 openmpi/4.1/4.1.6 + #1 SMP x86_64 GNU/Linux clang 16.0.6 + (eclipse) GCC 12.3.0 + Intel(R) oneAPI DPC++/C++ Compiler 2024.0.2 + ifx (IFX) 2024.0.2 (cmake) Linux 4.14.0-115.35.1.3chaos spectrum-mpi/rolling-release - #1 SMP ppc64le GNU/Linux clang 12.0.1 - (vortex) GCC 8.3.1 - XL 2021.09.22 + #1 SMP ppc64le GNU/Linux clang 17.0.6 + (vortex) GCC 12.2.1 + nvhpc 24.1 + XL 2023.06.28 (cmake) - Linux-4.14.0-115.21.2 spectrum-mpi/rolling-release - #1 SMP ppc64le GNU/Linux clang 12.0.1, 14.0.5 + Linux-4.14.0-115.35.1 spectrum-mpi/rolling-release + #1 SMP ppc64le GNU/Linux clang 14.0.5, 15.0.6 (lassen) GCC 8.3.1 - XL 16.1.1.2, 2021.09.22, 2022.08.05 + XL 2021.09.22, 2022.08.05 (cmake) - Linux-4.12.14-197.99-default cray-mpich/7.7.14 - #1 SMP x86_64 GNU/Linux cce 12.0.3 - (theta) GCC 11.2.0 - llvm 9.0 - Intel 19.1.2 - Linux 3.10.0-1160.36.2.el7.ppc64 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) #1 SMP ppc64be GNU/Linux g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) Power8 (echidna) GNU Fortran (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) - Linux 3.10.0-1160.24.1.el7 GNU C (gcc), Fortran (gfortran), C++ (g++) + Linux 3.10.0-1160.80.1.el7 GNU C (gcc), Fortran (gfortran), C++ (g++) #1 SMP x86_64 GNU/Linux compilers: Centos7 Version 4.8.5 20150623 (Red Hat 4.8.5-4) (jelly/kituo/moohan) Version 4.9.3, Version 7.2.0, Version 8.3.0, @@ -538,37 +542,19 @@ Platforms Tested (autotools and cmake) - Linux-3.10.0-1160.0.0.1chaos openmpi-4.1.2 - #1 SMP x86_64 GNU/Linux clang 6.0.0, 11.0.1 - (quartz) GCC 7.3.0, 8.1.0 - Intel 19.0.4, 2022.2, oneapi.2022.2 - - Linux-3.10.0-1160.90.1.1chaos openmpi/4.1 - #1 SMP x86_64 GNU/Linux GCC 7.2.0 - (skybridge) Intel/19.1 + Linux-3.10.0-1160.119.1.1chaos openmpi/4.1.4 + #1 SMP x86_64 GNU/Linux clang 16.0.6 + (skybridge) Intel(R) oneAPI DPC++/C++ Compiler 2023.2.0 + ifx (IFX) 2023.2.0 (cmake) Linux-3.10.0-1160.90.1.1chaos openmpi/4.1 - #1 SMP x86_64 GNU/Linux GCC 7.2.0 - (attaway) Intel/19.1 + #1 SMP x86_64 GNU/Linux clang 16.0.6 + (attaway) GCC 12.1.0 + Intel(R) oneAPI DPC++/C++ Compiler 2024.0.2 + ifx (IFX) 2024.0.2 (cmake) - Linux-3.10.0-1160.90.1.1chaos openmpi-intel/4.1 - #1 SMP x86_64 GNU/Linux Intel/19.1.2, 21.3.0 and 22.2.0 - (chama) (cmake) - - macOS Apple M1 11.6 Apple clang version 12.0.5 (clang-1205.0.22.11) - Darwin 20.6.0 arm64 gfortran GNU Fortran (Homebrew GCC 11.2.0) 11.1.0 - (macmini-m1) Intel icc/icpc/ifort version 2021.3.0 202106092021.3.0 20210609 - - macOS Big Sur 11.3.1 Apple clang version 12.0.5 (clang-1205.0.22.9) - Darwin 20.4.0 x86_64 gfortran GNU Fortran (Homebrew GCC 10.2.0_3) 10.2.0 - (bigsur-1) Intel icc/icpc/ifort version 2021.2.0 20210228 - - Mac OS X El Capitan 10.11.6 Apple clang version 7.3.0 from Xcode 7.3 - 64-bit gfortran GNU Fortran (GCC) 5.2.0 - (osx1011test) Intel icc/icpc/ifort version 16.0.2 - Linux 2.6.32-573.22.1.el6 GNU C (gcc), Fortran (gfortran), C++ (g++) #1 SMP x86_64 GNU/Linux compilers: Centos6 Version 4.4.7 20120313 @@ -581,9 +567,9 @@ Platforms Tested Windows 10 x64 Visual Studio 2019 w/ clang 12.0.0 with MSVC-like command-line (C/C++ only - cmake) Visual Studio 2019 w/ Intel (C/C++ only - cmake) - Visual Studio 2022 w/ clang 15.0.1 + Visual Studio 2022 w/ clang 17.0.3 with MSVC-like command-line (C/C++ only - cmake) - Visual Studio 2022 w/ Intel C/C++/Fortran oneAPI 2023 (cmake) + Visual Studio 2022 w/ Intel C/C++ oneAPI 2023 (cmake) Visual Studio 2019 w/ MSMPI 10.1 (C only - cmake) diff --git a/src/H5public.h b/src/H5public.h index a03cbbc4b65..b5cb7cca7fe 100644 --- a/src/H5public.h +++ b/src/H5public.h @@ -87,15 +87,15 @@ /** * For pre-releases like \c snap0. Empty string for official releases. */ -#define H5_VERS_SUBRELEASE "2" +#define H5_VERS_SUBRELEASE "3" /** * Short version string */ -#define H5_VERS_STR "1.14.5-2" +#define H5_VERS_STR "1.14.5-3" /** * Full version string */ -#define H5_VERS_INFO "HDF5 library version: 1.14.5-2" +#define H5_VERS_INFO "HDF5 library version: 1.14.5-3" #define H5check() H5check_version(H5_VERS_MAJOR, H5_VERS_MINOR, H5_VERS_RELEASE) From 7a381d1873290c065dd9fafae05df105d5b60fe6 Mon Sep 17 00:00:00 2001 From: Larry Knox Date: Mon, 30 Sep 2024 09:28:40 -0500 Subject: [PATCH 7/7] Set release version 1.14.5. --- README.md | 2 +- config/cmake/scripts/HDF5config.cmake | 2 +- configure | 22 +++++++++++----------- configure.ac | 2 +- release_docs/NEWSLETTER.txt | 2 +- release_docs/RELEASE.txt | 2 +- src/H5public.h | 6 +++--- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index c2a9f2ea50c..127ac4b2a3a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -HDF5 version 1.14.5-3 currently under development +HDF5 version 1.14.5 released on 2024-09-30 ![HDF5 Logo](doxygen/img/HDF5.png) diff --git a/config/cmake/scripts/HDF5config.cmake b/config/cmake/scripts/HDF5config.cmake index 71087eb9dca..701eb7c0d3c 100644 --- a/config/cmake/scripts/HDF5config.cmake +++ b/config/cmake/scripts/HDF5config.cmake @@ -38,7 +38,7 @@ cmake_minimum_required (VERSION 3.18) ############################################################################## set (CTEST_SOURCE_VERSION "1.14.5") -set (CTEST_SOURCE_VERSEXT "-3") +set (CTEST_SOURCE_VERSEXT "") ############################################################################## # handle input parameters to script. diff --git a/configure b/configure index f844b15efc3..41a2896ce3c 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for HDF5 1.14.5-3. +# Generated by GNU Autoconf 2.71 for HDF5 1.14.5. # # Report bugs to . # @@ -629,8 +629,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='HDF5' PACKAGE_TARNAME='hdf5' -PACKAGE_VERSION='1.14.5-3' -PACKAGE_STRING='HDF5 1.14.5-3' +PACKAGE_VERSION='1.14.5' +PACKAGE_STRING='HDF5 1.14.5' PACKAGE_BUGREPORT='help@hdfgroup.org' PACKAGE_URL='' @@ -1711,7 +1711,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures HDF5 1.14.5-3 to adapt to many kinds of systems. +\`configure' configures HDF5 1.14.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1782,7 +1782,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of HDF5 1.14.5-3:";; + short | recursive ) echo "Configuration of HDF5 1.14.5:";; esac cat <<\_ACEOF @@ -2098,7 +2098,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -HDF5 configure 1.14.5-3 +HDF5 configure 1.14.5 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2910,7 +2910,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by HDF5 $as_me 1.14.5-3, which was +It was created by HDF5 $as_me 1.14.5, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -4410,7 +4410,7 @@ fi # Define the identity of the package. PACKAGE='hdf5' - VERSION='1.14.5-3' + VERSION='1.14.5' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -35221,7 +35221,7 @@ Usage: $0 [OPTIONS] Report bugs to ." lt_cl_version="\ -HDF5 config.lt 1.14.5-3 +HDF5 config.lt 1.14.5 configured by $0, generated by GNU Autoconf 2.71. Copyright (C) 2011 Free Software Foundation, Inc. @@ -37398,7 +37398,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by HDF5 $as_me 1.14.5-3, which was +This file was extended by HDF5 $as_me 1.14.5, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -37470,7 +37470,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -HDF5 config.status 1.14.5-3 +HDF5 config.status 1.14.5 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 5fa8095103a..b0809dd2c6c 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ([2.71]) ## NOTE: Do not forget to change the version number here when we do a ## release!!! ## -AC_INIT([HDF5], [1.14.5-3], [help@hdfgroup.org]) +AC_INIT([HDF5], [1.14.5], [help@hdfgroup.org]) AC_CONFIG_SRCDIR([src/H5.c]) AC_CONFIG_HEADERS([src/H5config.h]) diff --git a/release_docs/NEWSLETTER.txt b/release_docs/NEWSLETTER.txt index e114b54af6f..2b88226ebd5 100644 --- a/release_docs/NEWSLETTER.txt +++ b/release_docs/NEWSLETTER.txt @@ -1,4 +1,4 @@ -HDF5 version 1.14.5-3 currently under development +HDF5 version 1.14.5 released on 2024-09-30 Features included for the next major release: ---------------------------------------------------------------------------- diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index f03310283fb..a34aeab8055 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -1,4 +1,4 @@ -HDF5 version 1.14.5-3 currently under development +HDF5 version 1.14.5 released on 2024-09-30 ================================================================================ diff --git a/src/H5public.h b/src/H5public.h index b5cb7cca7fe..d8cb043725f 100644 --- a/src/H5public.h +++ b/src/H5public.h @@ -87,15 +87,15 @@ /** * For pre-releases like \c snap0. Empty string for official releases. */ -#define H5_VERS_SUBRELEASE "3" +#define H5_VERS_SUBRELEASE "" /** * Short version string */ -#define H5_VERS_STR "1.14.5-3" +#define H5_VERS_STR "1.14.5" /** * Full version string */ -#define H5_VERS_INFO "HDF5 library version: 1.14.5-3" +#define H5_VERS_INFO "HDF5 library version: 1.14.5" #define H5check() H5check_version(H5_VERS_MAJOR, H5_VERS_MINOR, H5_VERS_RELEASE)