Segfault when reading .vti file written by VTK itself
This issue was created automatically from an original Mantis Issue. Further discussion may take place here.
The attached Python script creates an vtkImageData of 2000x2000x834 uint8 scalar values. It saves this to a .vti file using vtkXMLImageDataWriter. When trying to read it back in with vtkXMLImageDataReader the reader segfaults. Found on an actual DICOM dataset that I wanted to store as a .vti.
This is with VTK 5.8.0 on an Ubuntu 10.04.3 x86_64 system.
Relevant stack trace and valgrind error (looks like null pointer being dereferenced):
(gdb) bt #0 memcpy () at ../sysdeps/x86_64/memcpy.S:267 #1 0x00007ffec4089995 in vtkXMLDataParser::ReadCompressedData(unsigned char*, long long, long long, int) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8 #2 0x00007ffec408a4ad in vtkXMLDataParser::ReadBinaryData(void*, long long, long long, int) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8 #3 0x00007ffec40914c1 in int vtkXMLDataReaderReadArrayValues<vtkArrayIteratorTemplate >(vtkXMLDataElement*, vtkXMLDataParser*, long long, vtkArrayIteratorTemplate*, long long, long long) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8 #4 0x00007ffec4090287 in vtkXMLDataReader::ReadArrayValues(vtkXMLDataElement*, long long, vtkAbstractArray*, long long, long long) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8 #5 0x00007ffec40c42ab in vtkXMLStructuredDataReader::ReadSubExtent(int*, int*, long long*, int*, int*, long long*, int*, int*, vtkXMLDataElement*, vtkAbstractArray*) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8 #6 0x00007ffec40c222f in vtkXMLStructuredDataReader::ReadArrayForPoints(vtkXMLDataElement*, vtkAbstractArray*) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8 #7 0x00007ffec408e470 in vtkXMLDataReader::ReadPieceData() () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8 #8 0x00007ffec40c296e in vtkXMLStructuredDataReader::ReadXMLData() () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8 #9 (closed) 0x00007ffec40ba08d in vtkXMLReader::RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8 #10 0x00007ffec40b8d6d in vtkXMLReader::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8 #11 (closed) 0x00007ffec4b77974 in vtkExecutive::CallAlgorithm(vtkInformation*, int, vtkInformationVector**, vtkInformationVector*) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkFiltering.so.5.8 #12 0x00007ffec4b6a6ac in vtkDemandDrivenPipeline::ExecuteData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkFiltering.so.5.8 #13 0x00007ffec4b6d75b in vtkDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkFiltering.so.5.8 #14 0x00007ffec4cf3f89 in vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkFiltering.so.5.8 #15 0x00007ffec4b6d49f in vtkDemandDrivenPipeline::UpdateData(int) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkFiltering.so.5.8 #16 0x00007ffec4cf316b in vtkStreamingDemandDrivenPipeline::Update(int) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkFiltering.so.5.8 #17 0x00007ffec509c549 in PyvtkAlgorithm_Update(_object*, _object*) () from /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkFilteringPythonD.so.5.8 #18 0x00000000004a7c5e in PyEval_EvalFrameEx () #19 0x00000000004a9671 in PyEval_EvalCodeEx () #20 0x00000000004a9742 in PyEval_EvalCode () #21 0x00000000004c9a0e in PyRun_FileExFlags () #22 0x00000000004c9c24 in PyRun_SimpleFileExFlags () #23 0x000000000041a7ff in Py_Main () #24 0x00007ffec6e1ac4d in __libc_start_main (main=, argc=, ubp_av=, init=, fini=, rtld_fini=, stack_end=0x7fff97620768) at libc-start.c:226 #25 0x00000000004199f9 in _start ()
==26083== Invalid write of size 1 ==26083== at 0x4C28F04: memcpy (mc_replace_strmem.c:497) ==26083== by 0x9853994: vtkXMLDataParser::ReadCompressedData(unsigned char*, long long, long long, int) (in /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8.0) ==26083== by 0x98544AC: vtkXMLDataParser::ReadBinaryData(void*, long long, long long, int) (in /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8.0) ==26083== by 0x985B4C0: int vtkXMLDataReaderReadArrayValues<vtkArrayIteratorTemplate >(vtkXMLDataElement*, vtkXMLDataParser*, long long, vtkArrayIteratorTemplate*, long long, long long) (in /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8.0) ==26083== by 0x985A286: vtkXMLDataReader::ReadArrayValues(vtkXMLDataElement*, long long, vtkAbstractArray*, long long, long long) (in /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8.0) ==26083== by 0x988E2AA: vtkXMLStructuredDataReader::ReadSubExtent(int*, int*, long long*, int*, int*, long long*, int*, int*, vtkXMLDataElement*, vtkAbstractArray*) (in /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8.0) ==26083== by 0x988C22E: vtkXMLStructuredDataReader::ReadArrayForPoints(vtkXMLDataElement*, vtkAbstractArray*) (in /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8.0) ==26083== by 0x985846F: vtkXMLDataReader::ReadPieceData() (in /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8.0) ==26083== by 0x988C96D: vtkXMLStructuredDataReader::ReadXMLData() (in /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8.0) ==26083== by 0x988408C: vtkXMLReader::RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) (in /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8.0) ==26083== by 0x9882D6C: vtkXMLReader::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) (in /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkIO.so.5.8.0) ==26083== by 0x8A17973: vtkExecutive::CallAlgorithm(vtkInformation*, int, vtkInformationVector**, vtkInformationVector*) (in /home/paulmlocal/software/vtk-5.8.0/lib/vtk-5.8/libvtkFiltering.so.5.8.0) ==26083== Address 0x0 is not stack'd, malloc'd or (recently) free'd ==26083== ==26083==