[Paraview] Segmentation fault when clipping Polyhedra
Karl König
kkoenig11 at web.de
Thu Oct 27 15:53:51 EDT 2011
Hi Lennart,
Your file seems correct, especially because saving it again as VTU from
ParaView yields basically the same file.
I could reproduce the segfault with ParaView git/master as follows:
* Load file
* Filters - Clip
Clip Type: Plane
Origin: 0.3, 0.5, 0.5
Normal: 1, 0, 0
Tick "Inside Out" checkbox
Apply
(One may need to toggle the checkbox a couple of times and pressing
Apply each time after toggling until the segfault gets triggered.)
=> 0x00007fffdf00166a in vtkDataSetSurfaceFilter::InsertPolygonInHash
(this=0x2a09270, ids=0x2bd7cb0, numPts=0, sourceId=0)
at /opt/ParaView3.git/VTK/Graphics/vtkDataSetSurfaceFilter.cxx:1797
1797 quad = *end;
(gdb) list 1794
1789 vtkIdType* tab = new vtkIdType[numPts];
1790 for(int i=0; i<numPts; i++)
1791 {
1792 tab[i] = ids[(offset+i)%numPts];
1793 }
1794
1795 // Look for existing hex in the hash;
1796 end = this->QuadHash + tab[0];
1797 quad = *end;
(gdb) print numPts
$1 = 0
(gdb) print tab[0]
$1 = -614752568
The segfault is triggered by the variable 'numPts' being zero which
causes the for-loop in line 1790 being skipped such that the array 'tab'
is not initialized, but still queried at position 0 in line 1796. So,
'end' points to some random location in memory and dereferencing it in
line 1797 causes the segfault.
I'm not familiar with the algorithm implemented here, so I'm not sure
whether a feasible way of avoiding this issue would be to skip execution
of InsertPolygonInHash() altogether if numPts <= 0. Someone on this list
will know.
Probably best if you'd file a bug report at http://www.paraview.org/Bug/
Karl
Lennart Schneiders wrote, On 10/24/11 14:25:
> Hello,
>
> I encounter a segmentation fault when trying to clip an unstructured
> grid containing more than one polyhedron (cell type 42) in Paraview
> 3.10.1 64-bit. Clipping a single polyhedron does not yield a seg. fault
> but gives a non-watertight cell which obviously is not correct. In
> contrast, slicing works flawlessly.
>
> I wonder if my .vtu file is faulty. A minimal example containing two
> tetrahedra is given below. Any help is greatly appreciated.
>
> Lennart
>
> ----
>
> <VTKFile type="UnstructuredGrid" version="0.1"
> byte_order="LittleEndian">
> <UnstructuredGrid>
> <Piece NumberOfPoints="8" NumberOfCells="2">
> <Points>
> <DataArray type="Float32" NumberOfComponents="3" format="ascii">
> 0.0 0.0 0.0
> 1.0 0.0 0.0
> 0.0 1.0 0.0
> 0.0 0.0 1.0
> 0.0 0.0 0.0
> -1.0 0.0 0.0
> 0.0 1.0 0.0
> 0.0 0.0 1.0
> </DataArray>
> </Points>
> <Cells>
> <DataArray type="Int32" Name="connectivity" format="ascii">
> 0 1 2 3 4 5 6 7
> </DataArray>
> <DataArray type="Int32" Name="offsets" format="ascii">
> 4 8
> </DataArray>
> <DataArray type="UInt8" Name="types" format="ascii">
> 42 42
> </DataArray>
> <DataArray type="UInt32" Name="faces" format="ascii">
> 4 3 0 1 2 3 0 1 3 3 0 2 3 3 1 2 3
> 4 3 4 5 6 3 4 5 7 3 4 6 7 3 5 6 7
> </DataArray>
> <DataArray type="UInt32" Name="faceoffsets" format="ascii">
> 17 34
> </DataArray>
> </Cells>
> </Piece>
> </UnstructuredGrid>
> </VTKFile>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView
>
> Follow this link to subscribe/unsubscribe:
> http://www.paraview.org/mailman/listinfo/paraview
More information about the ParaView
mailing list