Some multiblock database backface settings cause crash
Backface Representation values "Points", "Wireframe", "Surface", and "Surface With Edges" cause a crash with multiblock data. To reproduce:
- Run paraview, built-in server
- Add Plane source. Apply. Change its Backface Representation to "Points", then "Wireframe", then "Surface", then "Surface With Edges". This works.
- Load
can.ex2
from the examples directory. Apply. Change it's Backface Representation to "Points", or "Wireframe", or "Surface", or "Surface With Edges". Crash.
Stack trace excerpt:
=================================================================
==62619==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020003ef4d4 at pc 0x00010fc01c8c bp 0x7ffee9936a90 sp 0x7ffee9936a88
READ of size 1 at 0x6020003ef4d4 thread T0
#0 0x10fc01c8b in void std::__1::allocator<unsigned char>::construct<unsigned char, unsigned char const&>(unsigned char*, unsigned char const&) memory:1881
#1 0x10fc01c0f in void std::__1::allocator_traits<std::__1::allocator<unsigned char> >::__construct<unsigned char, unsigned char const&>(std::__1::integral_constant<bool, true>, std::__1::allocator<unsigned char>&, unsigned char*, unsigned char const&) memory:1773
#2 0x10fc01b4a in void std::__1::allocator_traits<std::__1::allocator<unsigned char> >::construct<unsigned char, unsigned char const&>(std::__1::allocator<unsigned char>&, unsigned char*, unsigned char const&) memory:1600
#3 0x10fc0159e in void std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::__construct_one_at_end<unsigned char const&>(unsigned char const&) vector:924
#4 0x10fbbe13e in std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::push_back(unsigned char const&) vector:1637
#5 0x10fbbd807 in vtkOpenGLPolyDataMapper::AppendCellTextures(vtkRenderer*, vtkActor*, vtkCellArray**, int, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >&, std::__1::vector<float, std::__1::allocator<float> >&, vtkPolyData*, vtkOpenGLCellToVTKCellMap*) vtkOpenGLPolyDataMapper.cxx:3741
#6 0x10f855d40 in vtkCompositeMapperHelper2::AppendOneBufferObject(vtkRenderer*, vtkActor*, vtkCompositeMapperHelperData*, long long&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >&, std::__1::vector<float, std::__1::allocator<float> >&) vtkCompositePolyDataMapper2.cxx:773
#7 0x10f8505e7 in vtkCompositeMapperHelper2::BuildBufferObjects(vtkRenderer*, vtkActor*) vtkCompositePolyDataMapper2.cxx:532
#8 0x10fbbc058 in vtkOpenGLPolyDataMapper::UpdateBufferObjects(vtkRenderer*, vtkActor*) vtkOpenGLPolyDataMapper.cxx:3653
#9 0x10fbb8215 in vtkOpenGLPolyDataMapper::RenderPieceStart(vtkRenderer*, vtkActor*) vtkOpenGLPolyDataMapper.cxx:3393
#10 0x10f84bc3d in vtkCompositeMapperHelper2::RenderPiece(vtkRenderer*, vtkActor*) vtkCompositePolyDataMapper2.cxx:312
#11 0x10f8683db in vtkCompositePolyDataMapper2::Render(vtkRenderer*, vtkActor*) vtkCompositePolyDataMapper2.cxx:1896
#12 0x10f98edda in vtkOpenGLActor::Render(vtkRenderer*, vtkMapper*) vtkOpenGLActor.cxx:104
#13 0x121b8afaf in vtkPVLODActor::Render(vtkRenderer*, vtkMapper*) vtkPVLODActor.cxx:141
...
0x6020003ef4d4 is located 0 bytes to the right of 4-byte region [0x6020003ef4d0,0x6020003ef4d4)
allocated by thread T0 here:
#0 0x11b4011dd in wrap_malloc+0x9d (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x491dd)
#1 0x118d0b9d2 in vtkBuffer<unsigned char>::Allocate(long long) vtkBuffer.h:178
#2 0x119bb43e0 in vtkAOSDataArrayTemplate<unsigned char>::AllocateTuples(long long) vtkAOSDataArrayTemplate.txx:426
#3 0x118e7eb7f in vtkGenericDataArray<vtkAOSDataArrayTemplate<unsigned char>, unsigned char>::AllocateTuples(long long) vtkGenericDataArray.h:337
#4 0x118e7a6a3 in vtkGenericDataArray<vtkAOSDataArrayTemplate<unsigned char>, unsigned char>::Allocate(long long, long long) vtkGenericDataArray.txx:386
#5 0x118e7ad5f in vtkGenericDataArray<vtkAOSDataArrayTemplate<unsigned char>, unsigned char>::SetNumberOfTuples(long long) vtkGenericDataArray.txx:474
#6 0x119a58750 in vtkScalarsToColors::MapScalars(vtkAbstractArray*, int, int, int) vtkScalarsToColors.cxx:292
#7 0x1115f4837 in vtkMapper::MapScalars(vtkDataSet*, double, int&) vtkMapper.cxx:533
#8 0x1115f2bdc in vtkMapper::MapScalars(vtkDataSet*, double) vtkMapper.cxx:427
#9 0x10f854fea in vtkCompositeMapperHelper2::AppendOneBufferObject(vtkRenderer*, vtkActor*, vtkCompositeMapperHelperData*, long long&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >&, std::__1::vector<float, std::__1::allocator<float> >&) vtkCompositePolyDataMapper2.cxx:715
#10 0x10f8505e7 in vtkCompositeMapperHelper2::BuildBufferObjects(vtkRenderer*, vtkActor*) vtkCompositePolyDataMapper2.cxx:532
#11 0x10fbbc058 in vtkOpenGLPolyDataMapper::UpdateBufferObjects(vtkRenderer*, vtkActor*) vtkOpenGLPolyDataMapper.cxx:3653
#12 0x10fbb8215 in vtkOpenGLPolyDataMapper::RenderPieceStart(vtkRenderer*, vtkActor*) vtkOpenGLPolyDataMapper.cxx:3393
#13 0x10f84bc3d in vtkCompositeMapperHelper2::RenderPiece(vtkRenderer*, vtkActor*) vtkCompositePolyDataMapper2.cxx:312
#14 0x10f8683db in vtkCompositePolyDataMapper2::Render(vtkRenderer*, vtkActor*) vtkCompositePolyDataMapper2.cxx:1896
Note that this doesn't always cause a crash unless you build with asan.
** Original posting **
I have written some filters with vtkMultiblockDataSet output. But it will crash if ActiveVariable set to vtkBlockColors.
To reproduce, run following scripts (vtkBlockColors_crash.py ) and change ActiveVariable of GroupDataSet output to vtkBlockColors. My paraview(vs2013 Win64, 5.6) crash 5 times every 10 attempts