diff --git a/src/memory_pool.c b/src/memory_pool.c index eb0054522..f4ecdc7f6 100644 --- a/src/memory_pool.c +++ b/src/memory_pool.c @@ -85,6 +85,10 @@ static umf_result_t umfPoolCreateInternal(const umf_memory_pool_ops_t *ops, } void umfPoolDestroy(umf_memory_pool_handle_t hPool) { + if (umf_ba_global_is_destroyed()) { + return; + } + hPool->ops.finalize(hPool->pool_priv); umf_memory_provider_handle_t hUpstreamProvider = NULL; diff --git a/src/memory_provider.c b/src/memory_provider.c index ce6a10a20..10decc8b2 100644 --- a/src/memory_provider.c +++ b/src/memory_provider.c @@ -194,7 +194,7 @@ umf_result_t umfMemoryProviderCreate(const umf_memory_provider_ops_t *ops, } void umfMemoryProviderDestroy(umf_memory_provider_handle_t hProvider) { - if (hProvider) { + if (hProvider && !umf_ba_global_is_destroyed()) { hProvider->ops.finalize(hProvider->provider_priv); umf_ba_global_free(hProvider); }