[vtk-developers] vtkImageConvolve crashes when malloc fails

Mathieu Coursolle mcoursolle at rogue-research.com
Tue Jun 3 16:20:37 EDT 2008


Hi VTK developers,

I am performing a series of filters, where some of them are  
vtkImageConvolve.

My input vtkImageData is usually close to 100Mbytes, and the execution  
of my pipeline
seems to cause some memory fragmentation. Therefore, malloc will  
eventually fail, causing
a crash in vtkImageConvolve.

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
as its input, it tries to access the scalar pointer (which is NULL),  
causing a crash.

A solution would be to check the pointers:

   // ADDED CODE BEGIN--------
   // Make sure the scalar pointers are valid.
   if (!inData[0][0]->GetScalarPointer() || !outData[0]- 
 >GetScalarPointer())
     {
	vtkErrorMacro(<< "Execute: input and/or output image does not have  
any scalar value.");
     return;
     }
   // ADDED CODE END--------

   switch (inData[0][0]->GetScalarType())
     {
     vtkTemplateMacro(
       vtkImageConvolveExecute(this, inData[0][0],
                               static_cast<VTK_TT *>(inPtr), outData[0],
                               static_cast<VTK_TT *>(outPtr),
                               outExt, id, inInfo));

     default:
       vtkErrorMacro(<< "Execute: Unknown ScalarType");
       return;
     }

So I was wondering,
1) Is that the right way to avoid such crashes?
2) I guess that problem might occur with other filters as well...

Thanks.

Mathieu

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20080603/fc06e7a0/attachment.html>


More information about the vtk-developers mailing list