From fa9f6119c3a2f932ea9b12846574af54e71fd6f2 Mon Sep 17 00:00:00 2001 From: Matthieu Dorier Date: Fri, 2 Nov 2018 16:27:06 -0500 Subject: [PATCH] corrected memory error when calling MPI_Gather --- src/service/ConnectionInfoGenerator.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/service/ConnectionInfoGenerator.cpp b/src/service/ConnectionInfoGenerator.cpp index f2f801f..cc29b99 100644 --- a/src/service/ConnectionInfoGenerator.cpp +++ b/src/service/ConnectionInfoGenerator.cpp @@ -24,7 +24,10 @@ ConnectionInfoGenerator::~ConnectionInfoGenerator() {} void ConnectionInfoGenerator::generateFile(MPI_Comm comm, const std::string& filename) const { int rank, size; - const char* addr = m_impl->m_addr.c_str(); + auto addr_cpy = m_impl->m_addr; + addr_cpy.resize(1024,'\0'); + + const char* addr = addr_cpy.c_str(); MPI_Comm_rank(comm, &rank); MPI_Comm_size(comm, &size); @@ -34,8 +37,8 @@ void ConnectionInfoGenerator::generateFile(MPI_Comm comm, const std::string& fil std::string proto(addr, j); // Exchange addresses - std::vector addresses_buf(128*size); - MPI_Gather(addr, 128, MPI_BYTE, addresses_buf.data(), 128, MPI_BYTE, 0, comm); + std::vector addresses_buf(1024*size); + MPI_Gather(addr, 1024, MPI_BYTE, addresses_buf.data(), 1024, MPI_BYTE, 0, comm); // Exchange bake providers info std::vector bake_pr_ids_buf(size); @@ -58,7 +61,7 @@ void ConnectionInfoGenerator::generateFile(MPI_Comm comm, const std::string& fil std::vector addresses; for(unsigned i=0; i < size; i++) { - addresses.emplace_back(&addresses_buf[128*i]); + addresses.emplace_back(&addresses_buf[1024*i]); } YAML::Node config; -- 2.26.2