[Insight-users] itkSymmetricEigenAnalysisImageFilter Problem

Alberto Santamaría pang2 at yahoo.com
Fri Sep 8 16:00:27 EDT 2006


Dear All,

I am trying to compute the eigenvalues from a volume
of size: 512x512x120 with data type ushort. 
However once the Hessian has been computed, the
program chrases giving me the following error:

*** glibc detected *** free(): invalid next size
(fast): 0x00000000009a74c0 ***
Aborted

The compiler that I use is:
c++ (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3)

and is running in a cluster with 8 CPUS of the type:

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 5
model name      : AMD Opteron(tm) Processor 846
stepping        : 10
cpu MHz         : 2004.566
cache size      : 1024 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8
apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr
sse sse2 syscall nx mmxext lm 3dnowext 3dnow
bogomips        : 4014.85
TLB size        : 1088 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp

"itkSymmetricEigenAnalysisImageFilter.h"

I tracked down the problem with valgrind and this is
the initial part of the report. I have attached the
complete error log.

==22307== Warning: set address range perms: large
range 342884360 (undefined)
==22307== Thread 4:
==22307== Invalid write of size 8
==22307==    at 0x4AE4B1:
itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double,
3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3>
>::ComputeEigenValuesUsingQL(itk::FixedArray<float,
3>&, double*) 
const (itkSymmetricEigenAnalysis.txx:483)


Has any one faced a similar problem to this one
before?

Thanks in advance

-Alberto

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
-------------- next part --------------
==22307== Memcheck, a memory error detector.
==22307== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al.
==22307== Using LibVEX rev 1606, a library for dynamic binary translation.
==22307== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP.
==22307== Using valgrind-3.2.0, a dynamic binary instrumentation framework.
==22307== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al.
==22307== For more details, rerun with: -v
==22307== 
==22307== Warning: set address range perms: large range 114294784 (undefined)
Computing hessian set to  0.4...
==22307== Warning: set address range perms: large range 1371537416 (undefined)
==22307== Warning: set address range perms: large range 114294784 (undefined)

==22307== Warning: set address range perms: large range 114294784 (undefined)
==22307== Warning: set address range perms: large range 114294784 (undefined)
Computing hessian set to  0.4...Done
==22307== Warning: set address range perms: large range 342884360 (undefined)
==22307== Thread 4:
==22307== Invalid write of size 8
==22307==    at 0x4AE4B1: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValuesUsingQL(itk::FixedArray<float, 3>&, double*) 
const (itkSymmetricEigenAnalysis.txx:483)
==22307==    by 0x4AE7BB: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:49)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307==  Address 0xBCA6268 is 0 bytes after a block of size 24 alloc'd
==22307==    at 0x4905415: operator new[](unsigned long) (vg_replace_malloc.c:199)
==22307==    by 0x4AE73B: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:32)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4AE7BB: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:49)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307== 
==22307== Conditional jump or move depends on uninitialised value(s)
==22307==    at 0x4AE5FF: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValuesUsingQL(itk::FixedArray<float, 3>&, double*) 
const (itkFixedArray.h:181)
==22307==    by 0x4AE7BB: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:49)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307== 
==22307== Conditional jump or move depends on uninitialised value(s)
==22307==    at 0x4AE2DD: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValuesUsingQL(itk::FixedArray<float, 3>&, double*) 
const (itkSymmetricEigenAnalysis.txx:433)
==22307==    by 0x4AE7BB: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:49)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307== 
==22307== Conditional jump or move depends on uninitialised value(s)
==22307==    at 0x4AE375: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValuesUsingQL(itk::FixedArray<float, 3>&, double*) 
const (vnl_math.h:158)
==22307==    by 0x4AE7BB: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:49)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307== 
==22307== Invalid read of size 8
==22307==    at 0x4AE44D: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValuesUsingQL(itk::FixedArray<float, 3>&, double*) 
const (itkSymmetricEigenAnalysis.txx:473)
==22307==    by 0x4AE7BB: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:49)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307==  Address 0xBCA6268 is 0 bytes after a block of size 24 alloc'd
==22307==    at 0x4905415: operator new[](unsigned long) (vg_replace_malloc.c:199)
==22307==    by 0x4AE73B: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:32)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307== 
==22307== Conditional jump or move depends on uninitialised value(s)
==22307==    at 0x4A8E4D: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ReduceToTridiagonalMatrix(double*, itk::FixedArray<float, 3>&, 
double*, double*) const (itkSymmetricEigenAnalysis.txx:138)
==22307==    by 0x4AE7AA: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:47)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307== 
==22307== Conditional jump or move depends on uninitialised value(s)
==22307==    at 0x4A8F16: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ReduceToTridiagonalMatrix(double*, itk::FixedArray<float, 3>&, 
double*, double*) const (itkSymmetricEigenAnalysis.txx:158)
==22307==    by 0x4AE7AA: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:47)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307== 
==22307== Conditional jump or move depends on uninitialised value(s)
==22307==    at 0x4A8F1C: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ReduceToTridiagonalMatrix(double*, itk::FixedArray<float, 3>&, 
double*, double*) const (itkSymmetricEigenAnalysis.txx:158)
==22307==    by 0x4AE7AA: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:47)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307== 
==22307== Conditional jump or move depends on uninitialised value(s)
==22307==    at 0x4A8E4F: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ReduceToTridiagonalMatrix(double*, itk::FixedArray<float, 3>&, 
double*, double*) const (itkSymmetricEigenAnalysis.txx:138)
==22307==    by 0x4AE7AA: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:47)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307== 
==22307== Conditional jump or move depends on uninitialised value(s)
==22307==    at 0x4AE2DF: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValuesUsingQL(itk::FixedArray<float, 3>&, double*) 
const (itkSymmetricEigenAnalysis.txx:433)
==22307==    by 0x4AE7BB: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<flo
at, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> co
nst&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:49)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk
::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<d
ouble, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAn
alysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkS
martPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307== 
==22307== More than 10000000 total errors detected.  I'm not reporting any more.
==22307== Final error counts will be inaccurate.  Go fix your program!
==22307== Rerun with --error-limit=no to disable this cutoff.  Note
==22307== that errors may occur in your program without prior warning from
==22307== Valgrind, because errors are no longer being displayed.
==22307== 
==22307== 
==22307== ERROR SUMMARY: 10000000 errors from 11 contexts (suppressed: 10 from 5)
==22307== malloc/free: in use at exit: 2,172,495,740 bytes in 13,998 blocks.
==22307== malloc/free: 4,316,909 allocs, 4,302,911 frees, 2,436,566,755 bytes allocated.
==22307== For counts of detected errors, rerun with: -v
==22307== searching for pointers to 13,998 not-freed blocks.
==22307== checked 1,921,180,184 bytes.
==22307== 
==22307== Thread 1:
==22307== 
==22307== 37 bytes in 1 blocks are possibly lost in loss record 38 of 206
==22307==    at 0x4904F57: operator new(unsigned long) (vg_replace_malloc.c:167)
==22307==    by 0x313E69024D: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x313E6902EB: std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned long) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x313E6903D9: std::string::string(std::string const&) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x58A4C6: gdcm::Util::GetMACAddress() (gdcmUtil.cxx:897)
==22307==    by 0x58BCAB: _GLOBAL__I__ZN4gdcm4Util8GDCM_UIDE (gdcmUtil.cxx:108)
==22307==    by 0x689B05: (within /home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
==22307==    by 0x483992: (within /home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
==22307== 
==22307== 
==22307== 47 bytes in 1 blocks are possibly lost in loss record 40 of 206
==22307==    at 0x4904F57: operator new(unsigned long) (vg_replace_malloc.c:167)
==22307==    by 0x313E69024D: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x313E6902EB: std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned long) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x313E6906C9: std::string::assign(std::string const&) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x54C8A4: gdcm::DictSet::DictSet() (basic_string.h:427)
==22307==    by 0x56A3B8: gdcm::Global::Global() (gdcmGlobal.cxx:70)
==22307==    by 0x56B48E: _GLOBAL__I__ZN4gdcm12GDCM_UNKNOWNE (gdcmGlobal.cxx:56)
==22307==    by 0x689B05: (within /home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
==22307==    by 0x483992: (within /home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
==22307== 
==22307== 
==22307== 195 bytes in 3 blocks are possibly lost in loss record 119 of 206
==22307==    at 0x4904F57: operator new(unsigned long) (vg_replace_malloc.c:167)
==22307==    by 0x313E69024D: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x313E6902EB: std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned long) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x313E690792: std::string::reserve(unsigned long) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x313E69109B: std::string::append(std::string const&) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x486F33: std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (basic_string.h:2006)
==22307==    by 0x48553F: main (basic_string.h:2041)
==22307== 
==22307== 
==22307== 216 bytes in 3 blocks are definitely lost in loss record 120 of 206
==22307==    at 0x4905415: operator new[](unsigned long) (vg_replace_malloc.c:199)
==22307==    by 0x4AE74E: itk::SymmetricEigenAnalysis<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<float, 3>, itk::SymmetricSecondRankTensor<double, 3> >::ComputeEigenValues(itk::SymmetricSecondRankTensor<double, 3> const&, itk::FixedArray<float, 3>&) const (itkSymmetricEigenAnalysis.txx:35)
==22307==    by 0x4B3E69: itk::UnaryFunctorImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk::Image<itk::FixedArray<float, 3>, 3>, itk::Functor::SymmetricEigenAnalysisFunction<itk::SymmetricSecondRankTensor<double, 3>, itk::FixedArray<float, 3> > >::ThreadedGenerateData(itk::ImageRegion<3> const&, int) (itkSymmetricEigenAnalysisImageFilter.h:57)
==22307==    by 0x4A3645: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::ThreaderCallback(void*) (itkSmartPointer.h:71)
==22307==    by 0x4B87D6: itk::MultiThreader::SingleMethodProxy(void*) (itkMultiThreader.cxx:736)
==22307==    by 0x313D806109: start_thread (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x313CFC68B2: clone (in /lib64/tls/libc-2.3.4.so)
==22307== 
==22307==
==22307== 2,016 bytes in 7 blocks are possibly lost in loss record 154 of 206
==22307==    at 0x49060CD: calloc (vg_replace_malloc.c:279)
==22307==    by 0x313CD0D262: _dl_allocate_tls (in /lib64/ld-2.3.4.so)
==22307==    by 0x313D806706: pthread_create@@GLIBC_2.2.5 (in /lib64/tls/libpthread-2.3.4.so)
==22307==    by 0x4B92FF: itk::MultiThreader::DispatchSingleMethodThread(itk::MultiThreader::ThreadInfoStruct*) (itkMultiThreader.cxx:854)
==22307==    by 0x4BA281: itk::MultiThreader::SingleMethodExecute() (itkMultiThreader.cxx:278)
==22307==    by 0x4A3580: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::GenerateData() (itkProcessObject.h:278)
==22307==    by 0x4C47EC: itk::ProcessObject::UpdateOutputData(itk::DataObject*) (itkProcessObject.cxx:991)
==22307==    by 0x4857B7: main (itkSmartPointer.h:71)
==22307== 
==22307== 
==22307== 19,468 bytes in 419 blocks are possibly lost in loss record 198 of 206
==22307==    at 0x4904F57: operator new(unsigned long) (vg_replace_malloc.c:167)
==22307==    by 0x313E69024D: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x313E69094A: std::string::_M_mutate(unsigned long, unsigned long, unsigned long) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x313E690C31: std::string::assign(char const*, unsigned long) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x5913A6: gdcm::FillDefaultVRDict(std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) (char_traits.h:258)
==22307==    by 0x58EC68: gdcm::VR::VR() (gdcmVR.cxx:47)
==22307==    by 0x56A3D4: gdcm::Global::Global() (gdcmGlobal.cxx:71)
==22307==    by 0x56B48E: _GLOBAL__I__ZN4gdcm12GDCM_UNKNOWNE (gdcmGlobal.cxx:56)
==22307==    by 0x689B05: (within /home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
==22307==    by 0x483992: (within /home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
==22307== 
==22307== 
==22307== 353,305 bytes in 10,398 blocks are possibly lost in loss record 202 of 206
==22307==    at 0x4904F57: operator new(unsigned long) (vg_replace_malloc.c:167)
==22307==    by 0x313E69024D: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x313E69260A: (within /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x313E692722: std::string::string(char const*, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.3)
==22307==    by 0x58BC70: _GLOBAL__I__ZN4gdcm4Util8GDCM_UIDE (new_allocator.h:62)
==22307==    by 0x689B05: (within /home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
==22307==    by 0x483992: (within /home/bwalsh/NeuRecon_source/test/ComputeSingleEigenValue)
==22307== 
==22307== 
==22307== 342,884,360 bytes in 1 blocks are possibly lost in loss record 205 of 206
==22307==    at 0x4905415: operator new[](unsigned long) (vg_replace_malloc.c:199)
==22307==    by 0x4A91E8: itk::ImportImageContainer<unsigned long, itk::FixedArray<float, 3> >::AllocateElements(unsigned long) const (itkImportImageContainer.txx:176)
==22307==    by 0x4A94B8: itk::ImportImageContainer<unsigned long, itk::FixedArray<float, 3> >::Reserve(unsigned long) (itkImportImageContainer.txx:77)
==22307==    by 0x4A962E: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::AllocateOutputs() (itkSmartPointer.h:71)
==22307==    by 0x4A96CB: itk::InPlaceImageFilter<itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3>, itk::Image<itk::FixedArray<float, 3>, 3> >::AllocateOutputs() (itkInPlaceImageFilter.txx:106)
==22307==    by 0x4A3520: itk::ImageSource<itk::Image<itk::FixedArray<float, 3>, 3> >::GenerateData() (itkImageSource.txx:214)
==22307==    by 0x4C47EC: itk::ProcessObject::UpdateOutputData(itk::DataObject*) (itkProcessObject.cxx:991)
==22307==    by 0x4857B7: main (itkSmartPointer.h:71)
==22307== 
==22307== 
==22307== 1,371,537,416 bytes in 1 blocks are possibly lost in loss record 206 of 206
==22307==    at 0x4905415: operator new[](unsigned long) (vg_replace_malloc.c:199)
==22307==    by 0x4B1058: itk::ImportImageContainer<unsigned long, itk::SymmetricSecondRankTensor<double, 3> >::AllocateElements(unsigned long) const (itkImportImageContainer.txx:176)
==22307==    by 0x4B1348: itk::ImportImageContainer<unsigned long, itk::SymmetricSecondRankTensor<double, 3> >::Reserve(unsigned long) (itkImportImageContainer.txx:77)
==22307==    by 0x4B2D34: itk::HessianRecursiveGaussianImageFilter<itk::Image<float, 3>, itk::Image<itk::SymmetricSecondRankTensor<double, 3>, 3> >::GenerateData() (itkSmartPointer.h:71)
==22307==    by 0x4C47EC: itk::ProcessObject::UpdateOutputData(itk::DataObject*) (itkProcessObject.cxx:991)
==22307==    by 0x485755: main (itkSmartPointer.h:71)
==22307== 
==22307== LEAK SUMMARY:
==22307==    definitely lost: 216 bytes in 3 blocks.
==22307==      possibly lost: 1,714,796,844 bytes in 10,831 blocks.
==22307==    still reachable: 457,698,680 bytes in 3,164 blocks.
==22307==         suppressed: 0 bytes in 0 blocks.
==22307== Reachable blocks (those to which a pointer was found) are not shown.
==22307== To see them, rerun with: --show-reachable=yes
Killed
-------------- next part --------------

// Software Guide : BeginCodeSnippet
#include "itkConnectedThresholdImageFilter.h"
// Software Guide : EndCodeSnippet


#include "itkImage.h"
#include "itkCastImageFilter.h"
#include "itkCurvatureFlowImageFilter.h"

#include "itkGradientMagnitudeRecursiveGaussianImageFilter.h"
#include "itkHessianRecursiveGaussianImageFilter.h"
#include "itkImageAdaptor.h"
#include "PixelAccessors.h"
#include "itkSymmetricEigenAnalysisImageFilter.h"
#include "itkCastImageFilter.h"

#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"


int main( int argc, char *argv[])
{
  if( argc <4 )
    {
    std::cerr << "Missing Parameters " << std::endl;
    std::cerr << "Usage: " << argv[0];
    std::cerr << " inputImage sigma1 sigma2 sigma3" << std::endl;
	std::cerr << "with no mhd extension"<<std::endl;
    return 1;
    }

  typedef   unsigned short  InputPixelType;

  typedef   float           InternalPixelType;
  const     unsigned int    Dimension = 3;

  typedef itk::Image< InternalPixelType, Dimension >	InternalImageType;

  // We instantiate reader and writer types
  typedef   itk::ImageFileReader< InternalImageType >	ReaderType;
  typedef   itk::ImageFileWriter<  InternalImageType  > WriterType;

  
  typedef   itk::HessianRecursiveGaussianImageFilter< 
                            InternalImageType >           HessianFilterType;
  typedef   HessianFilterType::OutputImageType            HessianImageType;
  typedef   HessianImageType::PixelType                   HessianPixelType;

  typedef   itk::FixedArray< float, 3 >
                                                          EigenValueArrayType;
  typedef  itk::Image< EigenValueArrayType, HessianImageType::ImageDimension >
                                                          EigenValueImageType;
  typedef  itk::ImageAdaptor<  EigenValueImageType, 
								EigenValueAccessor< EigenValueArrayType > >	  ImageAdaptorType;
  typedef   itk::SymmetricEigenAnalysisImageFilter< 
								HessianImageType, EigenValueImageType >     EigenAnalysisFilterType;
  typedef itk::CastImageFilter< ImageAdaptorType, 
								InternalImageType >	  CastImageFilterType;

     const std::string mhd = ".mhd";
     const std::string sigmaString = ".Sigma";
 

     const std::string eigenValuesString1 = ".EigVal1";
     const std::string eigenValuesString2 = ".EigVal2";
     const std::string eigenValuesString3 = ".EigVal3";

	 const std::string inputVolumeFilename = argv[1];
	  std::string outputVolumeEigenValue_1_Filename = inputVolumeFilename + eigenValuesString1 ;
	  std::string outputVolumeEigenValue_2_Filename = inputVolumeFilename + eigenValuesString2 ;
	  std::string outputVolumeEigenValue_3_Filename = inputVolumeFilename + eigenValuesString3 ;

	 itk::FixedArray< float, 3 >  sigmasValuesArray;

 
	sigmasValuesArray[0] = atof( argv[2] );
	sigmasValuesArray[1] = atof( argv[3] );
	sigmasValuesArray[2] = atof( argv[4] );

	 WriterType::Pointer m_InternalWriter = WriterType::New();
	  

	ReaderType::Pointer m_Reader =  ReaderType::New();
	m_Reader->SetFileName( (inputVolumeFilename+mhd).c_str());
    m_Reader->Update();

	HessianFilterType::Pointer  m_Hessian = HessianFilterType::New();
	m_Hessian->SetInput( m_Reader->GetOutput() );

  // Compute eigen values.. order them in ascending order
  EigenAnalysisFilterType::Pointer m_EigenFilter = EigenAnalysisFilterType::New();
  m_EigenFilter->SetDimension( HessianPixelType::Dimension );

    // Create an adaptor and plug the output to the parametric space
  ImageAdaptorType::Pointer m_EigenAdaptor1 = ImageAdaptorType::New();
  EigenValueAccessor< EigenValueArrayType > accessor1;
  
  ImageAdaptorType::Pointer m_EigenAdaptor2 = ImageAdaptorType::New();
  EigenValueAccessor< EigenValueArrayType > accessor2;

  ImageAdaptorType::Pointer m_EigenAdaptor3 = ImageAdaptorType::New();
  EigenValueAccessor< EigenValueArrayType > accessor3;

  // m_EigenCastfilter1 will give the eigen values with the maximum eigen
  // value. m_EigenCastfilter3 will give the eigen values with the 
  // minimum eigen value.
   CastImageFilterType::Pointer m_EigenCastfilter1 = CastImageFilterType::New();

  CastImageFilterType::Pointer m_EigenCastfilter2 = CastImageFilterType::New();

  CastImageFilterType::Pointer m_EigenCastfilter3 = CastImageFilterType::New();




  for(int i=0; i< sigmasValuesArray.Size(); i++)
  {
	 outputVolumeEigenValue_1_Filename = outputVolumeEigenValue_1_Filename  + sigmaString + "." +  argv[i+2] + mhd;
     outputVolumeEigenValue_2_Filename = outputVolumeEigenValue_2_Filename  + sigmaString + "." +  argv[i+2] + mhd;
     outputVolumeEigenValue_3_Filename = outputVolumeEigenValue_3_Filename  + sigmaString + "." +  argv[i+2] + mhd;

	  std::cout<<"Computing hessian set to  "<<sigmasValuesArray[i]<<"..."<<std::endl;
		m_Hessian->SetSigma(sigmasValuesArray[i]);
		m_Hessian->Update();
	  std::cout<<"Computing hessian set to  "<<sigmasValuesArray[i]<<"...Done"<<std::endl;

	m_EigenFilter->SetInput( m_Hessian->GetOutput() );
	m_EigenFilter->OrderEigenValuesBy( EigenAnalysisFilterType::FunctorType::OrderByValue );
	m_EigenFilter->Update();

	accessor1.SetEigenIdx( 0 );
	m_EigenAdaptor1->SetImage( m_EigenFilter->GetOutput() );
	m_EigenAdaptor1->SetPixelAccessor( accessor1 );

	accessor2.SetEigenIdx( 1 );
	m_EigenAdaptor2->SetImage( m_EigenFilter->GetOutput() );
	m_EigenAdaptor2->SetPixelAccessor( accessor2 );

    accessor3.SetEigenIdx( 2 );
	m_EigenAdaptor3->SetImage( m_EigenFilter->GetOutput() );
	m_EigenAdaptor3->SetPixelAccessor( accessor3 );

    m_EigenCastfilter1->SetInput( m_EigenAdaptor3 ); 
    m_EigenCastfilter2->SetInput( m_EigenAdaptor2 ); 
    m_EigenCastfilter3->SetInput( m_EigenAdaptor1 ); 

	std::cout<<"Writing EigenValues for  "<<sigmasValuesArray[i]<<"..."<<std::endl;
	m_EigenCastfilter1->Update();
	m_InternalWriter->SetInput( m_EigenCastfilter1->GetOutput() );
	m_InternalWriter->SetFileName( outputVolumeEigenValue_1_Filename.c_str());
	m_InternalWriter->Update();

	m_EigenCastfilter2->Update();
	m_InternalWriter->SetInput( m_EigenCastfilter2->GetOutput() );
	m_InternalWriter->SetFileName( outputVolumeEigenValue_2_Filename.c_str() );
	m_InternalWriter->Update();

	m_EigenCastfilter3->Update();
	m_InternalWriter->SetInput( m_EigenCastfilter3->GetOutput() );
	m_InternalWriter->SetFileName( outputVolumeEigenValue_3_Filename.c_str());
	m_InternalWriter->Update();
	std::cout<<"Writing EigenValues for  "<<sigmasValuesArray[i]<<"...Done"<<std::endl;

	 outputVolumeEigenValue_1_Filename = inputVolumeFilename + eigenValuesString1  ;
     outputVolumeEigenValue_2_Filename = inputVolumeFilename + eigenValuesString2  ;
     outputVolumeEigenValue_3_Filename = inputVolumeFilename + eigenValuesString3  ;
  }
 
 
  std::cout<<"Computing Eigenvalues... Done." << std::endl;
  return 0;
}






More information about the Insight-users mailing list