mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-21 01:04:10 +08:00
Merge pull request #2456 in HDFFV/hdf5 from ~DEROBINS/hdf5_der:develop_minor to develop
* commit 'ce7936d2b256bdd5e61a5ef018f35e9562667cac': Fixed the RELEASE.txt note for HDFFV-11057 Fix shutdown errors when using the HDF5_VOL_CONNECTOR environment variable to set a dynamically loaded plugin as the default VOL connector. Fixes HDFFV-11057 Very minor comment change in H5VLconnector.h.
This commit is contained in:
commit
eecddd9f3e
@ -419,6 +419,17 @@ New Features
|
||||
|
||||
(ADB - 2018/09/18, HDFFV-10332)
|
||||
|
||||
- Fix shutdown failure when using H5VLregister_connector_by_name/value
|
||||
|
||||
When using H5VLregister_connector_by_name/value to dynamically load a
|
||||
VOL connector plugin, the library can experience segmentation faults
|
||||
when the library is closed. This is due to the library unloading
|
||||
the plugin interface before the virtual object layer. Then, when the
|
||||
VOL shutdown occurs, it will attempt to close the VOL connector,
|
||||
however this will fail since the plugin will already have been unloaded.
|
||||
|
||||
(DER - 2020/03/18, HDFFV-11057)
|
||||
|
||||
|
||||
Parallel Library:
|
||||
-----------------
|
||||
|
4
src/H5.c
4
src/H5.c
@ -355,7 +355,9 @@ H5_term_library(void)
|
||||
pending += DOWN(Z);
|
||||
pending += DOWN(FD);
|
||||
pending += DOWN(VL);
|
||||
pending += DOWN(PL);
|
||||
/* Don't shut down the plugin code until all "pluggable" interfaces (Z, FD, PL) are shut down */
|
||||
if(pending == 0)
|
||||
pending += DOWN(PL);
|
||||
/* Don't shut down the error code until other APIs which use it are shut down */
|
||||
if(pending == 0)
|
||||
pending += DOWN(E);
|
||||
|
@ -194,7 +194,7 @@ typedef enum H5VL_object_get_t {
|
||||
H5VL_OBJECT_GET_FILE, /* object file */
|
||||
H5VL_OBJECT_GET_NAME, /* object name */
|
||||
H5VL_OBJECT_GET_TYPE, /* object type */
|
||||
H5VL_OBJECT_GET_INFO /* H5Oget_info(_by_idx|name)3 */
|
||||
H5VL_OBJECT_GET_INFO /* H5Oget_info(_by_idx|name) */
|
||||
} H5VL_object_get_t;
|
||||
|
||||
/* types for object SPECIFIC callback */
|
||||
|
@ -273,7 +273,7 @@ H5VL_term_package(void)
|
||||
else {
|
||||
if(H5I_nmembers(H5I_VOL) > 0) {
|
||||
/* Unregister all VOL connectors */
|
||||
(void)H5I_clear_type(H5I_VOL, FALSE, FALSE);
|
||||
(void)H5I_clear_type(H5I_VOL, TRUE, FALSE);
|
||||
n++;
|
||||
} /* end if */
|
||||
else {
|
||||
|
@ -1591,6 +1591,10 @@ H5VL_pass_through_file_create(const char *name, unsigned flags, hid_t fcpl_id,
|
||||
/* Get copy of our VOL info from FAPL */
|
||||
H5Pget_vol_info(fapl_id, (void **)&info);
|
||||
|
||||
/* Make sure we have info about the underlying VOL to be used */
|
||||
if (!info)
|
||||
return NULL;
|
||||
|
||||
/* Copy the FAPL */
|
||||
under_fapl_id = H5Pcopy(fapl_id);
|
||||
|
||||
@ -1645,6 +1649,10 @@ H5VL_pass_through_file_open(const char *name, unsigned flags, hid_t fapl_id,
|
||||
/* Get copy of our VOL info from FAPL */
|
||||
H5Pget_vol_info(fapl_id, (void **)&info);
|
||||
|
||||
/* Make sure we have info about the underlying VOL to be used */
|
||||
if (!info)
|
||||
return NULL;
|
||||
|
||||
/* Copy the FAPL */
|
||||
under_fapl_id = H5Pcopy(fapl_id);
|
||||
|
||||
@ -1785,6 +1793,10 @@ H5VL_pass_through_file_specific(void *file, H5VL_file_specific_t specific_type,
|
||||
/* Get copy of our VOL info from FAPL */
|
||||
H5Pget_vol_info(fapl_id, (void **)&info);
|
||||
|
||||
/* Make sure we have info about the underlying VOL to be used */
|
||||
if (!info)
|
||||
return (-1);
|
||||
|
||||
/* Copy the FAPL */
|
||||
under_fapl_id = H5Pcopy(fapl_id);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user