<div dir="ltr"><div>Sean,</div>   Thankyou for this information! I have been trying to convert TestEmptyInput.tcl to python and have been getting random hangs in windows, now I know the cause!<div>Currently I can test 1708 classes out of 1981 classes.<br><div>This is done by removing the testing for vtkDataEncoder, and filtering out classes that have 'Reader', 'Writer', 'Array_I', 'Qt' in their names. and trapping abstract classes and those such as vtkMathTextUtilities which have no concrete implementation. I am also skipping the classExcepions as detailed in the tcl code.</div><div><br></div><div>I am not sure if this is a good approach, but I think I am getting there.</div><div><br></div><div>I am also adding an observer for error events but it has only picked up a fail on:</div><div><div>144  Testing -- vtkObjectBase -</div><div>vtkObjectBase AddObserver</div></div><div><br></div><div>Also there is a message like:</div><div><div>221  Testing -- vtkStreamingStatistics -</div><div>StatisticsAlgorithm not set! Punting!</div></div><div>Not sure what to do with this one.</div><div><br></div><div><br></div><div>Regards</div><div>   Andrew<br><div class="gmail_extra"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">---------- Forwarded message ----------<br>From: Sean McBride <<a href="mailto:sean@rogue-research.com">sean@rogue-research.com</a>><br>To: <<a href="mailto:vtk-developers@vtk.org">vtk-developers@vtk.org</a>><br>Cc: <br>Date: Mon, 30 Mar 2015 17:32:09 -0400<br>Subject: [vtk-developers] "vtkCommonCoreTcl-TestEmptyInput" fails due to use-after-free in vtkDataEncoder<br>Hi all,<br>
<br>
On my Rogue7 dashboard vtkCommonCoreTcl-TestEmptyInput fails intermittently.<br>
<br>
I debugged it a bit and, long story short, the evidence suggested a use-after-free so I enabled MallocScribble (on OS X it writes 0x55 to freed memory) and caught it in lldb:<br>
<br>
(lldb) bt<br>
* thread #7: tid = 0x64d84d, 0x00007fff8a7afbc9 libsystem_c.dylib`pthread_mutex_lock + 20, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)<br>
    frame #0: 0x00007fff8a7afbc9 libsystem_c.dylib`pthread_mutex_lock + 20<br>
    frame #1: 0x0000000100fd0e3e libvtkCommonCore-6.3.1.dylib`vtkSimpleMutexLock::Lock(this=0x555555555555561d) + 94 at vtkMutexLock.cxx:75<br>
    frame #2: 0x000000013886bd3e libvtkWebCore-6.3.1.dylib`(anonymous namespace)::vtkSharedData::BeginWorker(this=0x5555555555555555) + 158 at vtkDataEncoder.cxx:99<br>
    frame #3: 0x000000013886ad18 libvtkWebCore-6.3.1.dylib`(anonymous namespace)::Worker(calldata=0x000000010f046740) + 248 at vtkDataEncoder.cxx:304<br>
    frame #4: 0x00007fff8a7aa772 libsystem_c.dylib`_pthread_start + 327<br>
    frame #5: 0x00007fff8a7971a1 libsystem_c.dylib`thread_start + 13<br>
<br>
Notice the this=0x5555555555555555.  Definitely use-after-free.<br>
<br>
Hopefully this is enough for someone that knows this code to squash the bug...!<br>
<br>
Cheers,<br>
<br>
--<br>
____________________________________________________________<br>
Sean McBride, B. Eng                 <a href="mailto:sean@rogue-research.com">sean@rogue-research.com</a><br>
Rogue Research                        <a href="http://www.rogue-research.com" target="_blank">www.rogue-research.com</a><br>
Mac Software Developer              Montréal, Québec, Canada<br>
<br>
<br>
<br>
<br><br>---------- Forwarded message ----------<br>From: Ben Boeckel <<a href="mailto:ben.boeckel@kitware.com">ben.boeckel@kitware.com</a>><br>To: Sean McBride <<a href="mailto:sean@rogue-research.com">sean@rogue-research.com</a>><br>Cc: <a href="mailto:vtk-developers@vtk.org">vtk-developers@vtk.org</a><br>Date: Mon, 30 Mar 2015 18:05:49 -0400<br>Subject: Re: [vtk-developers] "vtkCommonCoreTcl-TestEmptyInput" fails due to use-after-free in vtkDataEncoder<br>On Mon, Mar 30, 2015 at 17:32:09 -0400, Sean McBride wrote:<br>
> I debugged it a bit and, long story short, the evidence suggested a<br>
> use-after-free so I enabled MallocScribble (on OS X it writes 0x55 to<br>
> freed memory) and caught it in lldb:<br>
<br>
FWIW, same thing with glibc:<br>
<br>
    export MALLOC_PERTURB_=100<br>
<br>
Any value between 1 and 255 will memset() inside of free() (0 disables).<br>
Causes ~5% overhead or so.<br>
<br>
--Ben<br>
<br>
<br><br>---------- Forwarded message ----------<br>From: Sean McBride <<a href="mailto:sean@rogue-research.com">sean@rogue-research.com</a>><br>To: <<a href="mailto:ben.boeckel@kitware.com">ben.boeckel@kitware.com</a>><br>Cc: <a href="mailto:vtk-developers@vtk.org">vtk-developers@vtk.org</a><br>Date: Mon, 30 Mar 2015 18:30:49 -0400<br>Subject: Re: [vtk-developers] "vtkCommonCoreTcl-TestEmptyInput" fails due to use-after-free in vtkDataEncoder<br>On Mon, 30 Mar 2015 18:05:49 -0400, Ben Boeckel said:<br>
<br>
>> I debugged it a bit and, long story short, the evidence suggested a<br>
>> use-after-free so I enabled MallocScribble (on OS X it writes 0x55 to<br>
>> freed memory) and caught it in lldb:<br>
><br>
>FWIW, same thing with glibc:<br>
><br>
>    export MALLOC_PERTURB_=100<br>
><br>
>Any value between 1 and 255 will memset() inside of free() (0 disables).<br>
>Causes ~5% overhead or so.<br>
<br>
The OS X one has similarly low overhead, and as such has been enabled on all my dashboards for ages.<br>
<br>
Getting off-topic I guess, but given the low overhead and great benefit, would be nice to have it enabled on the continuous and gitlab bots too... (maybe it is?)<br>
<br>
Cheers,<br>
<br>
--<br>
____________________________________________________________<br>
Sean McBride, B. Eng                 <a href="mailto:sean@rogue-research.com">sean@rogue-research.com</a><br>
Rogue Research                        <a href="http://www.rogue-research.com" target="_blank">www.rogue-research.com</a><br>
Mac Software Developer              Montréal, Québec, Canada<br>
<br>
<br>
<br>
<br><br>---------- Forwarded message ----------<br>From: Ben Boeckel <<a href="mailto:ben.boeckel@kitware.com">ben.boeckel@kitware.com</a>><br>To: Sean McBride <<a href="mailto:sean@rogue-research.com">sean@rogue-research.com</a>><br>Cc: <a href="mailto:vtk-developers@vtk.org">vtk-developers@vtk.org</a><br>Date: Mon, 30 Mar 2015 22:34:52 -0400<br>Subject: Re: [vtk-developers] "vtkCommonCoreTcl-TestEmptyInput" fails due to use-after-free in vtkDataEncoder<br>On Mon, Mar 30, 2015 at 18:30:49 -0400, Sean McBride wrote:<br>
> The OS X one has similarly low overhead, and as such has been enabled<br>
> on all my dashboards for ages.<br>
<br>
How is it enabled? Environment? Or is it special tooling?<br>
<br>
> Getting off-topic I guess, but given the low overhead and great<br>
> benefit, would be nice to have it enabled on the continuous and gitlab<br>
> bots too... (maybe it is?)<br>
<br>
I'll start turning it on for them. Since we'd like to keep things green,<br>
we it won't be a one-shot deal. In front of that though is doing<br>
parallel testing (shaves ~hour off of some builds so our turn-around<br>
should be much better).<br>
<br>
--Ben<br> </blockquote><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">-- <br></blockquote></div><div class="gmail_signature">___________________________________________<br>Andrew J. P. Maclean<br><br>___________________________________________</div>
</div></div></div></div>