Segfault when contouring h5+xdmf with N>1 pvservers
When visualizing 3D a structured grid time series in PV, while connected to more than 1 pvserver, one pvserver rapidly (but at random) crashes with a sigsegv. I have uploaded the complete test dataset I am playing with here: http://uoregon.edu/~ekeever1/testset.tar.gz (apologies for the 70M test set size).
When running in serial (just paraview) or connected to one pvserver, I can run the visualization back and forth for a long time without issue.
Steps to reproduce for me:
- Connect to N > 1 pvservers
- Open test_metadata.xdmf
- Apply
- Create contour of mass, uncheck 'compute ..'
- Delete default contour value, create range with defaults, set log scale, ok, apply
- Play animation repeatedly: Segfault happens eventually
Output to console with gdb not attached: segv_output
With GDBs attached to all 4 pvservers, I catch the crash. The backtrace from the offending process within gdbtui: gdboutput
The core of the offending process (warning, 340MB): http://uoregon.edu/~ekeever1/core.21607
#0 0x00007f2c5c98cf8f in vtkAOSDataArrayTemplate::GetTuple (this=0x557f58461450, tupleIdx=1059818420, tuple=0x7ffdfb6f5540) at /home/erik-k/manual_install/ParaView-v5.6.0/VTK/Common/Core/vtkAOSDataArrayTemplate.txx:252
The evident enough cause:
(gdb) print i
$6 = 0
(gdb) info locals
i = 0
data = 0x55824dce3b90
(gdb) print data[i]
Cannot access memory at address 0x55824dce3b90
(gdb) print this->Buffer->GetBuffer()
$7 = (vtkBuffer<float>::ScalarType *) 0x557f57c3af20
(gdb) print tupleIdx
$8 = 1059818420
Well, that'll do it: The test data set is 64x64x24, only ~100K cells...
Up frame: void GetPoint(vtkIdType id, double x[3]) VTK_EXPECTS(0 <= id && id < GetNumberOfPoints()) VTK_SIZEHINT(3) { this->Data->GetTuple(id,x); }
#1 0x00007f2c61886f5d in vtkPoints::GetPoint (this=0x557f587e0a10, id=1059818420, x=0x7ffdfb6f5540) at /home/erik-k/manual_install/ParaView-v5.6.0/VTK/Common/Core/vtkPoints.h:146
(gdb) print id
$10 = 1059818420
(gdb) print *x@3
$13 = {0.4330126941204071, 0.25, 0}
This corresponds to a point on the innermost rim of the dataset for what it's worth.
(gdb) up
#2 0x00007f2c5dc438f6 in vtkPolyData::ComputeBounds (this=0x557f58ce5490) at /home/erik-k/manual_install/ParaView-v5.6.0/VTK/Common/DataModel/vtkPolyData.cxx:603
(gdb) info locals
i = 1
pts = 0x557f59709b18
cella = {0x557f56877e90, 0x557f56877e90, 0x557f59082360, 0x557f56877e90}
t = 2
npts = 3
x = {0.4330126941204071, 0.25, 0}
doneOne = 1
(gdb) print *pts@4
$21 = {4923, 1059818420, 4922, 0}
Hope this report is useful.