Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into vol_cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
qkoziol committed Sep 27, 2024
2 parents 1be1917 + 6a5514b commit 516e020
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 19 deletions.
8 changes: 7 additions & 1 deletion .github/workflows/cmake-script.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ jobs:
set (CTEST_DROP_SITE_INIT "my.cdash.org")
# Change following line to submit to your CDash dashboard to a different CDash project
#set (CTEST_DROP_LOCATION_INIT "/submit.php?project=HDF5")
set (SITE_BUILDNAME_SUFFIX "${{ steps.set-file-base.outputs.FILE_BASE }}")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} --log-level=VERBOSE")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_JAVA:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_CPP_LIB:BOOL=ON")
Expand Down Expand Up @@ -184,6 +185,7 @@ jobs:
set (CTEST_DROP_SITE_INIT "my.cdash.org")
# Change following line to submit to your CDash dashboard to a different CDash project
#set (CTEST_DROP_LOCATION_INIT "/submit.php?project=HDF5")
set (SITE_BUILDNAME_SUFFIX "${{ steps.set-file-base.outputs.FILE_BASE }}")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} --log-level=VERBOSE")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_JAVA:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_CPP_LIB:BOOL=ON")
Expand Down Expand Up @@ -284,6 +286,7 @@ jobs:
set (CTEST_DROP_SITE_INIT "my.cdash.org")
# Change following line to submit to your CDash dashboard to a different CDash project
#set (CTEST_DROP_LOCATION_INIT "/submit.php?project=HDF5")
set (SITE_BUILDNAME_SUFFIX "${{ steps.set-file-base.outputs.FILE_BASE }}")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} --log-level=VERBOSE")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_JAVA:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_CPP_LIB:BOOL=ON")
Expand Down Expand Up @@ -369,6 +372,7 @@ jobs:
set (CTEST_DROP_SITE_INIT "my.cdash.org")
# Change following line to submit to your CDash dashboard to a different CDash project
#set (CTEST_DROP_LOCATION_INIT "/submit.php?project=HDF5")
set (SITE_BUILDNAME_SUFFIX "${{ steps.set-file-base.outputs.FILE_BASE }}")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} --log-level=VERBOSE")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_JAVA:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_CPP_LIB:BOOL=ON")
Expand Down Expand Up @@ -468,7 +472,8 @@ jobs:
set (CTEST_DROP_SITE_INIT "my.cdash.org")
# Change following line to submit to your CDash dashboard to a different CDash project
#set (CTEST_DROP_LOCATION_INIT "/submit.php?project=HDF5")
set (CMAKE_GENERATOR_TOOLSET "Intel C++ Compiler 2024,fortran=ifx")
#set (CMAKE_GENERATOR_TOOLSET "Intel C++ Compiler 2024,fortran=ifx")
set (SITE_BUILDNAME_SUFFIX "${{ steps.set-file-base.outputs.FILE_BASE }}")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} --log-level=VERBOSE")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_TOOLCHAIN_FILE:STRING=config/toolchain/intel.cmake")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_JAVA:BOOL=ON")
Expand Down Expand Up @@ -566,6 +571,7 @@ jobs:
set (CTEST_DROP_SITE_INIT "my.cdash.org")
# Change following line to submit to your CDash dashboard to a different CDash project
#set (CTEST_DROP_LOCATION_INIT "/submit.php?project=HDF5")
set (SITE_BUILDNAME_SUFFIX "${{ steps.set-file-base.outputs.FILE_BASE }}")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} --log-level=VERBOSE")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_JAVA:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_CPP_LIB:BOOL=ON")
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/daily-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
- name: Read inputs
id: getinputs
run: |
echo "INPUTS_IGNORE=${{ github.event.inputs.use_ignore }}" >> $GITHUB_OUTPUT
echo "INPUTS_IGNORE=${{ inputs.use_ignore }}" >> $GITHUB_OUTPUT
- run: echo "use_ignore is ${{ steps.getinputs.outputs.INPUTS_IGNORE }}."

Expand Down
12 changes: 6 additions & 6 deletions bin/genparser
Original file line number Diff line number Diff line change
Expand Up @@ -200,14 +200,14 @@ if [ "$verbose" = true ] ; then
fi
${HDF5_FLEX} --nounistd -PH5LTyy -o ${path_to_hl_src}/H5LTanalyze.c ${path_to_hl_src}/H5LTanalyze.l

# fix H5LTparse.c and H5LTlparse.h to declare H5LTyyparse return type as an
# hid_t instead of int. Currently the generated function H5LTyyparse is
# generated with a return value of type int, which is a mapping to the
# Fix H5LTparse.c and H5LTparse.h to declare H5LTyyparse return type as an
# hid_t instead of int. Currently, the H5LTyyparse function is generated
# with a return value of type int, which is a mapping to the
# flex yyparse function. The return value in the HL library should be
# an hid_t.
# I propose to not use flex to generate this function, but for now I am
# adding a perl command to find and replace this function declaration in
# H5LTparse.c.
# Use Perl command to find and replace this function declaration
# in H5LTparse.c. This is a temporary solution until a method that does not
# use flex is implemented.
perl -0777 -pi -e 's/int yyparse/hid_t yyparse/igs' ${path_to_hl_src}/H5LTparse.c
perl -0777 -pi -e 's/int\nyyparse/hid_t\nyyparse/igs' ${path_to_hl_src}/H5LTparse.c
perl -0777 -pi -e 's/int H5LTyyparse/hid_t H5LTyyparse/igs' ${path_to_hl_src}/H5LTparse.c
Expand Down
20 changes: 19 additions & 1 deletion release_docs/RELEASE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -819,7 +819,16 @@ New Features

Documentation:
--------------
-
- Documented that leaving HDF5 threads running at termination is unsafe

Added doc/threadsafety-warning.md as a warning that threads which use
HDF5 resources must be closed before either process exit or library
close. If HDF5 threads are alive during either of these operations,
their resources will not be cleaned up properly and undefined behavior
is possible.

This document also includes a discussion on potential ways to mitigate
this issue.


Support for new platforms, languages and compilers
Expand All @@ -840,6 +849,15 @@ Bug Fixes since HDF5-1.14.0 release
and H5VLget_connector_id_by_value should be closed to avoid resource
leaks.

- 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
Expand Down
13 changes: 8 additions & 5 deletions src/H5Faccum.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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 */
Expand Down Expand Up @@ -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 */

Expand All @@ -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) {
Expand Down
4 changes: 2 additions & 2 deletions src/H5Fint.c
Original file line number Diff line number Diff line change
Expand Up @@ -1555,7 +1555,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)
Expand Down Expand Up @@ -3888,7 +3888,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 */
Expand Down
2 changes: 1 addition & 1 deletion src/H5Fio.c
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand Down
2 changes: 1 addition & 1 deletion src/H5Fpkg.h
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,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);
Expand Down
2 changes: 1 addition & 1 deletion test/accum.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down

0 comments on commit 516e020

Please sign in to comment.