diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 07fc1069080c8a62847e044bc67344a99fdd25f5..bd497da3fab7f7404654988ba7fff90e73cdfa90 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1558,7 +1558,7 @@ gcc_9_stl_debug:
 ###############################################################################
 
 doc:
-   image: i10git.cs.fau.de:5005/walberla/buildenvs/ubuntu:18.04
+   image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:9
    script:
       - cmake --version
       - doxygen --version
@@ -1916,6 +1916,7 @@ mac_MpiOnly_Dbg:
       WALBERLA_BUILD_WITH_MPI: "ON"
       WALBERLA_BUILD_WITH_OPENMP: "OFF"
       WALBERLA_BUILD_WITH_PYTHON: "ON"
+      OMPI_MCA_btl: "self,tcp"
    except:
       variables:
          - $DISABLE_PER_COMMIT_BUILDS
@@ -1928,6 +1929,7 @@ mac_MpiOnly:
       WALBERLA_BUILD_WITH_MPI: "ON"
       WALBERLA_BUILD_WITH_OPENMP: "OFF"
       WALBERLA_BUILD_WITH_PYTHON: "ON"
+      OMPI_MCA_btl: "self,tcp"
    except:
       variables:
          - $DISABLE_PER_COMMIT_BUILDS
diff --git a/src/core/mpi/MPIManager.cpp b/src/core/mpi/MPIManager.cpp
index 2a2ac24824c86659a405508cb098e6419f44b772..a334bc16c4878cea58a1452cd083fba31d9d3c7e 100644
--- a/src/core/mpi/MPIManager.cpp
+++ b/src/core/mpi/MPIManager.cpp
@@ -32,6 +32,9 @@
 #include <stdexcept>
 #include <string>
 #include <vector>
+#ifdef __APPLE__
+#include <thread>
+#endif
 
 namespace walberla
 {
@@ -94,6 +97,12 @@ void MPIManager::initializeMPI(int* argc, char*** argv, bool abortOnException)
       MPI_Initialized(&mpiAlreadyInitialized);
       if (!mpiAlreadyInitialized)
       {
+#ifdef __APPLE__
+         /* Work around a race condition on macOS.
+            If a process started by mpiexec finishes too quickly, it sometimes doesn't start all processes.
+          */
+         std::this_thread::sleep_for(std::chrono::milliseconds(1000));
+#endif
          MPI_Init(argc, argv);
          finalizeOnDestruction_ = true;
       }