When MPI attributes were created with MPI_Comm_delete_attr_function* call backs, the MPI_Finalize() call will invoke the call back for the user to clean up resources.
HDF5 uses the call back to write cached data to the file at MPI_Finalize() time.
However, when we intercepted the MPI_Finalize() call, we unmount the client before calling PMPI_Finalize(), which causes HDF5 to write to non-existing files that may crash the client.
I noticed this issue when running qmcpack (it uses HDF5).
Fix: call PMPI_Finalize() before we unmount the client, if unifyfs_unmount() does not use MPI.
When MPI attributes were created with
MPI_Comm_delete_attr_function*
call backs, the MPI_Finalize() call will invoke the call back for the user to clean up resources. HDF5 uses the call back to write cached data to the file at MPI_Finalize() time.Example found from HDF5 source code:
However, when we intercepted the MPI_Finalize() call, we unmount the client before calling PMPI_Finalize(), which causes HDF5 to write to non-existing files that may crash the client. I noticed this issue when running qmcpack (it uses HDF5).
Fix: call PMPI_Finalize() before we unmount the client, if unifyfs_unmount() does not use MPI.