[ITK-users] Possible memory leak in itk::IterativeTriangleCellSubdivisionQuadEdgeMeshFilter

wanlin zhu wanlin.zhu at outlook.com
Thu Jun 4 12:55:18 EDT 2015


I think the memory leak issue origined from QuadEdgeMesh,#include "itkQuadEdgeMesh.h"#include "itkRegularSphereMeshSource.h"typedef itk::QuadEdgeMesh< double, 3 > TMesh;typedef itk::RegularSphereMeshSource< TMesh > TSource;int main(int argc, char ** argv){  TSource::Pointer source = TSource::New();  source->Update();  TSource::Pointer source1 = TSource::New();  source1->SetResolution(5);  source1->Update();  TMesh::Pointer mesh = source->GetOutput();  mesh->Graft( source1->GetOutput());  return EXIT_SUCCESS;}It gives memory leak errors as well. wanlin
> Date: Wed, 3 Jun 2015 09:49:33 -0700
> From: davis.vigneault at gmail.com
> To: insight-users at itk.org
> Subject: [ITK-users] Possible memory leak in itk::IterativeTriangleCellSubdivisionQuadEdgeMeshFilter
> 
> All--
> 
> I've been observing some erratic behavior in my program, which after some
> investigation I believe may be due to a memory leak in
> itk::IterativeTriangleCellSubdivisionQuadEdgeMeshFilter.  I've copied below
> a minimal example which exhibits the problem, along with the output from
> valgrind showing 15,360 bytes lost in 128 blocks.  Is anyone able to
> reproduce this issue?  (Note that the 72,704 bytes still reachable is 
> valgrind's fault
> <http://stackoverflow.com/questions/30376601/valgrind-memory-still-reachable-with-trivial-program-using-iostream> 
> , not ITK's).
> 
> ///////////////////////////////////////
> // MINIMAL EXAMPLE //
> ///////////////////////////////////////
> 
> #include "itkQuadEdgeMesh.h"
> #include "itkRegularSphereMeshSource.h"
> #include "itkLoopTriangleCellSubdivisionQuadEdgeMeshFilter.h"
> #include "itkIterativeTriangleCellSubdivisionQuadEdgeMeshFilter.h"
> 
> typedef itk::QuadEdgeMesh< double, 3 > TMesh;
> typedef itk::RegularSphereMeshSource< TMesh > TSource;
> typedef itk::LoopTriangleCellSubdivisionQuadEdgeMeshFilter< TMesh, TMesh >
> TLoop;
> typedef itk::IterativeTriangleCellSubdivisionQuadEdgeMeshFilter< TMesh,
> TLoop > TSubdivide;
> 
> int main(int argc, char ** argv)
> {
> 
>   TSource::Pointer source = TSource::New();
>   TSubdivide::Pointer sub = TSubdivide::New();
>   sub->SetInput( source->GetOutput() );
>   sub->SetResolutionLevels( 1 );
>   sub->Update();
> 
>   return EXIT_SUCCESS;
> 
> }
> 
> ////////////////////////////////////////
> // VALGRIND OUTPUT //
> ////////////////////////////////////////
> 
> $ valgrind --leak-check=full ./dv-registration
> ==20328== Memcheck, a memory error detector
> ==20328== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
> ==20328== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
> ==20328== Command: ./dv-registration
> ==20328== 
> ==20328== 
> ==20328== HEAP SUMMARY:
> ==20328==     in use at exit: 92,160 bytes in 257 blocks
> ==20328==   total heap usage: 13,030 allocs, 12,773 frees, 879,010 bytes
> allocated
> ==20328== 
> ==20328== 19,456 (15,360 direct, 4,096 indirect) bytes in 128 blocks are
> definitely lost in loss record 2 of 3
> ==20328==    at 0x4C2B0A5: operator new(unsigned long)
> (vg_replace_malloc.c:324)
> ==20328==    by 0x4984F8: itk::QuadEdgeMesh<double, 3u,
> itk::QuadEdgeMeshTraits<double, 3u, bool, bool, float, float>
> >::AddFace(itk::GeometricalQuadEdge<unsigned long, unsigned long, bool,
> bool, true>*) (in
> /home/davis/Developer/oxford/Stebbing_Method/SubTest/bin/dv-registration)
> ==20328==    by 0x49926F: itk::QuadEdgeMesh<double, 3u,
> itk::QuadEdgeMeshTraits<double, 3u, bool, bool, float, float>
> >::AddFaceWithSecurePointList(std::vector<unsigned long,
> std::allocator<unsigned long> > const&, bool) (in
> /home/davis/Developer/oxford/Stebbing_Method/SubTest/bin/dv-registration)
> ==20328==    by 0x49D0D5: void
> itk::CopyMeshToMeshCells<itk::QuadEdgeMesh<double, 3u,
> itk::QuadEdgeMeshTraits<double, 3u, bool, bool, float, float> >,
> itk::QuadEdgeMesh<double, 3u, itk::QuadEdgeMeshTraits<double, 3u, bool,
> bool, float, float> > >(itk::QuadEdgeMesh<double, 3u,
> itk::QuadEdgeMeshTraits<double, 3u, bool, bool, float, float> > const*,
> itk::QuadEdgeMesh<double, 3u, itk::QuadEdgeMeshTraits<double, 3u, bool,
> bool, float, float> >*) (in
> /home/davis/Developer/oxford/Stebbing_Method/SubTest/bin/dv-registration)
> ==20328==    by 0x491766:
> itk::QuadEdgeMeshToQuadEdgeMeshFilter<itk::QuadEdgeMesh<double, 3u,
> itk::QuadEdgeMeshTraits<double, 3u, bool, bool, float, float> >,
> itk::QuadEdgeMesh<double, 3u, itk::QuadEdgeMeshTraits<double, 3u, bool,
> bool, float, float> > >::CopyInputMeshToOutputMeshCells() (in
> /home/davis/Developer/oxford/Stebbing_Method/SubTest/bin/dv-registration)
> ==20328==    by 0x4916E2:
> itk::QuadEdgeMeshToQuadEdgeMeshFilter<itk::QuadEdgeMesh<double, 3u,
> itk::QuadEdgeMeshTraits<double, 3u, bool, bool, float, float> >,
> itk::QuadEdgeMesh<double, 3u, itk::QuadEdgeMeshTraits<double, 3u, bool,
> bool, float, float> > >::CopyInputMeshToOutputMeshGeometry() (in
> /home/davis/Developer/oxford/Stebbing_Method/SubTest/bin/dv-registration)
> ==20328==    by 0x491063:
> itk::IterativeTriangleCellSubdivisionQuadEdgeMeshFilter<itk::QuadEdgeMesh<double,
> 3u, itk::QuadEdgeMeshTraits<double, 3u, bool, bool, float, float> >,
> itk::LoopTriangleCellSubdivisionQuadEdgeMeshFilter<itk::QuadEdgeMesh<double,
> 3u, itk::QuadEdgeMeshTraits<double, 3u, bool, bool, float, float> >,
> itk::QuadEdgeMesh<double, 3u, itk::QuadEdgeMeshTraits<double, 3u, bool,
> bool, float, float> > > >::GenerateData() (in
> /home/davis/Developer/oxford/Stebbing_Method/SubTest/bin/dv-registration)
> ==20328==    by 0x4C578C:
> itk::ProcessObject::UpdateOutputData(itk::DataObject*) (in
> /home/davis/Developer/oxford/Stebbing_Method/SubTest/bin/dv-registration)
> ==20328==    by 0x4866C6: main (in
> /home/davis/Developer/oxford/Stebbing_Method/SubTest/bin/dv-registration)
> ==20328== 
> ==20328== LEAK SUMMARY:
> ==20328==    definitely lost: 15,360 bytes in 128 blocks
> ==20328==    indirectly lost: 4,096 bytes in 128 blocks
> ==20328==      possibly lost: 0 bytes in 0 blocks
> ==20328==    still reachable: 72,704 bytes in 1 blocks
> ==20328==         suppressed: 0 bytes in 0 blocks
> ==20328== Reachable blocks (those to which a pointer was found) are not
> shown.
> ==20328== To see them, rerun with: --leak-check=full --show-leak-kinds=all
> ==20328== 
> ==20328== For counts of detected and suppressed errors, rerun with: -v
> ==20328== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
> 
> 
> 
> 
> --
> View this message in context: http://itk-insight-users.2283740.n2.nabble.com/Possible-memory-leak-in-itk-IterativeTriangleCellSubdivisionQuadEdgeMeshFilter-tp7587434.html
> Sent from the ITK Insight 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
> 
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
> 
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-users
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20150604/9056ab42/attachment.html>


More information about the Insight-users mailing list