From 00ebd4c2ef6916561e4b1213cc08e294711c30cb Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Tue, 20 Jun 2023 08:40:07 +0200 Subject: [PATCH] BUG: UPstream::shutdown misbehaves with external initialisation (fixes #2808) - freeCommmunicatorComponents needs an additional bounds check. When MPI is initialized outside of OpenFOAM, there are no UPstream communicator equivalents --- src/Pstream/mpi/UPstream.C | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Pstream/mpi/UPstream.C b/src/Pstream/mpi/UPstream.C index 9eb2f370736..60636284a6a 100644 --- a/src/Pstream/mpi/UPstream.C +++ b/src/Pstream/mpi/UPstream.C @@ -976,7 +976,17 @@ void Foam::UPstream::allocatePstreamCommunicator void Foam::UPstream::freePstreamCommunicator(const label communicator) { - if (communicator != UPstream::worldComm) + // Not touching the first communicator (WORLD) + // or anything out-of bounds. + // + // No UPstream communicator indices when MPI is initialized outside + // of OpenFOAM - thus needs a bounds check too! + + if + ( + communicator > 0 + && (communicator < PstreamGlobals::MPICommunicators_.size()) + ) { if (PstreamGlobals::MPICommunicators_[communicator] != MPI_COMM_NULL) { -- GitLab