Redistribute dataset not working with multiple ranks
On ParaView master server always crash when launched using mpiexec -n X
and when applying the Redistribute Dataset Filter.
The behavior was still correct in the release of PV 5.9.1.
Step to reproduce :
- Connect to a pvserver launched with multiple ranks
- Create a Sphere
- Create a redistribute dataset filter
- Apply
- Crash
ParaView BT is :
43 0x556f1cbdc46e bin/pvserver(+0x246e) [0x556f1cbdc46e]
42 0x7fb6280ca0b3 __libc_start_main + 243
41 0x556f1cbdc9dc bin/pvserver(+0x29dc) [0x556f1cbdc9dc]
40 0x556f1cbdc8d1 bin/pvserver(+0x28d1) [0x556f1cbdc8d1]
39 0x7fb625a9cbdc vtkTCPNetworkAccessManager::ProcessEvents(unsigned long) + 44
38 0x7fb625a9d0d8 vtkTCPNetworkAccessManager::ProcessEventsInternal(unsigned long, bool) + 1274
37 0x7fb625485d30 vtkMultiProcessController::ProcessRMIs(int, int) + 1654
36 0x7fb625486148 vtkMultiProcessController::ProcessRMI(int, void*, int, int) + 784
35 0x7fb6264f516e /home/timotheec/Documents/Dev/PARAVIEW/build/bin/../lib/libvtkRemotingServerManager-pv5.9.so.1(+0x1e916e) [0x7fb6264f516e]
34 0x7fb6264f6395 vtkPVSessionServer::OnClientServerMessageRMI(void*, int) + 1195
33 0x7fb6264e4a90 vtkPVSessionBase::ExecuteStream(unsigned int, vtkClientServerStream const&, bool) + 100
32 0x7fb6264e852b vtkPVSessionCore::ExecuteStream(unsigned int, vtkClientServerStream const&, bool) + 511
31 0x7fb6264e876c vtkPVSessionCore::ExecuteStreamInternal(vtkClientServerStream const&, bool) + 226
30 0x7fb625881777 vtkClientServerInterpreter::ProcessStream(vtkClientServerStream const&) + 71
29 0x7fb6258818f4 vtkClientServerInterpreter::ProcessOneMessage(vtkClientServerStream const&, int) + 352
28 0x7fb62588241c vtkClientServerInterpreter::ProcessCommandInvoke(vtkClientServerStream const&, int) + 514
27 0x7fb625883e85 vtkClientServerInterpreter::CallCommandFunction(char const*, vtkObjectBase*, char const*, vtkClientServerStream const&, vtkClientServerStream&) + 711
26 0x7fb626cded7c vtkSISourceProxyCommand(vtkClientServerInterpreter*, vtkObjectBase*, char const*, vtkClientServerStream const&, vtkClientServerStream&, void*) + 2260
25 0x7fb626539329 vtkSISourceProxy::UpdatePipeline(int, double, bool) + 589
24 0x7fb62535a237 vtkStreamingDemandDrivenPipeline::Update(int) + 55
23 0x7fb62535a3b2 vtkStreamingDemandDrivenPipeline::Update(int, vtkInformationVector*) + 376
22 0x7fb6252992e7 vtkDemandDrivenPipeline::UpdateData(int) + 695
21 0x7fb625359ffe vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) + 3272
20 0x7fb625298a74 vtkDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) + 1242
19 0x7fb625290077 vtkCompositeDataPipeline::ForwardUpstream(vtkInformation*) + 765
18 0x7fb625359ffe vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) + 3272
17 0x7fb625298b78 vtkDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) + 1502
16 0x7fb62528d78e vtkCompositeDataPipeline::ExecuteData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) + 1116
15 0x7fb6252994c8 vtkDemandDrivenPipeline::ExecuteData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) + 116
14 0x7fb6252a19ab vtkExecutive::CallAlgorithm(vtkInformation*, int, vtkInformationVector**, vtkInformationVector*) + 149
13 0x7fb625296c50 vtkDataObjectAlgorithm::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) + 98
12 0x7fb61ecfd7ba vtkRedistributeDataSetFilter::RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) + 1364
11 0x7fb61ecfe98e vtkRedistributeDataSetFilter::Redistribute(vtkPartitionedDataSet*, vtkPartitionedDataSet*, std::vector<vtkBoundingBox> const&, long long*) + 986
10 0x7fb61ecff11e vtkRedistributeDataSetFilter::RedistributeDataSet(vtkDataSet*, vtkPartitionedDataSet*, std::vector<vtkBoundingBox> const&) + 244
9 0x7fb61eb863bf vtkDIYKdTreeUtilities::Exchange(vtkPartitionedDataSet*, vtkMultiProcessController*, std::shared_ptr<vtkdiy2::Assigner>) + 1347
8 0x7fb61eb8863a /home/timotheec/Documents/Dev/PARAVIEW/build/lib/libvtkFiltersParallelDIY2-pv5.9.so.1(+0xec63a) [0x7fb61eb8863a]
7 0x7fb61eb89a24 /home/timotheec/Documents/Dev/PARAVIEW/build/lib/libvtkFiltersParallelDIY2-pv5.9.so.1(+0xeda24) [0x7fb61eb89a24]
6 0x7fb61eb9e49f /home/timotheec/Documents/Dev/PARAVIEW/build/lib/libvtkFiltersParallelDIY2-pv5.9.so.1(+0x10249f) [0x7fb61eb9e49f]
5 0x7fb61eb9c1a6 /home/timotheec/Documents/Dev/PARAVIEW/build/lib/libvtkFiltersParallelDIY2-pv5.9.so.1(+0x1001a6) [0x7fb61eb9c1a6]
4 0x7fb61eb97fb2 /home/timotheec/Documents/Dev/PARAVIEW/build/lib/libvtkFiltersParallelDIY2-pv5.9.so.1(+0xfbfb2) [0x7fb61eb97fb2]
3 0x7fb61eba45a8 /home/timotheec/Documents/Dev/PARAVIEW/build/lib/libvtkFiltersParallelDIY2-pv5.9.so.1(+0x1085a8) [0x7fb61eba45a8]
2 0x7fb6265c8659 void std::string::_M_construct<char*>(char*, char*, std::forward_iterator_tag) + 113
1 0x7fb6265c9fa5 std::iterator_traits<char*>::difference_type std::distance<char*>(char*, char*) + 35
0 0x7fb6280e9210 /lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7fb6280e9210]
I also tried to replicate using only VTK and the following code also crash (but since I'm unsure of my skills using MPI in VTK I didn't open the issue in VTK) :
vtkNew<vtkMPIController> controller;
controller->Initialize(&argc, &argv);
controller->SetCommunicator(vtkMPICommunicator::GetWorldCommunicator());
vtkMultiProcessController::SetGlobalController(controller);
vtkNew<vtkSphereSource> source;
source->Update();
vtkNew<vtkRedistributeDataSetFilter> rdsf;
rdsf->SetInputConnection(source->GetOutputPort());
rdsf->SetController(controller);
rdsf->Update();
Edited by Timothee Chabat