[vtkusers] Delete problems
David Cole
david.cole at kitware.com
Fri Jul 14 16:27:42 EDT 2006
Can you set a breakpoint on this message in the VTK code and then send
the call stack to the list? This means that an object *other* than one
that has a legitimate reference to it is actually trying to delete it.
Your program is trying to forcibly delete something *prior* to when the
last referencer has let go of the object.....
Dominik Szczerba wrote:
> Thanks a lot, I am doing all this, still with no success:
>
> "Trying to delete object with non-zero reference count."
>
> Indeed, if I print the reference count it is never zero. So does the
> delete order really not matter? If I can only delete non-zero counted
> objects, then I cannot delete anything! Are the children not deleted
> automatically or something?
>
> regards
> Dominik
>
> David Cole wrote:
>
>> Any "New" calls should have corresponding "Delete" calls. Any
>> "Register" calls should have corresponding "UnRegister" calls. And
>> any reference loops need to be broken by setting one of the pointer
>> variables involved to NULL or 0.
>>
>> Order is largely irrelevant except in the reference loop case.
>> Sometimes it's important to know which part of a reference loop needs
>> to go away first. Perhaps you need to force a bunch of objects to go
>> away before a window is destroyed (for example).
>>
>> That's the beauty of reference counted systems: order doesn't matter
>> as much as balance does...
>>
>> If you can't figure out where there's a missing Delete or UnRegister
>> call, look for loops in pointer members (does your pipeline have a
>> feedback loop??) It sometimes helps to draw a diagram of the
>> pipeline. Or you could try simplifying it bit by bit and see when the
>> leak goes away... Then start adding things back in until the leak
>> comes back. That should point out where to look in the code...
>>
>>
>> Hope this helps,
>> David
>>
>>
>> Dominik Szczerba wrote:
>>
>>> Hi,
>>>
>>> I have a quite complex pipeline with a few actors and filters. When
>>> I clean up at the end I always get a non-zero reference count
>>> somewhere (using C++). How do I robustly know in which order I
>>> should Delete my components?
>>>
>>> PS. this is particularly annoying in combination matlab-vtk, as
>>> matlab dies on any of such errors.
>>>
>>> regards,
>>> Dominik
>>> _______________________________________________
>>> This is the private VTK discussion list. Please keep messages
>>> on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>
>
More information about the vtkusers
mailing list