[vtk-developers] Possible fix for vtkImageStencilData::InsertAndMergeExtent

David Gobbi david.gobbi at gmail.com
Tue Sep 22 14:02:20 EDT 2015


Hi Xabi,

Thanks, these will be very useful.

Cheers,
 - David

On Tue, Sep 22, 2015 at 9:43 AM, Xabi Riobe <xabivtk at gmail.com> wrote:

> Hi David,
>
> here is a sample that reproduce the crash, plus another one found recently.
> both are related to the use of vtkImageStencilData::Subtract
>
> you can compile ImageStencil.cxx with CMakeLists.txt (providing VTK_DIR in
> Cmake gui) and the proposed fixes are in vtkImageStencilFixed-VTK6.h that
> you can activate by uncommenting the defines FIX1 & FIX2 at the beginning
> of the sample.
>
> some comments are included in the .h close to the code fix (look for
> #ifdef FIX).
>
> The first crash (FIX1 in vtkImageStencilData::InsertAndMergeExtent) only
> occurs with Mac because it is related to the access of a wrong memory
> location pointing to a value that is always negative on Windows, passing
> the " while(condition) " , whereas on Mac the value can be positive. This
> happens when the insertion must be at the beginning of the list.
> For that reason, it is not always reproductible even on Mac, but you
> should get it with less than 10 executions.
>
> The second one (FIX2 in vtkImageStencilData::RemoveExtent) is always
> reproductible in both Mac/Windows and is related to the bad ordering of
> some elements in a list that causes an infinite loop later in the execution.
>
> Both crashes appear randomly later in the code, not at the location of the
> fixes.
>
> Let me know if you want me to test other cases or need more information.
>
>
> 2015-07-30 19:18 GMT+02:00 David Gobbi <david.gobbi at gmail.com>:
>
>> Hi Xabi,
>>
>> It doesn't look like the right fix, I suspect that the flaw in the logic
>> is somewhere else in that method.  Do you have any test code that I can use
>> to reproduce the bug?
>>
>>  - David
>>
>>
>> On Thu, Jul 30, 2015 at 1:05 AM, Xabi Riobe <xabivtk at gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I'm in the process of migrating from 5.10.1 to 6.3 and have found a fix
>>> i had in vtkImageStencilData::InsertAndMergeExtent from one year ago.
>>>
>>> at the end of the method there is this loop:
>>>
>>>    while (r1 < clist[insertIndex-1])
>>>    {
>>>       clist[insertIndex] = clist[insertIndex-2];
>>>       clist[insertIndex+1] = clist[insertIndex-1];
>>>       insertIndex -= 2;
>>>    }
>>>
>>> and i have this line added : if (insertIndex <= 1) break;
>>> with the comment: "avoid accessing out of range elements, which produces
>>> incorrect stencil that causes a random crash later when used in
>>> vtkImageStencilExecute"
>>>
>>> This random crash occured on Mac, never reproduced on Windows.
>>>
>>> I was wondering if by looking at the code you think it's a correct fix
>>> that can be merged.
>>>
>>> Thanks
>>>
>>> Xabi.
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20150922/393e37ea/attachment.html>


More information about the vtk-developers mailing list