From 538908929dd1460bcad60cccebc75c6fcd48c2c0 Mon Sep 17 00:00:00 2001 From: Augustin Degomme Date: Fri, 22 Nov 2019 12:07:18 +0100 Subject: [PATCH] fix use after delete. --- src/smpi/internals/smpi_shared.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/smpi/internals/smpi_shared.cpp b/src/smpi/internals/smpi_shared.cpp index 15fa823d67..9f9d03b868 100644 --- a/src/smpi/internals/smpi_shared.cpp +++ b/src/smpi/internals/smpi_shared.cpp @@ -350,6 +350,13 @@ void *smpi_shared_malloc_intercept(size_t size, const char *file, int line) { return smpi_shared_malloc(size, file, line); } +void* smpi_shared_calloc_intercept(size_t num_elm, size_t elem_size, const char* file, int line){ + if( simgrid::config::get_value("smpi/auto-shared-malloc-thresh") == 0 || elem_size*num_elm < simgrid::config::get_value("smpi/auto-shared-malloc-thresh")) + return ::operator new(elem_size*num_elm); + else + return smpi_shared_malloc(elem_size*num_elm, file, line); +} + void *smpi_shared_malloc(size_t size, const char *file, int line) { if (size > 0 && smpi_cfg_shared_malloc == SharedMallocType::LOCAL) { return smpi_shared_malloc_local(size, file, line); @@ -456,12 +463,12 @@ void smpi_shared_free(void *ptr) auto meta = allocs_metadata.find(ptr); if (meta != allocs_metadata.end()){ meta->second.data->second.count--; + XBT_DEBUG("Shared free - Global - of %p", ptr); + munmap(ptr, meta->second.size); if(meta->second.data->second.count==0){ delete meta->second.data; allocs_metadata.erase(ptr); } - XBT_DEBUG("Shared free - Global - of %p", ptr); - munmap(ptr, meta->second.size); }else{ ::operator delete(ptr); return; -- 2.20.1