diff --git a/fairmq/shmem/FairMQMessageSHM.cxx b/fairmq/shmem/FairMQMessageSHM.cxx index c2cb506f..196a004f 100644 --- a/fairmq/shmem/FairMQMessageSHM.cxx +++ b/fairmq/shmem/FairMQMessageSHM.cxx @@ -108,10 +108,16 @@ FairMQMessageSHM::FairMQMessageSHM(FairMQRegionPtr& region, void* data, const si } else { - MetaHeader* metaPtr = new(zmq_msg_data(&fMessage)) MetaHeader(); - metaPtr->fSize = size; - metaPtr->fHandle = fHandle; - metaPtr->fRegionId = fRegionId; + MetaHeader header; + header.fSize = size; + header.fHandle = fHandle; + header.fRegionId = fRegionId; + memcpy(zmq_msg_data(&fMessage), &header, sizeof(MetaHeader)); + // placement new fails in some environments, TODO: investigate why: + // MetaHeader* metaPtr = new(zmq_msg_data(&fMessage)) MetaHeader(); + // metaPtr->fSize = size; + // metaPtr->fHandle = fHandle; + // metaPtr->fRegionId = fRegionId; fMetaCreated = true; } diff --git a/fairmq/shmem/FairMQShmMonitor.cxx b/fairmq/shmem/FairMQShmMonitor.cxx index 7976621a..d1a11bed 100644 --- a/fairmq/shmem/FairMQShmMonitor.cxx +++ b/fairmq/shmem/FairMQShmMonitor.cxx @@ -347,7 +347,7 @@ void Monitor::Cleanup(const string& segmentName) unsigned int regionCount = rc->fCount; for (unsigned int i = 1; i <= regionCount; ++i) { - RemoveObject("fairmq_shmem_region_" + to_string(regionCount)); + RemoveObject("fairmq_shmem_region_" + to_string(i)); } } else