From d7fb01908c4e627baf24047426817464ff45e617 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Fri, 1 Oct 2021 09:33:29 +0200 Subject: [PATCH] fix(shm): fix regression in debug mode data --- fairmq/shmem/Manager.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fairmq/shmem/Manager.h b/fairmq/shmem/Manager.h index 826096f3..fa234167 100644 --- a/fairmq/shmem/Manager.h +++ b/fairmq/shmem/Manager.h @@ -732,9 +732,9 @@ class Manager boost::interprocess::scoped_lock lock(fShmMtx); IncrementShmMsgCounter(fSegmentId); if (fMsgDebug->count(fSegmentId) == 0) { - (*fMsgDebug).emplace(fSegmentId, fShmVoidAlloc); + fMsgDebug->emplace(fSegmentId, fShmVoidAlloc); } - (*fMsgDebug).at(fSegmentId).emplace( + fMsgDebug->at(fSegmentId).emplace( static_cast(GetHandleFromAddress(ShmHeader::UserPtr(ptr), fSegmentId)), MsgDebug(getpid(), size, std::chrono::system_clock::now().time_since_epoch().count()) ); @@ -747,17 +747,17 @@ class Manager void Deallocate(boost::interprocess::managed_shared_memory::handle_t handle, uint16_t segmentId) { char* ptr = GetAddressFromHandle(handle, segmentId); - ShmHeader::Destruct(ptr); - boost::apply_visitor(SegmentDeallocate(ptr), fSegments.at(segmentId)); #ifdef FAIRMQ_DEBUG_MODE boost::interprocess::scoped_lock lock(fShmMtx); DecrementShmMsgCounter(segmentId); try { - (*fMsgDebug).at(segmentId).erase(handle); + fMsgDebug->at(segmentId).erase(GetHandleFromAddress(ShmHeader::UserPtr(ptr), fSegmentId)); } catch(const std::out_of_range& oor) { LOG(debug) << "could not locate debug container for " << segmentId << ": " << oor.what(); } #endif + ShmHeader::Destruct(ptr); + boost::apply_visitor(SegmentDeallocate(ptr), fSegments.at(segmentId)); } char* ShrinkInPlace(size_t newSize, char* localPtr, uint16_t segmentId)