<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi VTK&nbsp;developers,<div><br></div><div>I am performing a series of filters, where some of them are vtkImageConvolve.</div><div><br></div><div>My input vtkImageData is usually close to 100Mbytes, and the execution of my pipeline</div><div>seems to cause some memory fragmentation. Therefore, malloc will eventually fail, causing</div><div>a crash in vtkImageConvolve.</div><div><br></div><div>If malloc fails during the execution of a pipeline, then the scalarPointer of the resulting vtkImageData is NULL. If a connected vtkImageConvolve filter receives such a vtkImageData</div><div>as its input, it tries to access the scalar pointer (which is NULL), causing a crash.</div><div><br></div><div>A solution would be to check the pointers:</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: #000000">&nbsp;&nbsp;</span>// ADDED CODE BEGIN--------</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; color: rgb(0, 116, 0); ">&nbsp;&nbsp;// Make sure the scalar pointers are valid.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; <span style="color: #1046da">if</span> (!inData[0][0]->GetScalarPointer() || !outData[0]->GetScalarPointer())</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; &nbsp; {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #d01e00">vtkErrorMacro</span>(&lt;&lt; "Execute: input and/or output image does not have any scalar value.");</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; color: rgb(16, 70, 218); "><span style="color: #000000">&nbsp; &nbsp; </span>return<span style="color: #000000">;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; &nbsp; }</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-style-span" style="color: rgb(0, 116, 0); ">&nbsp;&nbsp;// ADDED CODE END--------</span></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco; min-height: 16.0px">&nbsp;&nbsp;<br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; <span style="color: #1046da">switch</span> (inData[0][0]->GetScalarType())</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; &nbsp; {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; color: rgb(208, 30, 0); "><span style="color: #000000">&nbsp; &nbsp; </span>vtkTemplateMacro<span style="color: #000000">(</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; &nbsp; &nbsp; vtkImageConvolveExecute(<span style="color: #1046da">this</span>, inData[0][0],</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #1046da">static_cast</span>&lt;VTK_TT *>(inPtr), outData[0],&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #1046da">static_cast</span>&lt;VTK_TT *>(outPtr),</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outExt, id, inInfo));</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; min-height: 16px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; color: rgb(16, 70, 218); "><span style="color: #000000">&nbsp; &nbsp; </span>default<span style="color: #000000">:</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; &nbsp; &nbsp; <span style="color: #d01e00">vtkErrorMacro</span>(&lt;&lt; "Execute: Unknown ScalarType");</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; &nbsp; &nbsp; <span style="color: #1046da">return</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">&nbsp; &nbsp; }</div></div><div><br></div><div>So I was wondering,&nbsp;</div><div>1) Is that the right way to avoid such crashes?</div><div>2) I guess that problem might occur with other filters as well...</div><div><br></div><div>Thanks.</div><div><br></div><div>Mathieu</div><div><br></div></body></html>