<div dir="ltr">Christian,<div><br></div><div>A fix for this has been merged in VTK master.</div><div><br></div><div><a href="http://www.vtk.org/gitweb?p=VTK.git;a=commit;h=dac748aedd7ffdc5aca6d555e74c668451ef4772">http://www.vtk.org/gitweb?p=VTK.git;a=commit;h=dac748aedd7ffdc5aca6d555e74c668451ef4772</a><br></div><div><br></div><div>Thanks,</div><div>Cory</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 16, 2015 at 3:23 AM, Christian Askeland <span dir="ltr"><<a href="mailto:christian.askeland@gmail.com" target="_blank">christian.askeland@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 David and Cory,<div><br></div><div>Thank you for looking into this. I'll use the workaround until the next release.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-Christian</div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Mar 15, 2015 at 5:40 AM, Cory Quammen <span dir="ltr"><<a href="mailto:cory.quammen@kitware.com" target="_blank">cory.quammen@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">David and Christian,<br>
<br>
I have posted a proposed fix for this at<br>
<a href="http://review.source.kitware.com/#/t/5576/" target="_blank">http://review.source.kitware.com/#/t/5576/</a><br>
<br>
Your reviews and testing are appreciated.<br>
<br>
Thanks,<br>
Cory<br>
<div><div><br>
On Fri, Mar 13, 2015 at 8:37 AM, David Gobbi <<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>> wrote:<br>
> Hi Christian,<br>
><br>
> I noticed this same issue a few days ago and filed a bug report:<br>
> <a href="http://www.vtk.org/Bug/view.php?id=15365" target="_blank">http://www.vtk.org/Bug/view.php?id=15365</a><br>
><br>
> Until this bug is fixed, here is a workaround:<br>
><br>
>   lut->SetNumberOfTableValues(numberOfTableValues);<br>
>   lut->GetTable()->Resize(numberOfTableValues + 3);<br>
><br>
> Basically, the crash occurs because Resize() is being called by<br>
> multiple threads inside vtkImageMapToColors, so the workaround<br>
> is to call Resize() beforehand.<br>
><br>
>  - David<br>
><br>
><br>
> On Fri, Mar 13, 2015 at 6:11 AM, Christian Askeland<br>
> <<a href="mailto:christian.askeland@gmail.com" target="_blank">christian.askeland@gmail.com</a>> wrote:<br>
>><br>
>> Hi all,<br>
>><br>
>> I recently upgraded from vtk 6.1.0 to 6.2.0. Most of my rather large<br>
>> vtk-based application runs as before, but I get a crash in<br>
>> vtkImageMapToColors. I am testing on OSX10.8, but my jenkins indicates that<br>
>> this also happens on Ubuntu 14.04.<br>
>><br>
>> The vtkLookupTable that is input to the mapper has a custom<br>
>> NumberOfTableValues, and a little digging has shown that setting this value<br>
>> > 256 (the default) causes the crash.<br>
>><br>
>> Here is a distilled version of the problem:<br>
>><br>
>> typedef vtkSmartPointer<vtkImageData> vtkImageDataPtr;<br>
>> typedef vtkSmartPointer<vtkLookupTable> vtkLookupTablePtr;<br>
>> typedef vtkSmartPointer<vtkImageMapToColors> vtkImageMapToColorsPtr;<br>
>><br>
>> // create simple image data<br>
>> vtkImageDataPtr image = vtkImageDataPtr::New();<br>
>> image->SetExtent(0, 2, 0, 2, 0, 2); // 3x3x3 image<br>
>> image->AllocateScalars(VTK_UNSIGNED_CHAR, 1);<br>
>><br>
>> // create simple lut data with a custom table size<br>
>> int numberOfTableValues = 257; // anything above 256 (default) fails<br>
>> vtkLookupTablePtr lut = vtkLookupTablePtr::New();<br>
>> lut->SetNumberOfTableValues(numberOfTableValues);<br>
>> lut->SetTableRange(0, numberOfTableValues - 1);<br>
>> lut->Build();<br>
>><br>
>> // send through a vtkImageMapToColors<br>
>> vtkImageMapToColorsPtr mapper = vtkImageMapToColorsPtr::New();<br>
>> mapper->SetOutputFormatToRGBA();<br>
>> mapper->SetInputData(image);<br>
>> mapper->SetLookupTable(lut);<br>
>> mapper->Update(); // crashes deep inside<br>
>> vtkLookupTable::MapScalarsThroughTable2<br>
>><br>
>> The call stack in the crashing thread is<br>
>><br>
>> abort<br>
>> free<br>
>> vtkDataArrayTemplate<unsigned char>::ResizeAndExtend(long long)<br>
>> vtkDataArrayTemplate<unsigned char>::Resize(long long)<br>
>> void (anonymous namespace)::vtkLookupTableMapData<unsigned char>(...)<br>
>> vtkLookupTable::MapScalarsThroughTable2(void*, unsigned char*, int, int,<br>
>> int, int)<br>
>> vtkImageMapToColors::ThreadedRequestData(...)<br>
>> vtkThreadedImageAlgorithmThreadedExecute(...)<br>
>><br>
>> Even more digging shows that calling<br>
>> vtkLookupTable::MapScalarsThroughTable explicitly after creating the lut<br>
>> removes the crash:<br>
>><br>
>> unsigned char input = 0;<br>
>> lut->MapScalarsThroughTable2(&input, &input, VTK_UNSIGNED_CHAR, 1, 1, 1);<br>
>><br>
>> I have not started digging into the vtk code itself yet.<br>
>><br>
>> I would appreciate if anyone have an idea of what is wrong here. I can<br>
>> file a bug report if noone have a solution.<br>
>><br>
><br>
<br>
<br>
<br>
</div></div><span><font color="#888888">--<br>
Cory Quammen<br>
R&D Engineer<br>
Kitware, Inc.<br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Cory Quammen<br>R&D Engineer<br>Kitware, Inc.</div>
</div>