LinkProperties with Subproxy cause a leak
Using LinkProperties within a Subproxy in a filter integrated in the pipeline causes a leak.
eg:
<SourceProxy class="vtkMetaFilter" label="Meta Filter" name="MetaFilter">
<InputProperty command="SetInputConnection" name="Input">
<ProxyGroupDomain name="groups">
<Group name="sources"/>
<Group name="filters"/>
</ProxyGroupDomain>
<DataTypeDomain name="input_type">
<DataType value="vtkDataSet"/>
</DataTypeDomain>
</InputProperty>
<SubProxy command="SetFilter">
<Proxy name="Filter"
proxygroup="filters"
proxyname="MyElevationFilter"></Proxy>
<LinkProperties>
<Property name="Input" with_property="Input" />
</LinkProperties>
</SubProxy>
</SourceProxy>
This is caused by a register loop that the Garbage collector is not able to manage. Deleting the filter before closing paraview avoid the link.
Steps to reproduce:
- build ParaView
- compile this modified elevation filter example: ElevationFilter.tgz
- run ParaView, load the compiled plugin
- Wavelet, Apply
- MetaFilter, Apply
- Close ParaView
vtkDebugLeaks has detected LEAKS!
Class "vtkVoxel" has 2 instances still around.
Class "vtkInformationDoubleValue" has 4 instances still around.
Class "vtkPVPostFilter" has 1 instance still around.
Class "vtkInformationIntegerVectorValue" has 6 instances still around.
Class "vtkRTAnalyticSource" has 1 instance still around.
Class "vtkInformationDoubleVectorValue" has 6 instances still around.
Class "vtkInformationStringValue" has 2 instances still around.
Class "vtkFieldData" has 2 instances still around.
Class "9vtkBufferIfE" has 1 instance still around.
Class "9vtkBufferIdE" has 2 instances still around.
Class "vtkPVCompositeDataPipeline" has 1 instance still around.
Class "vtkPVPostFilterExecutive" has 1 instance still around.
Class "vtkAlgorithmOutput" has 2 instances still around.
Class "vtkIdList" has 2 instances still around.
Class "vtkCommand or subclass" has 6 instances still around.
Class "vtkMatrix3x3" has 2 instances still around.
Class "vtkInformationVector" has 12 instances still around.
Class "vtkInformation" has 30 instances still around.
Class "vtkTypeFloat32Array" has 1 instance still around.
Class "vtkInformationIterator" has 2 instances still around.
Class "vtkInformationIntegerValue" has 60 instances still around.
Class "vtkInformationStringVectorValue" has 1 instance still around.
Class "vtkMatrix4x4" has 4 instances still around.
Class "vtkPointData" has 2 instances still around.
Class "vtkCellData" has 2 instances still around.
Class "vtkImageData" has 2 instances still around.
Class "vtkInformationExecutivePortValue" has 2 instances still around.
Class "vtkTypeFloat64Array" has 2 instances still around.
Class "vtkPoints" has 2 instances still around.
Class "vtkInformationIntegerPointerValue" has 2 instances still around.
Class "vtkInformationExecutivePortVectorValue" has 2 instances still around.
The metafilter and its internal filters are correctly deleted but, not all the rest of the pipeline.