<div dir="ltr">Hi David,<div><br></div><div>here is a sample that reproduce the crash, plus another one found recently.</div><div>both are related to the use of vtkImageStencilData::Subtract</div><div><br></div><div>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.</div><div><br></div><div>some comments are included in the .h close to the code fix (look for #ifdef FIX).</div><div><br></div><div>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.</div><div>For that reason, it is not always reproductible even on Mac, but you should get it with less than 10 executions.</div><div><br></div><div>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.</div><div><br></div><div>Both crashes appear randomly later in the code, not at the location of the fixes.</div><div><br></div><div>Let me know if you want me to test other cases or need more information.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-07-30 19:18 GMT+02:00 David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Xabi,<div><br></div><div>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?</div><span class="HOEnZb"><font color="#888888"><div><br></div></font></span><div><span class="HOEnZb"><font color="#888888"> - David</font></span><div><div class="h5"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 30, 2015 at 1:05 AM, Xabi Riobe <span dir="ltr"><<a href="mailto:xabivtk@gmail.com" target="_blank">xabivtk@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi,<div><br></div><div>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.</div><div><br></div><div>at the end of the method there is this loop:</div><div><br></div><div><div>   while (r1 < clist[insertIndex-1])</div><div>   {</div><div>      clist[insertIndex] = clist[insertIndex-2];</div><div>      clist[insertIndex+1] = clist[insertIndex-1];</div><div>      insertIndex -= 2;</div><div>   }<br></div></div><div><br></div><div>and i have this line added : if (insertIndex <= 1) break;</div><div>with the comment: "avoid accessing out of range elements, which produces incorrect stencil that causes a random crash later when used in vtkImageStencilExecute"</div><div><br></div><div>This random crash occured on Mac, never reproduced on Windows.</div><div><br></div><div>I was wondering if by looking at the code you think it's a correct fix that can be merged.</div><div><br></div><div>Thanks</div><span><font color="#888888"><div><br></div><div>Xabi.</div></font></span></div>
</blockquote></div><br></div></div></div></div></div>
</blockquote></div><br></div>