diff --git a/openmp/libomptarget/src/interface.cpp b/openmp/libomptarget/src/interface.cpp --- a/openmp/libomptarget/src/interface.cpp +++ b/openmp/libomptarget/src/interface.cpp @@ -58,7 +58,7 @@ case tgt_mandatory: if (!success) { if (getInfoLevel() & OMP_INFOTYPE_DUMP_TABLE) - for (const auto &Device : PM->Devices) + for (auto &Device : PM->Devices) dumpTargetPointerMappings(loc, Device); else FAILURE_MESSAGE("Run with LIBOMPTARGET_DEBUG=%d to dump host-target " @@ -76,7 +76,7 @@ 1, "failure of target construct while offloading is mandatory"); } else { if (getInfoLevel() & OMP_INFOTYPE_DUMP_TABLE) - for (const auto &Device : PM->Devices) + for (auto &Device : PM->Devices) dumpTargetPointerMappings(loc, Device); } break; diff --git a/openmp/libomptarget/src/private.h b/openmp/libomptarget/src/private.h --- a/openmp/libomptarget/src/private.h +++ b/openmp/libomptarget/src/private.h @@ -99,7 +99,7 @@ //////////////////////////////////////////////////////////////////////////////// /// dump a table of all the host-target pointer pairs on failure static inline void dumpTargetPointerMappings(const ident_t *Loc, - const DeviceTy &Device) { + DeviceTy &Device) { if (Device.HostDataToTargetMap.empty()) return; @@ -109,6 +109,7 @@ Kernel.getFilename(), Kernel.getLine(), Kernel.getColumn()); INFO(OMP_INFOTYPE_ALL, Device.DeviceID, "%-18s %-18s %s %s %s\n", "Host Ptr", "Target Ptr", "Size (B)", "RefCount", "Declaration"); + Device.DataMapMtx.lock(); for (const auto &HostTargetMap : Device.HostDataToTargetMap) { SourceInfo Info(HostTargetMap.HstPtrName); INFO(OMP_INFOTYPE_ALL, Device.DeviceID, @@ -118,6 +119,7 @@ HostTargetMap.getRefCount(), Info.getName(), Info.getFilename(), Info.getLine(), Info.getColumn()); } + Device.DataMapMtx.unlock(); } ////////////////////////////////////////////////////////////////////////////////