[Insight-users] ITK crash on Lion/Qt
Christian Lackas
lackas at invicro.com
Tue Oct 18 09:14:10 EDT 2011
* Sean McBride <sean at rogue-research.com> [111014 23:46]:
Hi Sean, Everybody,
> If you're dying in free() it's probably because of a memory error.
> You could try enabling MallocScribble and friends (see 'man malloc')
> and/or guard malloc (see 'man libgmalloc').
thanks for your suggestions. They gave me a few more ideas on how to
look at the problem.
> Does it work if you build in 10.6 and run that executable in 10.7? If
> so, it could be related to SDK and deployment target choice.
It does not matter where it is build.
However, thanks to MallocScribble, I now also get it to crash on Snow
Leopard (which makes development much easier for me, since I have not
upgraded yet).
> Is there nothing in the console? Failures in malloc/free often log something.
Nothing on the console.
When trying to understand the source of memory issue, I reduced the
example to a minimum, basically just a main() with a call like this:
PreviewFilterCurvatureType *p = PreviewFilterCurvatureType::New();
An complete project is available here (just set ITK_DIR env variable to
your ITK build directory):
http://www.invicro.com/vtk/itkcrash.tgz
If I do (see run.sh):
qmake && make clean && make && MallocScribble=1 ./crash.app/Contents/MacOS/crash
I get this crash:
#0 0x000000010000afb6 in itk::SmartPointer<itk::CurvatureFlowFunction<itk::Image<float, 2u> > >::Register (this=0x7fff5fbff040) at itkSmartPointer.h:142
#1 0x000000010000b004 in itk::SmartPointer<itk::CurvatureFlowFunction<itk::Image<float, 2u> > >::operator= (this=0x7fff5fbff040, r=0x101510a80) at itkSmartPointer.h:122
#2 0x000000010000b04b in itk::SmartPointer<itk::CurvatureFlowFunction<itk::Image<float, 2u> > >::operator= (this=0x7fff5fbff040, r=@0x7fff5fbff050) at itkSmartPointer.h:113
#3 0x000000010002114a in itk::CurvatureFlowImageFilter<itk::Image<float, 2u>, itk::Image<float, 2u> >::CurvatureFlowImageFilter (this=0x101510540) at itkCurvatureFlowImageFilter.txx:38
#4 0x0000000100021208 in itk::CurvatureFlowImageFilter<itk::Image<float, 2u>, itk::Image<float, 2u> >::New () at itkCurvatureFlowImageFilter.h:100 #5 0x000000010000aa20 in main (argc=1, argv=0x7fff5fbff158) at crash.cxx:15
Attached below is the output for the LightObject on which it tries to call
Register(), which seems to be uninitialized.
Interestingly, it only crashed when using qmake, not when building a
similar cmake build script. In the end I found that the problem was a
export MACOSX_DEPLOYMENT_TARGET = 10.4
in the qmake produced makefile, and setting this to 10.5 fixed it for
the small example.
Can anybody please tell me why it crashes with the 10.4 setting? I was
not able to figure that part out. I could not figure out how to use
malloc_history(1), yet.
Unfortunately, our main application still crashes in the
PreviewFilterCurvatureType::New(), even with the 10.5 setting, and since
I believe this is related (although not exactly the same) as the minimal
example above, I wonder if anybody can give me another pointer on how to
debug this.
Sean, could you please try the minimal example and give me a hint on how
I would debug the actual cause of the problem there?
Is this a compiler issue? An ITK issue? Or what else?
Thanks,
Christian
(gdb) p *m_Pointer
$2 = {
<itk::FiniteDifferenceFunction<itk::Image<float, 2u> >> = {
<itk::LightObject> = {
_vptr$LightObject = 0x5555555555555555,
m_ReferenceCount = 1431655765,
m_ReferenceCountLock = {
m_FastMutexLock = {
__sig = 6148914691236517205,
__opaque = 'U' <repeats 56 times>
}
}
},
members of itk::FiniteDifferenceFunction<itk::Image<float, 2u> >:
m_Radius = {
m_Size = {6148914691236517205, 6148914691236517205}
},
m_ScaleCoefficients = {1.1945305291614955e+103, 1.1945305291614955e+103}
},
members of itk::CurvatureFlowFunction<itk::Image<float, 2u> >:
m_TimeStep = 1.1945305291614955e+103
}
--
Dr. Christian Lackas, Managing Partner
inviCRO, LLC -- In Imaging Yours
P: +1 617 933 8733, F: +49 2203 9034722, E: lackas at invicro.com
http://www.invicro.com/ http://www.spect-ct.com/
More information about the Insight-users
mailing list