Deadlock if catalyst is not used on all mpi ranks
I tried to use catalyst-paraview (version 2 - the new interface with conduit) only on a subset of MPI_COMM_WORLD. I.e. not all ranks participate in the InSitu vizualization. For that i passed the communiator containing all the ranks that participate at catalyst via the parameter catalyst/mpi_comm
as described in https://kitware.github.io/paraview-docs/nightly/cxx/ParaViewCatalystBlueprint.html. This led to a deadlock as catalyst tried to call MPI_Comm_dup
on MPI_COMM_WOLRD
.
The reason for that is that the vtkMPIController
that is registered as the global vtkMultiProcessController
in vtkInSituInitializationHelper::Initialize
is immediately destructed as vtkMultiProcessController
only holds a vtkWeakPointer
on the controller.
I proposed a fix in !5737 (merged)