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

P.J.Schaafsma jetze.schaafsma at gmail.com
Sun Sep 23 13:13:06 EDT 2012


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.



More information about the vtkusers mailing list