Paraview Crashing due to cell arrays going out of index during a specific set of setsps

I have created an VTU file with data arrays (including coordinates and element definition arrays) for multiple time steps in the same file, and paraview is crashing only for this specific set of steps.

Workflow 1

  1. Open Paraview
  2. Drag the vtu file to the pipeline
  3. Hit the eye icon to visualize the model
  4. Select any field for contour plots
  5. Hit Apply // CRASHES here

The error messages are like

ERROR: In vtkUnstructuredGridGeometryFilter.cxx, line 1288
vtkUnstructuredGridGeometryFilter (000001C933C380F0): Cell type UnknownClass(221) is not a 3D cell.

Workflow 2

  1. Open Paraview
  2. Drag the vtu file to the pipeline
  3. Hit Apply first.
  4. Now select any contour plots to visualize //All works fine

However, in workflow 2, it works fine even though the expected outcome of both workflows are the same.

I have built a debug version of paraview to check what’s going wrong and I see GetNumberofCells() in Line 26 of vtkUpdateCellsV8toV9.h gives incorrect (double) amount of cells which causes Out of bound memory access in GetTypedComponent() in Line 29. I am not sure what is causing to return incorrect values.

I have attached an sample version of VTU file (since I can’t share the whole model) as well as the call stack and the paraview build information below.

<?xml version="1.0"?>
<VTKFile byte_order="LittleEndian" header_type="UInt32" type="UnstructuredGrid" version="0.1">
	<UnstructuredGrid TimeValues="0 1 2">
		<Piece NumberOfCells="8" NumberOfPoints="27">
			<Points>
				<DataArray Name="Points" NumberOfComponents="3" TimeStep="0" format="ascii" type="Float64">
					0.0 0.0 0.0  1.0 0.0 0.0  2.0 0.0 0.0
					0.0 1.0 0.0  1.0 1.0 0.0  2.0 1.0 0.0
					0.0 2.0 0.0  1.0 2.0 0.0  2.0 2.0 0.0
					0.0 0.0 1.0  1.0 0.0 1.0  2.0 0.0 1.0
					0.0 1.0 1.0  1.0 1.0 1.0  2.0 1.0 1.0
					0.0 2.0 1.0  1.0 2.0 1.0  2.0 2.0 1.0
					0.0 0.0 2.0  1.0 0.0 2.0  2.0 0.0 2.0
					0.0 1.0 2.0  1.0 1.0 2.0  2.0 1.0 2.0
					0.0 2.0 2.0  1.0 2.0 2.0  2.0 2.0 2.0
				</DataArray>
				<DataArray Name="Points" NumberOfComponents="3" TimeStep="1" format="ascii" type="Float64">
					0.0 0.0 0.0  1.1 0.0 0.0  2.2 0.0 0.0
					0.0 1.1 0.0  1.1 1.1 0.0  2.2 1.1 0.0
					0.0 2.2 0.0  1.1 2.2 0.0  2.2 2.2 0.0
					0.0 0.0 1.1  1.1 0.0 1.1  2.2 0.0 1.1
					0.0 1.1 1.1  1.1 1.1 1.1  2.2 1.1 1.1
					0.0 2.2 1.1  1.1 2.2 1.1  2.2 2.2 1.1
					0.0 0.0 2.2  1.1 0.0 2.2  2.2 0.0 2.2
					0.0 1.1 2.2  1.1 1.1 2.2  2.2 1.1 2.2
					0.0 2.2 2.2  1.1 2.2 2.2  2.2 2.2 2.2
				</DataArray>
				<DataArray Name="Points" NumberOfComponents="3" TimeStep="2" format="ascii" type="Float64">
					0.0 0.0 0.0  1.2 0.0 0.0  2.4 0.0 0.0
					0.0 1.2 0.0  1.2 1.2 0.0  2.4 1.2 0.0
					0.0 2.4 0.0  1.2 2.4 0.0  2.4 2.4 0.0
					0.0 0.0 1.2  1.2 0.0 1.0  2.4 0.0 1.2
					0.0 1.2 1.2  1.2 1.2 1.0  2.4 1.2 1.2
					0.0 2.4 1.2  1.2 2.4 1.0  2.4 2.4 1.2
					0.0 0.0 2.4  1.2 0.0 2.0  2.4 0.0 2.4
					0.0 1.2 2.4  1.2 1.2 2.0  2.4 1.2 2.4
					0.0 2.4 2.4  1.2 2.4 2.0  2.4 2.4 2.4
				</DataArray>
			</Points>
			<Cells>
				<DataArray Name="connectivity" TimeStep="0" format="ascii" type="Int64">
					0 1 4 3 9 10 13 12
					1 2 5 4 10 11 14 13
					3 4 7 6 12 13 16 15
					4 5 8 7 13 14 17 16
					9 10 13 12 18 19 22 21
					10 11 14 13 19 20 23 22
					12 13 16 15 21 22 25 24
					13 14 17 16 22 23 26 25
				</DataArray>
				<DataArray Name="offsets" TimeStep="0" format="ascii" type="Int64">
					8 16 24 32 40 48 56 64
				</DataArray>
				<DataArray Name="types" TimeStep="0" format="ascii" type="UInt8">
					12 12 12 12 12 12 12 12
				</DataArray>
				<DataArray Name="connectivity" TimeStep="1" format="ascii" type="Int64">
					0 1 4 3 9 10 13 12
					1 2 5 4 10 11 14 13
					3 4 7 6 12 13 16 15
					4 5 8 7 13 14 17 16
					9 10 13 12 18 19 22 21
					10 11 14 13 19 20 23 22
					12 13 16 15 21 22 25 24
					13 14 17 16 22 23 26 25
				</DataArray>
				<DataArray Name="offsets" TimeStep="1" format="ascii" type="Int64">
					8 16 24 32 40 48 56 64				
				</DataArray>
				<DataArray Name="types" TimeStep="1" format="ascii" type="UInt8">
					12 12 12 12 12 12 12 12
				</DataArray>
				<DataArray Name="connectivity" TimeStep="2" format="ascii" type="Int64">
					0 1 4 3 9 10 13 12
					1 2 5 4 10 11 14 13
					3 4 7 6 12 13 16 15
					4 5 8 7 13 14 17 16
					9 10 13 12 18 19 22 21
					10 11 14 13 19 20 23 22
					12 13 16 15 21 22 25 24
					13 14 17 16 22 23 26 25				
				</DataArray>
				<DataArray Name="offsets" TimeStep="2" format="ascii" type="Int64">
					8 16 24 32 40 48 56 64				
				</DataArray>
				<DataArray Name="types" TimeStep="2" format="ascii" type="UInt8">
					12 12 12 12 12 12 12 12
				</DataArray>
			</Cells>
			<PointData>
				<DataArray Name="Temperature" NumberOfComponents="1" TimeStep="0" format="ascii" type="Float64">
					300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0
					390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0
					480.0 490.0 500.0 510.0 520.0 530.0 540.0 550.0 560.0
				</DataArray>
				<DataArray Name="Temperature" NumberOfComponents="1" TimeStep="1" format="ascii" type="Float64">
					304.0 314.0 324.0 334.0 344.0 354.0 364.0 374.0 384.0
					394.0 404.0 414.0 424.0 434.0 444.0 454.0 464.0 474.0
					484.0 494.0 504.0 514.0 524.0 534.0 544.0 554.0 564.0
				</DataArray>
				<DataArray Name="Temperature" NumberOfComponents="1" TimeStep="2" format="ascii" type="Float64">
					308.0 318.0 328.0 338.0 348.0 358.0 368.0 378.0 388.0
					398.0 408.0 418.0 428.0 438.0 448.0 458.0 468.0 478.0
					488.0 498.0 508.0 518.0 528.0 538.0 548.0 558.0 568.0
				</DataArray>
			</PointData>
			<CellData>
				<DataArray Name="epspls" NumberOfComponents="1" TimeStep="0" format="ascii" type="Float64">
					0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8
				</DataArray>
				<DataArray Name="epspls" NumberOfComponents="1" TimeStep="1" format="ascii" type="Float64">
					0.14 0.24 0.34 0.44 0.54 0.64 0.74 0.84
				</DataArray>
				<DataArray Name="epspls" NumberOfComponents="1" TimeStep="2" format="ascii" type="Float64">
					0.18 0.28 0.38 0.48 0.58 0.68 0.78 0.88
				</DataArray>
			</CellData>
		</Piece>
	</UnstructuredGrid>
</VTKFile>

Paraview Call Stack when the error occurs

>	vtkCommonCore-pv5.12d.dll!vtkAOSDataArrayTemplate<unsigned char>::GetTypedComponent(__int64 tupleIdx, int comp) Line 101	C++
 	vtkIOXML-pv5.12d.dll!vtkUpdateCellsV8toV9(vtkUnstructuredGrid * output) Line 29	C++
 	vtkIOXML-pv5.12d.dll!vtkXMLUnstructuredGridReader::ReadPieceData() Line 301	C++
 	vtkIOXML-pv5.12d.dll!vtkXMLDataReader::ReadPieceData(int piece) Line 348	C++
 	vtkIOXML-pv5.12d.dll!vtkXMLUnstructuredDataReader::ReadXMLData() Line 277	C++
 	vtkIOXML-pv5.12d.dll!vtkXMLReader::RequestData(vtkInformation * __formal, vtkInformationVector * * __formal, vtkInformationVector * outputVector) Line 751	C++
 	vtkIOXML-pv5.12d.dll!vtkXMLReader::ProcessRequest(vtkInformation * request, vtkInformationVector * * inputVector, vtkInformationVector * outputVector) Line 2070	C++
 	vtkPVVTKExtensionsIOCore-pv5.12d.dll!vtkFileSeriesReader::RequestData(vtkInformation * request, vtkInformationVector * * inputVector, vtkInformationVector * outputVector) Line 715	C++
 	vtkPVVTKExtensionsIOCore-pv5.12d.dll!vtkFileSeriesReader::ProcessRequest(vtkInformation * request, vtkInformationVector * * inputVector, vtkInformationVector * outputVector) Line 522	C++
 	vtkCommonExecutionModel-pv5.12d.dll!vtkExecutive::CallAlgorithm(vtkInformation * request, int direction, vtkInformationVector * * inInfo, vtkInformationVector * outInfo) Line 723	C++
 	vtkCommonExecutionModel-pv5.12d.dll!vtkDemandDrivenPipeline::ExecuteData(vtkInformation * request, vtkInformationVector * * inInfo, vtkInformationVector * outInfo) Line 450	C++
 	vtkCommonExecutionModel-pv5.12d.dll!vtkCompositeDataPipeline::ExecuteData(vtkInformation * request, vtkInformationVector * * inInfoVec, vtkInformationVector * outInfoVec) Line 151	C++
 	vtkCommonExecutionModel-pv5.12d.dll!vtkDemandDrivenPipeline::ProcessRequest(vtkInformation * request, vtkInformationVector * * inInfoVec, vtkInformationVector * outInfoVec) Line 249	C++
 	vtkCommonExecutionModel-pv5.12d.dll!vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation * request, vtkInformationVector * * inInfoVec, vtkInformationVector * outInfoVec) Line 336	C++
 	vtkCommonExecutionModel-pv5.12d.dll!vtkCompositeDataPipeline::ForwardUpstream(vtkInformation * request) Line 721	C++
 	vtkCommonExecutionModel-pv5.12d.dll!vtkDemandDrivenPipeline::ProcessRequest(vtkInformation * request, vtkInformationVector * * inInfoVec, vtkInformationVector * outInfoVec) Line 235	C++
 	vtkCommonExecutionModel-pv5.12d.dll!vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation * request, vtkInformationVector * * inInfoVec, vtkInformationVector * outInfoVec) Line 336	C++
 	vtkCommonExecutionModel-pv5.12d.dll!vtkDemandDrivenPipeline::UpdateData(int outputPort) Line 409	C++
 	vtkCommonExecutionModel-pv5.12d.dll!vtkStreamingDemandDrivenPipeline::Update(int port, vtkInformationVector * requests) Line 426	C++
 	vtkCommonExecutionModel-pv5.12d.dll!vtkStreamingDemandDrivenPipeline::Update(int port) Line 390	C++
 	vtkRemotingServerManager-pv5.12d.dll!vtkSISourceProxy::UpdatePipeline(int port, double time, bool doTime) Line 243	C++
 	vtkRemotingApplication-pv5.12d.dll!vtkSISourceProxyCommand(vtkClientServerInterpreter * arlu, vtkObjectBase * ob, const char * method, const vtkClientServerStream & msg, vtkClientServerStream & resultStream, void * __formal) Line 143	C++
 	vtkRemotingClientServerStream-pv5.12d.dll!vtkClientServerInterpreter::CallCommandFunction(const char * cname, vtkObjectBase * ptr, const char * method, const vtkClientServerStream & msg, vtkClientServerStream & result) Line 798	C++
 	vtkRemotingApplication-pv5.12d.dll!vtkSIMetaReaderProxyCommand(vtkClientServerInterpreter * arlu, vtkObjectBase * ob, const char * method, const vtkClientServerStream & msg, vtkClientServerStream & resultStream, void * __formal) Line 117	C++
 	vtkRemotingClientServerStream-pv5.12d.dll!vtkClientServerInterpreter::CallCommandFunction(const char * cname, vtkObjectBase * ptr, const char * method, const vtkClientServerStream & msg, vtkClientServerStream & result) Line 798	C++
 	vtkRemotingClientServerStream-pv5.12d.dll!vtkClientServerInterpreter::ProcessCommandInvoke(const vtkClientServerStream & css, int midx) Line 412	C++
 	vtkRemotingClientServerStream-pv5.12d.dll!vtkClientServerInterpreter::ProcessOneMessage(const vtkClientServerStream & css, int message) Line 253	C++
 	vtkRemotingClientServerStream-pv5.12d.dll!vtkClientServerInterpreter::ProcessStream(const vtkClientServerStream & css) Line 223	C++
 	vtkRemotingServerManager-pv5.12d.dll!vtkPVSessionCore::ExecuteStreamInternal(const vtkClientServerStream & stream, bool ignore_errors) Line 609	C++
 	vtkRemotingServerManager-pv5.12d.dll!vtkPVSessionCore::ExecuteStream(unsigned int location, const vtkClientServerStream & stream, bool ignore_errors) Line 578	C++
 	vtkRemotingServerManager-pv5.12d.dll!vtkPVSessionBase::ExecuteStream(unsigned int location, const vtkClientServerStream & stream, bool ignore_errors) Line 155	C++
 	vtkRemotingServerManager-pv5.12d.dll!vtkSMProxy::ExecuteStream(const vtkClientServerStream & stream, bool ignore_errors, unsigned int location) Line 2394	C++
 	vtkRemotingServerManager-pv5.12d.dll!vtkSMOutputPort::UpdatePipelineInternal(double time, bool doTime) Line 288	C++
 	vtkRemotingServerManager-pv5.12d.dll!vtkSMOutputPort::UpdatePipeline(double time) Line 277	C++
 	vtkRemotingServerManager-pv5.12d.dll!vtkSMSourceProxy::UpdatePipeline(double time) Line 348	C++
 	vtkRemotingViews-pv5.12d.dll!vtkSMParaViewPipelineControllerWithRendering::UpdatePipelineBeforeDisplay(vtkSMSourceProxy * producer, int outputPort, vtkSMViewProxy * view) Line 757	C++
 	vtkRemotingViews-pv5.12d.dll!vtkSMParaViewPipelineControllerWithRendering::ShowInPreferredView(vtkSMSourceProxy * producer, int outputPort, vtkSMViewProxy * view) Line 605	C++
 	pqApplicationComponents-pv5.12d.dll!pqApplyBehavior::showData(pqPipelineSource * source, pqView * view) Line 335	C++
 	pqApplicationComponents-pv5.12d.dll!pqApplyBehavior::applied(pqPropertiesPanel * __formal, pqProxy * pqproxy) Line 162	C++
 	pqApplicationComponents-pv5.12d.dll!pqApplyBehavior::onApplied(pqProxy * proxy) Line 127	C++
 	pqApplicationComponents-pv5.12d.dll!QtPrivate::FunctorCall<QtPrivate::IndexesList<0>,QtPrivate::List<pqProxy *>,void,void (__cdecl pqApplyBehavior::*)(pqProxy *)>::call(void(pqApplyBehavior::*)(pqProxy *) f, pqApplyBehavior * o, void * * arg) Line 152	C++
 	pqApplicationComponents-pv5.12d.dll!QtPrivate::FunctionPointer<void (__cdecl pqApplyBehavior::*)(pqProxy *)>::call<QtPrivate::List<pqProxy *>,void>(void(pqApplyBehavior::*)(pqProxy *) f, pqApplyBehavior * o, void * * arg) Line 185	C++
 	pqApplicationComponents-pv5.12d.dll!QtPrivate::QSlotObject<void (__cdecl pqApplyBehavior::*)(pqProxy *),QtPrivate::List<pqProxy *>,void>::impl(int which, QtPrivate::QSlotObjectBase * this_, QObject * r, void * * a, bool * ret) Line 418	C++
 	Qt5Cored.dll!QtPrivate::QSlotObjectBase::call(QObject * r, void * * a) Line 398	C++
 	Qt5Cored.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 3886	C++
 	Qt5Cored.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3947	C++
 	pqComponents-pv5.12d.dll!pqPropertiesPanel::applied(pqProxy * _t1) Line 392	C++
 	pqComponents-pv5.12d.dll!pqPropertiesPanel::apply() Line 822	C++
 	pqComponents-pv5.12d.dll!pqPropertiesPanel::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 214	C++
 	Qt5Cored.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 3901	C++
 	Qt5Cored.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3947	C++
 	Qt5Widgetsd.dll!QAbstractButton::clicked(bool _t1) Line 309	C++
 	Qt5Widgetsd.dll!QAbstractButtonPrivate::emitClicked() Line 417	C++
 	Qt5Widgetsd.dll!QAbstractButtonPrivate::click() Line 409	C++
 	Qt5Widgetsd.dll!QAbstractButton::mouseReleaseEvent(QMouseEvent * e) Line 1045	C++
 	Qt5Widgetsd.dll!QWidget::event(QEvent * event) Line 8646	C++
 	Qt5Widgetsd.dll!QAbstractButton::event(QEvent * e) Line 1002	C++
 	Qt5Widgetsd.dll!QPushButton::event(QEvent * e) Line 696	C++
 	Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3632	C++
 	Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3076	C++
 	Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1063	C++
 	Qt5Cored.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event) Line 1471	C++
 	Qt5Widgetsd.dll!QApplicationPrivate::sendMouseEvent(QWidget * receiver, QMouseEvent * event, QWidget * alienWidget, QWidget * nativeWidget, QWidget * * buttonDown, QPointer<QWidget> & lastMouseReceiver, bool spontaneous, bool onlyDispatchEnterLeave) Line 2614	C++
 	Qt5Widgetsd.dll!QWidgetWindow::handleMouseEvent(QMouseEvent * event) Line 685	C++
 	Qt5Widgetsd.dll!QWidgetWindow::event(QEvent * event) Line 301	C++
 	Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3632	C++
 	Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 2972	C++
 	Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1063	C++
 	Qt5Cored.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event) Line 1471	C++
 	Qt5Guid.dll!QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent * e) Line 2283	C++
 	Qt5Guid.dll!QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent * e) Line 2003	C++
 	Qt5Guid.dll!QWindowSystemInterface::sendWindowSystemEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 1175	C++
 	qwindowsd.dll!QWindowsGuiEventDispatcher::sendPostedEvents() Line 82	C++
 	Qt5Cored.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 530	C++
 	qwindowsd.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 73	C++
 	Qt5Cored.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 140	C++
 	Qt5Cored.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 232	C++
 	Qt5Cored.dll!QCoreApplication::exec() Line 1371	C++
 	Qt5Guid.dll!QGuiApplication::exec() Line 1868	C++
 	Qt5Widgetsd.dll!QApplication::exec() Line 2825	C++
 	paraview.exe!main(int argc, char * * argv) Line 134	C++
 	paraview.exe!WinMain(HINSTANCE__ * __formal, HINSTANCE__ * __formal, char * __formal, int __formal) Line 97	C++
 	[External Code]	

Paraview Build Information

Client Information:
Version: 5.12.1
VTK Version: 9.3.0-1255-g09a76bc55b
Qt Version: 5.15.2
vtkIdType size: 64bits
Embedded Python: Off
Python Testing: Off
MPI Enabled: On
Disable Registry: Off
Test Directory: 
Data Directory: 
SMP Backend: Sequential
SMP Max Number of Threads: 1
OpenGL Vendor: NVIDIA Corporation
OpenGL Version: 3.2.0 NVIDIA 536.45
OpenGL Renderer: Quadro RTX 3000/PCIe/SSE2
Accelerated filters overrides available: No

Connection Information:
Remote Connection: No

Please share your data

Hey Mathieu,

here’s the file. It does have the issue I have mentioned in the post with the steps I have mentioned.

sample.vtu (4.8 KB)

I’m unable to reproduce the issue using ParaView 5.12 binary release AND the steps do not make much sense as:

  1. you should hit apply before clicking the eye
  2. “Select any field for contour plots” : What does that mean ?

Dear Mathieu,

I tested the file with paraview 5.11 and 5.12 binary release in multiple machines. I am able to replicate it. I have attached a video of recreating it.
paraview_error.mkv (1.4 MB)

Regarding the workflow, it is a common practice to view and inspect the model before hitting Apply. It is expected from paraview not to crash just by doing this.

And by “Select any field for contour plots” I mean change the color scheme from default “Solid color” to any of the cell data fields or the point data fields available.

It is not: https://gitlab.kitware.com/paraview/paraview/-/issues/19476

When you click on the eye, you trigger a half apply anyway, puting the application in a wrong state.

In any case, I still do not reproduce the issue you are showing using ParaView 5.12.0 binary release.
Even If I was, this is probably caused by the fact that you press the eye before pressing apply.

Hey Mathieu,

I just check this file which crashes 5.12.0 Please check on your side if this could replicate the error for you to check.

sample2.vtu (2.1 MB)

I reproduce on 5.12.0, but it seems to be fixed in 5.13.0-RC1