[vtkusers] VTK not releasing memory, including minimal example.

Bill Lorensen bill.lorensen at gmail.com
Sun Sep 23 14:05:23 EDT 2012


You must delete the interactor before exit.

In C++ I always use vtkSmartPointer's and do not use Delete()'s.

On Sun, Sep 23, 2012 at 1:13 PM, P.J.Schaafsma <jetze.schaafsma at gmail.com>wrote:

> Here's some even simpler C++ code that has the same problem. I shouldn't
> have
> to explicitly Unregister the actors to make them reach reference count 0.
> That wouldn't make sense.
>
> The extra render window creation at the bottom is used to track how much
> memory is 'lost' eventually. With the key line with the Render() call
> commented out, memory use is 14Mb during both the first and second event
> loops triggered by interactor->Start(). With the key line enabled. Memory
> use is 115Mb during the first, and 54Mb during the second event loop.
>
> valgrind shows only a few hundred kbytes unfreed at program exit. The many
> invalid reads are expected, and they show that the objects are actually
> being deleted. Interspersed with the valgrind output is also the result of
> the print statements, showing undefined values for object reference counts.
>
>
> C++ Code
>
> int main()
> {
>         vtkXMLImageDataReader *reader = vtkXMLImageDataReader::New();
>         //reader->SetFileName("e:\\data\\volume\\manix_low.vti");
>         reader->SetFileName("/media/Data/data/volume/manix_low.vti");
>
>         vtkContourFilter *contour = vtkContourFilter::New();
>         contour->SetInputConnection(reader->GetOutputPort());
>         contour->SetValue(0, 800);
>
>         vtkPolyDataMapper *mapper = vtkPolyDataMapper::New();
>         mapper->SetInputConnection(contour->GetOutputPort());
>         mapper->Update();
>
>         vtkActor *actor = vtkActor::New();
>         actor->SetMapper(mapper);
>
>         vtkRenderer *renderer = vtkRenderer::New();
>         renderer->AddActor(actor);
>
>         vtkRenderWindow *render_window = vtkRenderWindow::New();
>         render_window->AddRenderer(renderer);
>
>         vtkInteractorStyleTrackballCamera *style =
> vtkInteractorStyleTrackballCamera::New();
>
>         vtkRenderWindowInteractor *interactor =
> vtkRenderWindowInteractor::New();
>         interactor->SetInteractorStyle(style);
>         interactor->SetRenderWindow(render_window);
>         interactor->Initialize();
>
>         printf("contour: %d\n", contour->GetReferenceCount());
>         printf("mapper: %d\n", mapper->GetReferenceCount());
>         printf("actor: %d\n", actor->GetReferenceCount());
>         printf("renderer: %d\n", renderer->GetReferenceCount());
>         printf("render_window: %d\n", render_window->GetReferenceCount());
>         printf("interactor: %d\n", interactor->GetReferenceCount());
>         printf("style: %d\n", style->GetReferenceCount());
>         printf("\n");
>
>         ////// Comment this out and save memory
>         render_window->Render();
>         //////
>
>         printf("contour: %d\n", contour->GetReferenceCount());
>         printf("mapper: %d\n", mapper->GetReferenceCount());
>         printf("actor: %d\n", actor->GetReferenceCount());
>         printf("renderer: %d\n", renderer->GetReferenceCount());
>         printf("render_window: %d\n", render_window->GetReferenceCount());
>         printf("interactor: %d\n", interactor->GetReferenceCount());
>         printf("style: %d\n", style->GetReferenceCount());
>         printf("\n");
>
>         renderer->RemoveActor(actor);
>         render_window->Render();
>
>         printf("contour: %d\n", contour->GetReferenceCount());
>         printf("mapper: %d\n", mapper->GetReferenceCount());
>         printf("actor: %d\n", actor->GetReferenceCount());
>         printf("renderer: %d\n", renderer->GetReferenceCount());
>         printf("render_window: %d\n", render_window->GetReferenceCount());
>         printf("interactor: %d\n", interactor->GetReferenceCount());
>         printf("style: %d\n", style->GetReferenceCount());
>         printf("\n");
>
>
>         actor->Delete();
>         mapper->Delete();
>         contour->Delete();
>         reader->Delete();
>
>         printf("contour: %d\n", contour->GetReferenceCount());
>         printf("mapper: %d\n", mapper->GetReferenceCount());
>         printf("actor: %d\n", actor->GetReferenceCount());
>         printf("renderer: %d\n", renderer->GetReferenceCount());
>         printf("render_window: %d\n", render_window->GetReferenceCount());
>         printf("interactor: %d\n", interactor->GetReferenceCount());
>         printf("style: %d\n", style->GetReferenceCount());
>         printf("\n");
>
>
>         interactor->Start();
>
>         render_window->RemoveRenderer(renderer);
>         interactor->SetInteractorStyle(0);
>
>         style->Delete();
>         interactor->Delete();
>         renderer->Delete();
>         render_window->Delete();
>
>         printf("contour: %d\n", contour->GetReferenceCount());
>         printf("mapper: %d\n", mapper->GetReferenceCount());
>         printf("actor: %d\n", actor->GetReferenceCount());
>         printf("renderer: %d\n", renderer->GetReferenceCount());
>         printf("render_window: %d\n", render_window->GetReferenceCount());
>         printf("interactor: %d\n", interactor->GetReferenceCount());
>         printf("style: %d\n", style->GetReferenceCount());
>         printf("\n");
>
>         render_window = vtkRenderWindow::New();
>         interactor = vtkRenderWindowInteractor::New();
>         interactor->SetRenderWindow(render_window);
>         interactor->Initialize();
>         interactor->Start();
>
>
>         printf("Done\n");
>
>         return 0;
>
> Valgrind output
>
> ==9499== Memcheck, a memory error detector
> ==9499== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
> ==9499== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
> ==9499== Command: ../../../../bin/Cone5
> ==9499==
> contour: 2
> mapper: 3
> actor: 2
> renderer: 2
> render_window: 2
> interactor: 2
> style: 2
>
> ==9499== Conditional jump or move depends on uninitialised value(s)
> ==9499==    at 0xD47E900: ??? (in
> /usr/lib/nvidia-current/libnvidia-glcore.so.295.40)
> ==9499==    by 0x7FEFFFEDF: ???
> ==9499==    by 0x7FEFFF0DF: ???
> ==9499==    by 0xE272F1F: ???
> ==9499==    by 0x7FEFFF01F: ???
> ==9499==    by 0x7FEFFF137: ???
> ==9499==    by 0x40B4DE7: ???
> ==9499==    by 0x4070FFF: ??? (in /dev/nvidia0)
> ==9499==    by 0x17F5E03F: ???
> ==9499==    by 0x1360E32F: ???
> ==9499==    by 0xFC4F67F: ???
> ==9499==    by 0x1FFFFFFFF: ???
> ==9499==
> ==9499== Conditional jump or move depends on uninitialised value(s)
> ==9499==    at 0xD47E909: ??? (in
> /usr/lib/nvidia-current/libnvidia-glcore.so.295.40)
> ==9499==    by 0x7FEFFFEDF: ???
> ==9499==    by 0x7FEFFF0DF: ???
> ==9499==    by 0xE272F1F: ???
> ==9499==    by 0x7FEFFF01F: ???
> ==9499==    by 0x7FEFFF137: ???
> ==9499==    by 0x40B4DE7: ???
> ==9499==    by 0x4070FFF: ??? (in /dev/nvidia0)
> ==9499==    by 0x17F5E03F: ???
> ==9499==    by 0x1360E32F: ???
> ==9499==    by 0xFC4F67F: ???
> ==9499==    by 0x1FFFFFFFF: ???
> ==9499==
> ==9499== Use of uninitialised value of size 8
> ==9499==    at 0xD47E916: ??? (in
> /usr/lib/nvidia-current/libnvidia-glcore.so.295.40)
> ==9499==    by 0x7FEFFFEDF: ???
> ==9499==    by 0x7FEFFF0DF: ???
> ==9499==    by 0xE272F1F: ???
> ==9499==    by 0x7FEFFF01F: ???
> ==9499==    by 0x7FEFFF137: ???
> ==9499==    by 0x40B4DE7: ???
> ==9499==    by 0x4070FFF: ??? (in /dev/nvidia0)
> ==9499==    by 0x17F5E03F: ???
> ==9499==    by 0x1360E32F: ???
> ==9499==    by 0xFC4F67F: ???
> ==9499==    by 0x1FFFFFFFF: ???
> ==9499==
> contour: 2
> mapper: 3
> actor: 2
> renderer: 2
> render_window: 2
> interactor: 2
> style: 2
>
> contour: 2
> mapper: 3
> actor: 1
> renderer: 2
> render_window: 2
> interactor: 2
> style: 2
>
> ==9499== Invalid read of size 4
> ==9499==    at 0x401798: vtkObjectBase::GetReferenceCount()
> (vtkObjectBase.h:143)
> ==9499==    by 0x401485: main (Cone5.cxx:109)
> ==9499==  Address 0xfbfec58 is 8 bytes inside a block of size 200 free'd
> ==9499==    at 0x4C2A4BC: operator delete(void*) (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==9499==    by 0x637B1DF: vtkContourFilter::~vtkContourFilter()
> (vtkContourFilter.cxx:95)
> ==9499==    by 0x781C8F0: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:286)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x77A11F8:
> vtkGarbageCollectorToObjectBaseFriendship::UnRegister(vtkObjectBase*,
> vtkObjectBase*) (vtkGarbageCollector.cxx:141)
> ==9499==    by 0x779FB69:
>
> vtkGarbageCollectorImpl::CollectComponent(vtkGarbageCollectorImpl::ComponentType*)
> (vtkGarbageCollector.cxx:702)
> ==9499==    by 0x779EDE0:
> vtkGarbageCollectorImpl::CollectInternal(vtkObjectBase*)
> (vtkGarbageCollector.cxx:473)
> ==9499==    by 0x77A0A14: vtkGarbageCollector::Collect(vtkObjectBase*)
> (vtkGarbageCollector.cxx:904)
> ==9499==    by 0x781C904: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:294)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x6F8B8F3: vtkAlgorithm::UnRegister(vtkObjectBase*)
> (vtkAlgorithm.cxx:917)
> ==9499==    by 0x781C29B: vtkObjectBase::Delete() (vtkObjectBase.cxx:134)
> ==9499==
> contour: 0
> ==9499== Invalid read of size 4
> ==9499==    at 0x401798: vtkObjectBase::GetReferenceCount()
> (vtkObjectBase.h:143)
> ==9499==    by 0x4014A2: main (Cone5.cxx:110)
> ==9499==  Address 0xfc15e18 is 8 bytes inside a block of size 664 free'd
> ==9499==    at 0x4C2A4BC: operator delete(void*) (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==9499==    by 0x5153D63:
> vtkPainterPolyDataMapper::~vtkPainterPolyDataMapper()
> (vtkPainterPolyDataMapper.cxx:96)
> ==9499==    by 0x781C8F0: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:286)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x77A11F8:
> vtkGarbageCollectorToObjectBaseFriendship::UnRegister(vtkObjectBase*,
> vtkObjectBase*) (vtkGarbageCollector.cxx:141)
> ==9499==    by 0x779FB69:
>
> vtkGarbageCollectorImpl::CollectComponent(vtkGarbageCollectorImpl::ComponentType*)
> (vtkGarbageCollector.cxx:702)
> ==9499==    by 0x779EDE0:
> vtkGarbageCollectorImpl::CollectInternal(vtkObjectBase*)
> (vtkGarbageCollector.cxx:473)
> ==9499==    by 0x77A0A14: vtkGarbageCollector::Collect(vtkObjectBase*)
> (vtkGarbageCollector.cxx:904)
> ==9499==    by 0x781C904: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:294)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x6F8B8F3: vtkAlgorithm::UnRegister(vtkObjectBase*)
> (vtkAlgorithm.cxx:917)
> ==9499==    by 0x781C29B: vtkObjectBase::Delete() (vtkObjectBase.cxx:134)
> ==9499==
> mapper: 0
> ==9499== Invalid read of size 4
> ==9499==    at 0x401798: vtkObjectBase::GetReferenceCount()
> (vtkObjectBase.h:143)
> ==9499==    by 0x4014BF: main (Cone5.cxx:111)
> ==9499==  Address 0x127d71d8 is 8 bytes inside a block of size 440 free'd
> ==9499==    at 0x4C2A4BC: operator delete(void*) (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==9499==    by 0x5265837: vtkOpenGLActor::~vtkOpenGLActor()
> (vtkOpenGLActor.h:42)
> ==9499==    by 0x781C8F0: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:286)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x781C515: vtkObjectBase::UnRegister(vtkObjectBase*)
> (vtkObjectBase.cxx:189)
> ==9499==    by 0x781C29B: vtkObjectBase::Delete() (vtkObjectBase.cxx:134)
> ==9499==    by 0x401434: main (Cone5.cxx:104)
> ==9499==
> actor: 0
> renderer: 2
> render_window: 2
> interactor: 2
> style: 2
>
> ==9499== Invalid read of size 4
> ==9499==    at 0x401798: vtkObjectBase::GetReferenceCount()
> (vtkObjectBase.h:143)
> ==9499==    by 0x401600: main (Cone5.cxx:129)
> ==9499==  Address 0xfbfec58 is 8 bytes inside a block of size 200 free'd
> ==9499==    at 0x4C2A4BC: operator delete(void*) (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==9499==    by 0x637B1DF: vtkContourFilter::~vtkContourFilter()
> (vtkContourFilter.cxx:95)
> ==9499==    by 0x781C8F0: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:286)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x77A11F8:
> vtkGarbageCollectorToObjectBaseFriendship::UnRegister(vtkObjectBase*,
> vtkObjectBase*) (vtkGarbageCollector.cxx:141)
> ==9499==    by 0x779FB69:
>
> vtkGarbageCollectorImpl::CollectComponent(vtkGarbageCollectorImpl::ComponentType*)
> (vtkGarbageCollector.cxx:702)
> ==9499==    by 0x779EDE0:
> vtkGarbageCollectorImpl::CollectInternal(vtkObjectBase*)
> (vtkGarbageCollector.cxx:473)
> ==9499==    by 0x77A0A14: vtkGarbageCollector::Collect(vtkObjectBase*)
> (vtkGarbageCollector.cxx:904)
> ==9499==    by 0x781C904: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:294)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x6F8B8F3: vtkAlgorithm::UnRegister(vtkObjectBase*)
> (vtkAlgorithm.cxx:917)
> ==9499==    by 0x781C29B: vtkObjectBase::Delete() (vtkObjectBase.cxx:134)
> ==9499==
> contour: 0
> ==9499== Invalid read of size 4
> ==9499==    at 0x401798: vtkObjectBase::GetReferenceCount()
> (vtkObjectBase.h:143)
> ==9499==    by 0x40161D: main (Cone5.cxx:130)
> ==9499==  Address 0xfc15e18 is 8 bytes inside a block of size 664 free'd
> ==9499==    at 0x4C2A4BC: operator delete(void*) (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==9499==    by 0x5153D63:
> vtkPainterPolyDataMapper::~vtkPainterPolyDataMapper()
> (vtkPainterPolyDataMapper.cxx:96)
> ==9499==    by 0x781C8F0: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:286)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x77A11F8:
> vtkGarbageCollectorToObjectBaseFriendship::UnRegister(vtkObjectBase*,
> vtkObjectBase*) (vtkGarbageCollector.cxx:141)
> ==9499==    by 0x779FB69:
>
> vtkGarbageCollectorImpl::CollectComponent(vtkGarbageCollectorImpl::ComponentType*)
> (vtkGarbageCollector.cxx:702)
> ==9499==    by 0x779EDE0:
> vtkGarbageCollectorImpl::CollectInternal(vtkObjectBase*)
> (vtkGarbageCollector.cxx:473)
> ==9499==    by 0x77A0A14: vtkGarbageCollector::Collect(vtkObjectBase*)
> (vtkGarbageCollector.cxx:904)
> ==9499==    by 0x781C904: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:294)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x6F8B8F3: vtkAlgorithm::UnRegister(vtkObjectBase*)
> (vtkAlgorithm.cxx:917)
> ==9499==    by 0x781C29B: vtkObjectBase::Delete() (vtkObjectBase.cxx:134)
> ==9499==
> mapper: 0
> ==9499== Invalid read of size 4
> ==9499==    at 0x401798: vtkObjectBase::GetReferenceCount()
> (vtkObjectBase.h:143)
> ==9499==    by 0x40163A: main (Cone5.cxx:131)
> ==9499==  Address 0x127d71d8 is 8 bytes inside a block of size 440 free'd
> ==9499==    at 0x4C2A4BC: operator delete(void*) (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==9499==    by 0x5265837: vtkOpenGLActor::~vtkOpenGLActor()
> (vtkOpenGLActor.h:42)
> ==9499==    by 0x781C8F0: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:286)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x781C515: vtkObjectBase::UnRegister(vtkObjectBase*)
> (vtkObjectBase.cxx:189)
> ==9499==    by 0x781C29B: vtkObjectBase::Delete() (vtkObjectBase.cxx:134)
> ==9499==    by 0x401434: main (Cone5.cxx:104)
> ==9499==
> actor: 0
> ==9499== Invalid read of size 4
> ==9499==    at 0x401798: vtkObjectBase::GetReferenceCount()
> (vtkObjectBase.h:143)
> ==9499==    by 0x401657: main (Cone5.cxx:132)
> ==9499==  Address 0x1284a2f8 is 8 bytes inside a block of size 808 free'd
> ==9499==    at 0x4C2A4BC: operator delete(void*) (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==9499==    by 0x52A411D: vtkOpenGLRenderer::~vtkOpenGLRenderer()
> (vtkOpenGLRenderer.cxx:1278)
> ==9499==    by 0x781C8F0: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:286)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x781C515: vtkObjectBase::UnRegister(vtkObjectBase*)
> (vtkObjectBase.cxx:189)
> ==9499==    by 0x781C29B: vtkObjectBase::Delete() (vtkObjectBase.cxx:134)
> ==9499==    by 0x4015DD: main (Cone5.cxx:126)
> ==9499==
> renderer: 0
> ==9499== Invalid read of size 4
> ==9499==    at 0x401798: vtkObjectBase::GetReferenceCount()
> (vtkObjectBase.h:143)
> ==9499==    by 0x401674: main (Cone5.cxx:133)
> ==9499==  Address 0x1284a8b8 is 8 bytes inside a block of size 632 free'd
> ==9499==    at 0x4C2A4BC: operator delete(void*) (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==9499==    by 0x52F5C59: vtkXOpenGLRenderWindow::~vtkXOpenGLRenderWindow()
> (vtkXOpenGLRenderWindow.cxx:455)
> ==9499==    by 0x781C8F0: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:286)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x781C515: vtkObjectBase::UnRegister(vtkObjectBase*)
> (vtkObjectBase.cxx:189)
> ==9499==    by 0x51B6D56: vtkRenderWindow::UnRegister(vtkObjectBase*)
> (vtkRenderWindow.cxx:1309)
> ==9499==    by 0x51BF26A:
> vtkRenderWindowInteractor::SetRenderWindow(vtkRenderWindow*)
> (vtkRenderWindowInteractor.cxx:194)
> ==9499==    by 0x51B6D25: vtkRenderWindow::UnRegister(vtkObjectBase*)
> (vtkRenderWindow.cxx:1303)
> ==9499==    by 0x781C29B: vtkObjectBase::Delete() (vtkObjectBase.cxx:134)
> ==9499==    by 0x4015F4: main (Cone5.cxx:127)
> ==9499==
> render_window: 0
> ==9499== Invalid read of size 4
> ==9499==    at 0x401798: vtkObjectBase::GetReferenceCount()
> (vtkObjectBase.h:143)
> ==9499==    by 0x401691: main (Cone5.cxx:134)
> ==9499==  Address 0x127e70e8 is 8 bytes inside a block of size 312 free'd
> ==9499==    at 0x4C2A4BC: operator delete(void*) (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==9499==    by 0x525253F:
> vtkXRenderWindowInteractor::~vtkXRenderWindowInteractor()
> (vtkXRenderWindowInteractor.cxx:147)
> ==9499==    by 0x781C8F0: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:286)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x781C515: vtkObjectBase::UnRegister(vtkObjectBase*)
> (vtkObjectBase.cxx:189)
> ==9499==    by 0x51BF203:
> vtkRenderWindowInteractor::UnRegister(vtkObjectBase*)
> (vtkRenderWindowInteractor.cxx:181)
> ==9499==    by 0x51B6D41: vtkRenderWindow::UnRegister(vtkObjectBase*)
> (vtkRenderWindow.cxx:1304)
> ==9499==    by 0x781C29B: vtkObjectBase::Delete() (vtkObjectBase.cxx:134)
> ==9499==    by 0x4015F4: main (Cone5.cxx:127)
> ==9499==
> interactor: 0
> ==9499== Invalid read of size 4
> ==9499==    at 0x401798: vtkObjectBase::GetReferenceCount()
> (vtkObjectBase.h:143)
> ==9499==    by 0x4016AE: main (Cone5.cxx:135)
> ==9499==  Address 0x1284ad18 is 8 bytes inside a block of size 280 free'd
> ==9499==    at 0x4C2A4BC: operator delete(void*) (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==9499==    by 0x50CBE9F:
> vtkInteractorStyleTrackballCamera::~vtkInteractorStyleTrackballCamera()
> (vtkInteractorStyleTrackballCamera.cxx:36)
> ==9499==    by 0x781C8F0: vtkObjectBase::UnRegisterInternal(vtkObjectBase*,
> int) (vtkObjectBase.cxx:286)
> ==9499==    by 0x781AE56: vtkObject::UnRegisterInternal(vtkObjectBase*,
> int)
> (vtkObject.cxx:885)
> ==9499==    by 0x781C515: vtkObjectBase::UnRegister(vtkObjectBase*)
> (vtkObjectBase.cxx:189)
> ==9499==    by 0x781C29B: vtkObjectBase::Delete() (vtkObjectBase.cxx:134)
> ==9499==    by 0x4015AF: main (Cone5.cxx:124)
> ==9499==
> style: 0
>
> Done
> ==9499==
> ==9499== FILE DESCRIPTORS: 5 open at exit.
> ==9499== Open AF_UNIX socket 3: <unknown>
> ==9499==    at 0x805D757: socket (syscall-template.S:82)
> ==9499==    by 0xEAB80BA: ??? (in
> /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
> ==9499==    by 0xEAB8543: xcb_connect_to_display_with_auth_info (in
> /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0)
> ==9499==    by 0x9427EF1: _XConnectXCB (in
> /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
> ==9499==    by 0x9418A40: XOpenDisplay (in
> /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
> ==9499==    by 0x91A354E: XtOpenDisplay (in
> /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0)
> ==9499==    by 0x5252EA3: vtkXRenderWindowInteractor::Initialize()
> (vtkXRenderWindowInteractor.cxx:366)
> ==9499==    by 0x401707: main (Cone5.cxx:141)
> ==9499==
> ==9499== Open file descriptor 9: /proc/2720/auxv
> ==9499==    <inherited from parent>
> ==9499==
> ==9499== Open file descriptor 2: /dev/pts/1
> ==9499==    <inherited from parent>
> ==9499==
> ==9499== Open file descriptor 1: /dev/pts/1
> ==9499==    <inherited from parent>
> ==9499==
> ==9499== Open file descriptor 0: /dev/pts/1
> ==9499==    <inherited from parent>
> ==9499==
> ==9499==
> ==9499== HEAP SUMMARY:
> ==9499==     in use at exit: 508,751 bytes in 2,432 blocks
> ==9499==   total heap usage: 32,927 allocs, 30,495 frees, 915,497,381 bytes
> allocated
> ==9499==
> ==9499== LEAK SUMMARY:
> ==9499==    definitely lost: 262,268 bytes in 3 blocks
> ==9499==    indirectly lost: 176 bytes in 4 blocks
> ==9499==      possibly lost: 180 bytes in 5 blocks
> ==9499==    still reachable: 246,127 bytes in 2,420 blocks
> ==9499==         suppressed: 0 bytes in 0 blocks
> ==9499== Rerun with --leak-check=full to see details of leaked memory
> ==9499==
> ==9499== For counts of detected and suppressed errors, rerun with: -v
> ==9499== Use --track-origins=yes to see where uninitialised values come
> from
> ==9499== ERROR SUMMARY: 6153 errors from 13 contexts (suppressed: 2 from 2)
>
>
>
> --
> View this message in context:
> http://vtk.1045678.n5.nabble.com/VTK-not-releasing-memory-including-minimal-example-tp5716258p5716261.html
> Sent from the VTK - Users mailing list archive at Nabble.com.
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>



-- 
Unpaid intern in BillsBasement at noware dot com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120923/b0503dff/attachment.htm>


More information about the vtkusers mailing list