[ITK-dev] ITK Static Initialization Issue with pthreads and atomic ints

Matt McCormick matt.mccormick at kitware.com
Fri Jul 31 15:20:08 EDT 2015


Hi Brad,

Sujin took a look, and he spotted a missing initialization of the
mutex lock for the 32 bit case.  I put the change in a patch here:

  http://review.source.kitware.com/#/c/20039/

Please test on the 32 bit system.

Thanks,
Matt

On Fri, Jul 31, 2015 at 10:55 AM, Bradley Lowekamp
<blowekamp at mail.nih.gov> wrote:
> Greeting,
>
> I am investigating the test failures:
>
> https://open.cdash.org/viewTest.php?onlyfailed&buildid=3931664
>
> Which began occurring with upgrade to ITK 4.8.
>
> Doing a git bisect I narrowed the problem down to the change to the atomic
> integer class done here:
>
> https://github.com/InsightSoftwareConsortium/ITK/commit/33bcbd822f761e407db851d218b1e3204e6194d9
>
> Then I was able to get a stack trace for a failing ITK test:
>
> (gdb)
> #0  0x00a77d2d in pthread_mutex_lock () from /lib/libpthread.so.0
> #1  0x086cede3 in itk::SimpleFastMutexLock::Lock (this=0x0) at
> /home/blowekamp/src/ITK/Modules/Core/Common/src/itkSimpleFastMutexLockPThreads.cxx:50
> #2  0x0869976c in
> itk::MutexLockHolder<itk::SimpleFastMutexLock>::MutexLockHolder
> (this=0xbfffe6fc, mutex=..., noblock=false)
>     at
> /home/blowekamp/src/ITK/Modules/Core/Common/include/itkMutexLockHolder.h:56
> #3  0x086d4308 in itk::Detail::AtomicOps<4u>::PreIncrement (ref=0x8982c78)
> at /home/blowekamp/src/ITK/Modules/Core/Common/src/itkAtomicInt.cxx:214
> #4  0x086c7e45 in itk::AtomicInt<unsigned long>::operator++ (this=0x8982c78)
> at /home/blowekamp/src/ITK/Modules/Core/Common/include/itkAtomicInt.h:93
> #5  0x086c7dd6 in itk::TimeStamp::Modified (this=0x8c81980) at
> /home/blowekamp/src/ITK/Modules/Core/Common/src/itkTimeStamp.cxx:63
> #6  0x086a11fb in itk::Object::Modified (this=0x8c81970) at
> /home/blowekamp/src/ITK/Modules/Core/Common/src/itkObject.cxx:389
> #7  0x086a1346 in itk::Object::Object (this=0x8c81970) at
> /home/blowekamp/src/ITK/Modules/Core/Common/src/itkObject.cxx:593
> #8  0x086c9be6 in itk::ObjectFactoryBase::ObjectFactoryBase (this=0x8c81970)
>     at
> /home/blowekamp/src/ITK/Modules/Core/Common/src/itkObjectFactoryBase.cxx:476
> #9  0x08379b12 in itk::MetaImageIOFactory::MetaImageIOFactory
> (this=0x8c81970)
>     at
> /home/blowekamp/src/ITK/Modules/IO/Meta/src/itkMetaImageIOFactory.cxx:24
> #10 0x08296048 in itk::MetaImageIOFactory::New () at
> /home/blowekamp/src/ITK/Modules/IO/Meta/include/itkMetaImageIOFactory.h:46
> #11 0x08224ae0 in RegisterRequiredFactories ()
>     at
> /home/blowekamp/src/ITK/Modules/Core/TestKernel/include/itkTestDriverIncludeRequiredIOFactories.h:41
> #12 0x08229720 in ProcessArgumentsAndRegisterRequiredFactories
> (ac=0xbfffeaf0, av=0xbfffeaf4)
>     at
> /home/blowekamp/src/ITK/Modules/Core/TestKernel/include/itkTestDriverIncludeRequiredIOFactories.h:58
> #13 0x082297f7 in main (ac=1, av=0xbfffeb74) at
> /scratch/blowekamp/build/Modules/Video/Core/test/ITKVideoCoreTestDriver.cxx:102
>
> So, this stack trace shows that there is a problem using pthreads during
> static initialization for the Object's reference counting.
>
> As the implementation is basically that of VTK, I and wondering if anyone
> else knows about this problem or work arounds.
>
> Thanks,
> Brad


More information about the Insight-developers mailing list