Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

itkStatisticsUniqueLabelMapFilterTest1 test fails under TSan (Thread Sanitizer) #3031

Closed
seanm opened this issue Jan 4, 2022 · 6 comments · Fixed by #4668
Closed

itkStatisticsUniqueLabelMapFilterTest1 test fails under TSan (Thread Sanitizer) #3031

seanm opened this issue Jan 4, 2022 · 6 comments · Fixed by #4668
Labels
type:Bug Inconsistencies or issues which will cause an incorrect result under some or all circumstances

Comments

@seanm
Copy link
Contributor

seanm commented Jan 4, 2022

Two different threads (T16 then T10) decide to write to the same pixel. Perhaps they are writing the same colour, but that's still undefined behaviour.

Perhaps the bug is that they should be writing to different pixels? Otherwise, it seems that some mutex or other synchronization would need to be added.

Full TSan output is:

Trying writer->Update()
libpng warning: sCAL: invalid unit
libpng warning: sCAL: invalid unit
-------- Start StatisticsUniqueLabelMapFilter "filter" StatisticsUniqueLabelMapFilter (0x7b4c00001880)
  RTTI typeinfo:   itk::StatisticsUniqueLabelMapFilter<itk::LabelMap<itk::StatisticsLabelObject<unsigned char, 2u> > >
  Reference Count: 3
  Modified Time: 309
  Debug: Off
  Object Name: 
  Observers: 
    StartEvent(SimpleMemberCommand)
    EndEvent(SimpleMemberCommand)
    ProgressEvent(SimpleMemberCommand)
    IterationEvent(SimpleMemberCommand)
    AbortEvent(SimpleMemberCommand)
  Inputs: 
    Primary: (0x7b5000001c00) *
  Indexed Inputs: 
    0: Primary (0x7b5000001c00)
  Required Input Names: Primary
  NumberOfRequiredInputs: 1
  Outputs: 
    Primary: (0x7b5000001e00)
  Indexed Outputs: 
    0: Primary (0x7b5000001e00)
  NumberOfRequiredOutputs: 1
  Number Of Work Units: 64
  ReleaseDataFlag: Off
  ReleaseDataBeforeUpdateFlag: Off
  AbortGenerateData: Off
  Progress: 0
  Multithreader: 
    RTTI typeinfo:   itk::PoolMultiThreader
    Reference Count: 1
    Modified Time: 295
    Debug: Off
    Object Name: 
    Observers: 
      none
    Number of Work Units: 64
    Number of Threads: 16
    Global Maximum Number Of Threads: 128
    Global Default Number Of Threads: 16
    Global Default Threader Type: itk::MultiThreaderBaseEnums::Threader::Pool
    SingleMethod: 0
    SingleData: 0x0
  DynamicMultiThreading: On
  CoordinateTolerance: 1e-06
  DirectionTolerance: 1e-06
  InPlace: On
  The input and output to this filter are the same type. The filter can be run in place.
  ReverseOrdering: 0
  Attribute: NumberOfPixels (100)
Progress  | 0 | 1
Filter took 0.0329771 seconds.
-------- End StatisticsUniqueLabelMapFilter "filter" 
StatisticsUniqueLabelMapFilter (0x7b4c00001880)
  RTTI typeinfo:   itk::StatisticsUniqueLabelMapFilter<itk::LabelMap<itk::StatisticsLabelObject<unsigned char, 2u> > >
  Reference Count: 3
  Modified Time: 309
  Debug: Off
  Object Name: 
  Observers: 
    StartEvent(SimpleMemberCommand)
    EndEvent(SimpleMemberCommand)
    ProgressEvent(SimpleMemberCommand)
    IterationEvent(SimpleMemberCommand)
    AbortEvent(SimpleMemberCommand)
  Inputs: 
    Primary: (0x7b5000001c00) *
  Indexed Inputs: 
    0: Primary (0x7b5000001c00)
  Required Input Names: Primary
  NumberOfRequiredInputs: 1
  Outputs: 
    Primary: (0x7b5000001e00)
  Indexed Outputs: 
    0: Primary (0x7b5000001e00)
  NumberOfRequiredOutputs: 1
  Number Of Work Units: 64
  ReleaseDataFlag: Off
  ReleaseDataBeforeUpdateFlag: Off
  AbortGenerateData: Off
  Progress: 1
  Multithreader: 
    RTTI typeinfo:   itk::PoolMultiThreader
    Reference Count: 1
    Modified Time: 295
    Debug: Off
    Object Name: 
    Observers: 
      none
    Number of Work Units: 64
    Number of Threads: 16
    Global Maximum Number Of Threads: 128
    Global Default Number Of Threads: 16
    Global Default Threader Type: itk::MultiThreaderBaseEnums::Threader::Pool
    SingleMethod: 0
    SingleData: 0x0
  DynamicMultiThreading: On
  CoordinateTolerance: 1e-06
  DirectionTolerance: 1e-06
  InPlace: On
  The input and output to this filter are the same type. The filter can be run in place.
  ReverseOrdering: 0
  Attribute: NumberOfPixels (100)
==================
WARNING: ThreadSanitizer: data race (pid=41828)
  Write of size 1 at 0x7bc00005cc57 by thread T10:
    #0 itk::Image<unsigned char, 2u>::SetPixel(itk::Index<2u> const&, unsigned char const&) itkImage.h:211 (ITKLabelMapTestDriver:x86_64+0x100055d59)
    #1 itk::LabelMapToLabelImageFilter<itk::LabelMap<itk::StatisticsLabelObject<unsigned char, 2u> >, itk::Image<unsigned char, 2u> >::ThreadedProcessLabelObject(itk::StatisticsLabelObject<unsigned char, 2u>*) itkLabelMapToLabelImageFilter.hxx:57 (ITKLabelMapTestDriver:x86_64+0x100587160)
    #2 itk::LabelMapFilter<itk::LabelMap<itk::StatisticsLabelObject<unsigned char, 2u> >, itk::Image<unsigned char, 2u> >::DynamicThreadedGenerateData(itk::ImageRegion<2u> const&) itkLabelMapFilter.hxx:113 (ITKLabelMapTestDriver:x86_64+0x1005869c8)
    #3 itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)::operator()(itk::ImageRegion<2u> const&) const itkImageSource.hxx:233 (ITKLabelMapTestDriver:x86_64+0x100013eb7)
    #4 decltype(std::__1::forward<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&>(fp)(std::__1::forward<itk::ImageRegion<2u> const&>(fp0))) std::__1::__invoke<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&, itk::ImageRegion<2u> const&>(itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&&&, itk::ImageRegion<2u> const&&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x100013e33)
    #5 void std::__1::__invoke_void_return_wrapper<void>::__call<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&, itk::ImageRegion<2u> const&>(itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&&&, itk::ImageRegion<2u> const&&&) __functional_base:349 (ITKLabelMapTestDriver:x86_64+0x100013db3)
    #6 std::__1::__function::__alloc_func<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&), std::__1::allocator<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)>, void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) functional:1527 (ITKLabelMapTestDriver:x86_64+0x100013d63)
    #7 std::__1::__function::__func<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&), std::__1::allocator<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)>, void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) functional:1651 (ITKLabelMapTestDriver:x86_64+0x1000128fc)
    #8 std::__1::__function::__value_func<void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) const functional:1799 (ITKLabelMapTestDriver:x86_64+0x1000120b6)
    #9 std::__1::function<void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) const functional:2347 (ITKLabelMapTestDriver:x86_64+0x100011fe8)
    #10 void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)::operator()(long const*, unsigned long const*) const itkMultiThreaderBase.h:350 (ITKLabelMapTestDriver:x86_64+0x100011ed7)
    #11 decltype(std::__1::forward<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&>(fp)(std::__1::forward<long const*>(fp0), std::__1::forward<unsigned long const*>(fp0))) std::__1::__invoke<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&, long const*, unsigned long const*>(void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&&&, long const*&&, unsigned long const*&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x100011dfe)
    #12 void std::__1::__invoke_void_return_wrapper<void>::__call<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&, long const*, unsigned long const*>(void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&&&, long const*&&, unsigned long const*&&) __functional_base:349 (ITKLabelMapTestDriver:x86_64+0x100011d48)
    #13 std::__1::__function::__alloc_func<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*), std::__1::allocator<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)>, void (long const*, unsigned long const*)>::operator()(long const*&&, unsigned long const*&&) functional:1527 (ITKLabelMapTestDriver:x86_64+0x100011c78)
    #14 std::__1::__function::__func<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*), std::__1::allocator<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)>, void (long const*, unsigned long const*)>::operator()(long const*&&, unsigned long const*&&) functional:1651 (ITKLabelMapTestDriver:x86_64+0x100010640)
    #15 std::__1::__function::__value_func<void (long const*, unsigned long const*)>::operator()(long const*&&, unsigned long const*&&) const functional:1799 (ITKLabelMapTestDriver:x86_64+0x10135193a)
    #16 std::__1::function<void (long const*, unsigned long const*)>::operator()(long const*, unsigned long const*) const functional:2347 (ITKLabelMapTestDriver:x86_64+0x101349ec3)
    #17 itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5::operator()() const itkPoolMultiThreader.cxx:271 (ITKLabelMapTestDriver:x86_64+0x1013de1aa)
    #18 decltype(std::__1::forward<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&>(fp)()) std::__1::__invoke<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013de111)
    #19 std::__1::__bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<>, __is_valid_bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<> >::value>::type std::__1::__apply_functor<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<> >(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&, std::__1::tuple<>&, std::__1::__tuple_indices<>, std::__1::tuple<>&&) functional:2644 (ITKLabelMapTestDriver:x86_64+0x1013de0c9)
    #20 std::__1::__bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<>, __is_valid_bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<> >::value>::type std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>::operator()<>() functional:2677 (ITKLabelMapTestDriver:x86_64+0x1013de089)
    #21 decltype(std::__1::forward<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>&>(fp)()) std::__1::__invoke<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>&>(std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>&&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013de021)
    #22 std::__1::__packaged_task_func<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>, std::__1::allocator<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5> >, void* ()>::operator()() future:1821 (ITKLabelMapTestDriver:x86_64+0x1013dd8a5)
    #23 std::__1::__packaged_task_function<void* ()>::operator()() const future:1998 (ITKLabelMapTestDriver:x86_64+0x1013d6cbf)
    #24 std::__1::packaged_task<void* ()>::operator()() future:2089 (ITKLabelMapTestDriver:x86_64+0x1013d6b6e)
    #25 std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()::operator()() const itkThreadPool.h:97 (ITKLabelMapTestDriver:x86_64+0x1013e0091)
    #26 decltype(std::__1::forward<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(fp)()) std::__1::__invoke<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()&>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013e0021)
    #27 void std::__1::__invoke_void_return_wrapper<void>::__call<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()&>(std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()&&&) __functional_base:349 (ITKLabelMapTestDriver:x86_64+0x1013dffb1)
    #28 std::__1::__function::__alloc_func<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'(), std::__1::allocator<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()>, void ()>::operator()() functional:1527 (ITKLabelMapTestDriver:x86_64+0x1013dff71)
    #29 std::__1::__function::__func<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'(), std::__1::allocator<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()>, void ()>::operator()() functional:1651 (ITKLabelMapTestDriver:x86_64+0x1013de9ed)
    #30 std::__1::__function::__value_func<void ()>::operator()() const functional:1799 (ITKLabelMapTestDriver:x86_64+0x1013a6c84)
    #31 std::__1::function<void ()>::operator()() const functional:2347 (ITKLabelMapTestDriver:x86_64+0x1013a27e9)
    #32 itk::ThreadPool::ThreadExecute() itkThreadPool.cxx:211 (ITKLabelMapTestDriver:x86_64+0x1013e0e5a)
    #33 decltype(std::__1::forward<void (*)()>(fp)()) std::__1::__invoke<void (*)()>(void (*&&)()) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013e7f76)
    #34 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)()>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)()>&, std::__1::__tuple_indices<>) thread:342 (ITKLabelMapTestDriver:x86_64+0x1013e7e59)
    #35 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)()> >(void*) thread:352 (ITKLabelMapTestDriver:x86_64+0x1013e760a)

  Previous write of size 1 at 0x7bc00005cc57 by thread T16:
    #0 itk::Image<unsigned char, 2u>::SetPixel(itk::Index<2u> const&, unsigned char const&) itkImage.h:211 (ITKLabelMapTestDriver:x86_64+0x100055d59)
    #1 itk::LabelMapToLabelImageFilter<itk::LabelMap<itk::StatisticsLabelObject<unsigned char, 2u> >, itk::Image<unsigned char, 2u> >::ThreadedProcessLabelObject(itk::StatisticsLabelObject<unsigned char, 2u>*) itkLabelMapToLabelImageFilter.hxx:57 (ITKLabelMapTestDriver:x86_64+0x100587160)
    #2 itk::LabelMapFilter<itk::LabelMap<itk::StatisticsLabelObject<unsigned char, 2u> >, itk::Image<unsigned char, 2u> >::DynamicThreadedGenerateData(itk::ImageRegion<2u> const&) itkLabelMapFilter.hxx:113 (ITKLabelMapTestDriver:x86_64+0x1005869c8)
    #3 itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)::operator()(itk::ImageRegion<2u> const&) const itkImageSource.hxx:233 (ITKLabelMapTestDriver:x86_64+0x100013eb7)
    #4 decltype(std::__1::forward<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&>(fp)(std::__1::forward<itk::ImageRegion<2u> const&>(fp0))) std::__1::__invoke<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&, itk::ImageRegion<2u> const&>(itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&&&, itk::ImageRegion<2u> const&&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x100013e33)
    #5 void std::__1::__invoke_void_return_wrapper<void>::__call<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&, itk::ImageRegion<2u> const&>(itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&&&, itk::ImageRegion<2u> const&&&) __functional_base:349 (ITKLabelMapTestDriver:x86_64+0x100013db3)
    #6 std::__1::__function::__alloc_func<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&), std::__1::allocator<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)>, void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) functional:1527 (ITKLabelMapTestDriver:x86_64+0x100013d63)
    #7 std::__1::__function::__func<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&), std::__1::allocator<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)>, void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) functional:1651 (ITKLabelMapTestDriver:x86_64+0x1000128fc)
    #8 std::__1::__function::__value_func<void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) const functional:1799 (ITKLabelMapTestDriver:x86_64+0x1000120b6)
    #9 std::__1::function<void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) const functional:2347 (ITKLabelMapTestDriver:x86_64+0x100011fe8)
    #10 void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)::operator()(long const*, unsigned long const*) const itkMultiThreaderBase.h:350 (ITKLabelMapTestDriver:x86_64+0x100011ed7)
    #11 decltype(std::__1::forward<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&>(fp)(std::__1::forward<long const*>(fp0), std::__1::forward<unsigned long const*>(fp0))) std::__1::__invoke<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&, long const*, unsigned long const*>(void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&&&, long const*&&, unsigned long const*&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x100011dfe)
    #12 void std::__1::__invoke_void_return_wrapper<void>::__call<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&, long const*, unsigned long const*>(void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&&&, long const*&&, unsigned long const*&&) __functional_base:349 (ITKLabelMapTestDriver:x86_64+0x100011d48)
    #13 std::__1::__function::__alloc_func<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*), std::__1::allocator<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)>, void (long const*, unsigned long const*)>::operator()(long const*&&, unsigned long const*&&) functional:1527 (ITKLabelMapTestDriver:x86_64+0x100011c78)
    #14 std::__1::__function::__func<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*), std::__1::allocator<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)>, void (long const*, unsigned long const*)>::operator()(long const*&&, unsigned long const*&&) functional:1651 (ITKLabelMapTestDriver:x86_64+0x100010640)
    #15 std::__1::__function::__value_func<void (long const*, unsigned long const*)>::operator()(long const*&&, unsigned long const*&&) const functional:1799 (ITKLabelMapTestDriver:x86_64+0x10135193a)
    #16 std::__1::function<void (long const*, unsigned long const*)>::operator()(long const*, unsigned long const*) const functional:2347 (ITKLabelMapTestDriver:x86_64+0x101349ec3)
    #17 itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5::operator()() const itkPoolMultiThreader.cxx:271 (ITKLabelMapTestDriver:x86_64+0x1013de1aa)
    #18 decltype(std::__1::forward<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&>(fp)()) std::__1::__invoke<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013de111)
    #19 std::__1::__bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<>, __is_valid_bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<> >::value>::type std::__1::__apply_functor<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<> >(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&, std::__1::tuple<>&, std::__1::__tuple_indices<>, std::__1::tuple<>&&) functional:2644 (ITKLabelMapTestDriver:x86_64+0x1013de0c9)
    #20 std::__1::__bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<>, __is_valid_bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<> >::value>::type std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>::operator()<>() functional:2677 (ITKLabelMapTestDriver:x86_64+0x1013de089)
    #21 decltype(std::__1::forward<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>&>(fp)()) std::__1::__invoke<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>&>(std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>&&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013de021)
    #22 std::__1::__packaged_task_func<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>, std::__1::allocator<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5> >, void* ()>::operator()() future:1821 (ITKLabelMapTestDriver:x86_64+0x1013dd8a5)
    #23 std::__1::__packaged_task_function<void* ()>::operator()() const future:1998 (ITKLabelMapTestDriver:x86_64+0x1013d6cbf)
    #24 std::__1::packaged_task<void* ()>::operator()() future:2089 (ITKLabelMapTestDriver:x86_64+0x1013d6b6e)
    #25 std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()::operator()() const itkThreadPool.h:97 (ITKLabelMapTestDriver:x86_64+0x1013e0091)
    #26 decltype(std::__1::forward<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(fp)()) std::__1::__invoke<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()&>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013e0021)
    #27 void std::__1::__invoke_void_return_wrapper<void>::__call<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()&>(std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()&&&) __functional_base:349 (ITKLabelMapTestDriver:x86_64+0x1013dffb1)
    #28 std::__1::__function::__alloc_func<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'(), std::__1::allocator<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()>, void ()>::operator()() functional:1527 (ITKLabelMapTestDriver:x86_64+0x1013dff71)
    #29 std::__1::__function::__func<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'(), std::__1::allocator<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()>, void ()>::operator()() functional:1651 (ITKLabelMapTestDriver:x86_64+0x1013de9ed)
    #30 std::__1::__function::__value_func<void ()>::operator()() const functional:1799 (ITKLabelMapTestDriver:x86_64+0x1013a6c84)
    #31 std::__1::function<void ()>::operator()() const functional:2347 (ITKLabelMapTestDriver:x86_64+0x1013a27e9)
    #32 itk::ThreadPool::ThreadExecute() itkThreadPool.cxx:211 (ITKLabelMapTestDriver:x86_64+0x1013e0e5a)
    #33 decltype(std::__1::forward<void (*)()>(fp)()) std::__1::__invoke<void (*)()>(void (*&&)()) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013e7f76)
    #34 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)()>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)()>&, std::__1::__tuple_indices<>) thread:342 (ITKLabelMapTestDriver:x86_64+0x1013e7e59)
    #35 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)()> >(void*) thread:352 (ITKLabelMapTestDriver:x86_64+0x1013e760a)

  Location is heap block of size 65536 at 0x7bc000050000 allocated by main thread:
    #0 operator new[](unsigned long) <null>:5891680 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x6ed8b)
    #1 itk::ImportImageContainer<unsigned long, unsigned char>::AllocateElements(unsigned long, bool) const itkImportImageContainer.hxx:180 (ITKLabelMapTestDriver:x86_64+0x10001b2da)
    #2 itk::ImportImageContainer<unsigned long, unsigned char>::Reserve(unsigned long, bool) itkImportImageContainer.hxx:85 (ITKLabelMapTestDriver:x86_64+0x10001c3e5)
    #3 itk::Image<unsigned char, 2u>::Allocate(bool) itkImage.hxx:53 (ITKLabelMapTestDriver:x86_64+0x1000186f6)
    #4 itk::ImageSource<itk::Image<unsigned char, 2u> >::AllocateOutputs() itkImageSource.hxx:184 (ITKLabelMapTestDriver:x86_64+0x10000d752)
    #5 itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData() itkImageSource.hxx:215 (ITKLabelMapTestDriver:x86_64+0x10000ea7a)
    #6 itk::ProcessObject::UpdateOutputData(itk::DataObject*) itkProcessObject.cxx:1708 (ITKLabelMapTestDriver:x86_64+0x1013344a8)
    #7 itk::DataObject::UpdateOutputData() itkDataObject.cxx:376 (ITKLabelMapTestDriver:x86_64+0x101370a4d)
    #8 itk::ImageBase<2u>::UpdateOutputData() itkImageBase.hxx:263 (ITKLabelMapTestDriver:x86_64+0x10001747a)
    #9 itk::ImageFileWriter<itk::Image<unsigned char, 2u> >::Write() itkImageFileWriter.hxx:284 (ITKLabelMapTestDriver:x86_64+0x1000580ad)
    #10 itk::ImageFileWriter<itk::Image<unsigned char, 2u> >::Update() itkImageFileWriter.h:178 (ITKLabelMapTestDriver:x86_64+0x1000568f5)
    #11 itkStatisticsUniqueLabelMapFilterTest1(int, char**) itkStatisticsUniqueLabelMapFilterTest1.cxx:136 (ITKLabelMapTestDriver:x86_64+0x100af9088)
    #12 main ITKLabelMapTestDriver.cxx:513 (ITKLabelMapTestDriver:x86_64+0x100002473)

  Thread T10 (tid=106450770, running) created by main thread at:
    #0 pthread_create <null>:5891728 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x2933d)
    #1 std::__1::__libcpp_thread_create(_opaque_pthread_t**, void* (*)(void*), void*) __threading_support:328 (ITKLabelMapTestDriver:x86_64+0x1013e7589)
    #2 std::__1::thread::thread<void (*)(), void>(void (*&&)()) thread:368 (ITKLabelMapTestDriver:x86_64+0x1013e73cc)
    #3 std::__1::thread::thread<void (*)(), void>(void (*&&)()) thread:360 (ITKLabelMapTestDriver:x86_64+0x1013e7300)
    #4 void std::__1::allocator<std::__1::thread>::construct<std::__1::thread, void (*)()>(std::__1::thread*, void (*&&)()) memory:1826 (ITKLabelMapTestDriver:x86_64+0x1013e72b8)
    #5 void std::__1::allocator_traits<std::__1::allocator<std::__1::thread> >::__construct<std::__1::thread, void (*)()>(std::__1::integral_constant<bool, true>, std::__1::allocator<std::__1::thread>&, std::__1::thread*, void (*&&)()) memory:1718 (ITKLabelMapTestDriver:x86_64+0x1013e7268)
    #6 void std::__1::allocator_traits<std::__1::allocator<std::__1::thread> >::construct<std::__1::thread, void (*)()>(std::__1::allocator<std::__1::thread>&, std::__1::thread*, void (*&&)()) memory:1561 (ITKLabelMapTestDriver:x86_64+0x1013e7118)
    #7 void std::__1::vector<std::__1::thread, std::__1::allocator<std::__1::thread> >::emplace_back<void (*)()>(void (*&&)()) vector:1688 (ITKLabelMapTestDriver:x86_64+0x1013e0d12)
    #8 itk::ThreadPool::ThreadPool() itkThreadPool.cxx:118 (ITKLabelMapTestDriver:x86_64+0x1013e0ac6)
    #9 itk::ThreadPool::ThreadPool() itkThreadPool.cxx:108 (ITKLabelMapTestDriver:x86_64+0x1013e0f49)
    #10 itk::ThreadPool::GetInstance()::$_2::operator()() const itkThreadPool.cxx:83 (ITKLabelMapTestDriver:x86_64+0x1013e620b)
    #11 decltype(std::__1::forward<itk::ThreadPool::GetInstance()::$_2>(fp)()) std::__1::__invoke<itk::ThreadPool::GetInstance()::$_2>(itk::ThreadPool::GetInstance()::$_2&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013e6103)
    #12 void std::__1::__call_once_param<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >::__execute<>(std::__1::__tuple_indices<>) mutex:622 (ITKLabelMapTestDriver:x86_64+0x1013e60d1)
    #13 std::__1::__call_once_param<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >::operator()() mutex:614 (ITKLabelMapTestDriver:x86_64+0x1013e6079)
    #14 void std::__1::__call_once_proxy<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >(void*) mutex:650 (ITKLabelMapTestDriver:x86_64+0x1013e5f19)
    #15 __tsan::(anonymous namespace)::call_once_callback_wrapper(void*) <null>:5891728 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x69a0e)
    #16 itk::ThreadPool::GetInstance() itkThreadPool.cxx:79 (ITKLabelMapTestDriver:x86_64+0x1013e0681)
    #17 itk::PoolMultiThreader::PoolMultiThreader() itkPoolMultiThreader.cxx:81 (ITKLabelMapTestDriver:x86_64+0x1013ca496)
    #18 itk::PoolMultiThreader::PoolMultiThreader() itkPoolMultiThreader.cxx:82 (ITKLabelMapTestDriver:x86_64+0x1013ca7b9)
    #19 itk::PoolMultiThreader::New() itkPoolMultiThreader.h:57 (ITKLabelMapTestDriver:x86_64+0x1013493c5)
    #20 itk::MultiThreaderBase::New() itkMultiThreaderBase.cxx:419 (ITKLabelMapTestDriver:x86_64+0x101348ef0)
    #21 itk::ProcessObject::ProcessObject() itkProcessObject.cxx:72 (ITKLabelMapTestDriver:x86_64+0x10132bf1a)
    #22 itk::ImageSource<itk::Image<unsigned char, 2u> >::ImageSource() itkImageSource.h:230 (ITKLabelMapTestDriver:x86_64+0x10000a020)
    #23 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::ImageFileReader() itkImageFileReader.h:122 (ITKLabelMapTestDriver:x86_64+0x100009ef4)
    #24 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::ImageFileReader() itkImageFileReader.hxx:36 (ITKLabelMapTestDriver:x86_64+0x100009d19)
    #25 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::New() itkImageFileReader.h:86 (ITKLabelMapTestDriver:x86_64+0x100008475)
    #26 itkStatisticsUniqueLabelMapFilterTest1(int, char**) itkStatisticsUniqueLabelMapFilterTest1.cxx:62 (ITKLabelMapTestDriver:x86_64+0x100af8800)
    #27 main ITKLabelMapTestDriver.cxx:513 (ITKLabelMapTestDriver:x86_64+0x100002473)

  Thread T16 (tid=106450776, running) created by main thread at:
    #0 pthread_create <null>:5891728 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x2933d)
    #1 std::__1::__libcpp_thread_create(_opaque_pthread_t**, void* (*)(void*), void*) __threading_support:328 (ITKLabelMapTestDriver:x86_64+0x1013e7589)
    #2 std::__1::thread::thread<void (*)(), void>(void (*&&)()) thread:368 (ITKLabelMapTestDriver:x86_64+0x1013e73cc)
    #3 std::__1::thread::thread<void (*)(), void>(void (*&&)()) thread:360 (ITKLabelMapTestDriver:x86_64+0x1013e7300)
    #4 void std::__1::allocator<std::__1::thread>::construct<std::__1::thread, void (*)()>(std::__1::thread*, void (*&&)()) memory:1826 (ITKLabelMapTestDriver:x86_64+0x1013e72b8)
    #5 void std::__1::allocator_traits<std::__1::allocator<std::__1::thread> >::__construct<std::__1::thread, void (*)()>(std::__1::integral_constant<bool, true>, std::__1::allocator<std::__1::thread>&, std::__1::thread*, void (*&&)()) memory:1718 (ITKLabelMapTestDriver:x86_64+0x1013e7268)
    #6 void std::__1::allocator_traits<std::__1::allocator<std::__1::thread> >::construct<std::__1::thread, void (*)()>(std::__1::allocator<std::__1::thread>&, std::__1::thread*, void (*&&)()) memory:1561 (ITKLabelMapTestDriver:x86_64+0x1013e7118)
    #7 void std::__1::vector<std::__1::thread, std::__1::allocator<std::__1::thread> >::emplace_back<void (*)()>(void (*&&)()) vector:1688 (ITKLabelMapTestDriver:x86_64+0x1013e0d12)
    #8 itk::ThreadPool::ThreadPool() itkThreadPool.cxx:118 (ITKLabelMapTestDriver:x86_64+0x1013e0ac6)
    #9 itk::ThreadPool::ThreadPool() itkThreadPool.cxx:108 (ITKLabelMapTestDriver:x86_64+0x1013e0f49)
    #10 itk::ThreadPool::GetInstance()::$_2::operator()() const itkThreadPool.cxx:83 (ITKLabelMapTestDriver:x86_64+0x1013e620b)
    #11 decltype(std::__1::forward<itk::ThreadPool::GetInstance()::$_2>(fp)()) std::__1::__invoke<itk::ThreadPool::GetInstance()::$_2>(itk::ThreadPool::GetInstance()::$_2&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013e6103)
    #12 void std::__1::__call_once_param<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >::__execute<>(std::__1::__tuple_indices<>) mutex:622 (ITKLabelMapTestDriver:x86_64+0x1013e60d1)
    #13 std::__1::__call_once_param<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >::operator()() mutex:614 (ITKLabelMapTestDriver:x86_64+0x1013e6079)
    #14 void std::__1::__call_once_proxy<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >(void*) mutex:650 (ITKLabelMapTestDriver:x86_64+0x1013e5f19)
    #15 __tsan::(anonymous namespace)::call_once_callback_wrapper(void*) <null>:5891728 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x69a0e)
    #16 itk::ThreadPool::GetInstance() itkThreadPool.cxx:79 (ITKLabelMapTestDriver:x86_64+0x1013e0681)
    #17 itk::PoolMultiThreader::PoolMultiThreader() itkPoolMultiThreader.cxx:81 (ITKLabelMapTestDriver:x86_64+0x1013ca496)
    #18 itk::PoolMultiThreader::PoolMultiThreader() itkPoolMultiThreader.cxx:82 (ITKLabelMapTestDriver:x86_64+0x1013ca7b9)
    #19 itk::PoolMultiThreader::New() itkPoolMultiThreader.h:57 (ITKLabelMapTestDriver:x86_64+0x1013493c5)
    #20 itk::MultiThreaderBase::New() itkMultiThreaderBase.cxx:419 (ITKLabelMapTestDriver:x86_64+0x101348ef0)
    #21 itk::ProcessObject::ProcessObject() itkProcessObject.cxx:72 (ITKLabelMapTestDriver:x86_64+0x10132bf1a)
    #22 itk::ImageSource<itk::Image<unsigned char, 2u> >::ImageSource() itkImageSource.h:230 (ITKLabelMapTestDriver:x86_64+0x10000a020)
    #23 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::ImageFileReader() itkImageFileReader.h:122 (ITKLabelMapTestDriver:x86_64+0x100009ef4)
    #24 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::ImageFileReader() itkImageFileReader.hxx:36 (ITKLabelMapTestDriver:x86_64+0x100009d19)
    #25 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::New() itkImageFileReader.h:86 (ITKLabelMapTestDriver:x86_64+0x100008475)
    #26 itkStatisticsUniqueLabelMapFilterTest1(int, char**) itkStatisticsUniqueLabelMapFilterTest1.cxx:62 (ITKLabelMapTestDriver:x86_64+0x100af8800)
    #27 main ITKLabelMapTestDriver.cxx:513 (ITKLabelMapTestDriver:x86_64+0x100002473)

SUMMARY: ThreadSanitizer: data race itkImage.h:211 in itk::Image<unsigned char, 2u>::SetPixel(itk::Index<2u> const&, unsigned char const&)
==================
==================
WARNING: ThreadSanitizer: data race (pid=41828)
  Write of size 1 at 0x7bc00005cd56 by thread T10:
    #0 itk::Image<unsigned char, 2u>::SetPixel(itk::Index<2u> const&, unsigned char const&) itkImage.h:211 (ITKLabelMapTestDriver:x86_64+0x100055d59)
    #1 itk::LabelMapToLabelImageFilter<itk::LabelMap<itk::StatisticsLabelObject<unsigned char, 2u> >, itk::Image<unsigned char, 2u> >::ThreadedProcessLabelObject(itk::StatisticsLabelObject<unsigned char, 2u>*) itkLabelMapToLabelImageFilter.hxx:57 (ITKLabelMapTestDriver:x86_64+0x100587160)
    #2 itk::LabelMapFilter<itk::LabelMap<itk::StatisticsLabelObject<unsigned char, 2u> >, itk::Image<unsigned char, 2u> >::DynamicThreadedGenerateData(itk::ImageRegion<2u> const&) itkLabelMapFilter.hxx:113 (ITKLabelMapTestDriver:x86_64+0x1005869c8)
    #3 itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)::operator()(itk::ImageRegion<2u> const&) const itkImageSource.hxx:233 (ITKLabelMapTestDriver:x86_64+0x100013eb7)
    #4 decltype(std::__1::forward<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&>(fp)(std::__1::forward<itk::ImageRegion<2u> const&>(fp0))) std::__1::__invoke<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&, itk::ImageRegion<2u> const&>(itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&&&, itk::ImageRegion<2u> const&&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x100013e33)
    #5 void std::__1::__invoke_void_return_wrapper<void>::__call<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&, itk::ImageRegion<2u> const&>(itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)&&&, itk::ImageRegion<2u> const&&&) __functional_base:349 (ITKLabelMapTestDriver:x86_64+0x100013db3)
    #6 std::__1::__function::__alloc_func<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&), std::__1::allocator<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)>, void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) functional:1527 (ITKLabelMapTestDriver:x86_64+0x100013d63)
    #7 std::__1::__function::__func<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&), std::__1::allocator<itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData()::'lambda'(itk::ImageRegion<2u> const&)>, void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) functional:1651 (ITKLabelMapTestDriver:x86_64+0x1000128fc)
    #8 std::__1::__function::__value_func<void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) const functional:1799 (ITKLabelMapTestDriver:x86_64+0x1000120b6)
    #9 std::__1::function<void (itk::ImageRegion<2u> const&)>::operator()(itk::ImageRegion<2u> const&) const functional:2347 (ITKLabelMapTestDriver:x86_64+0x100011fe8)
    #10 void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)::operator()(long const*, unsigned long const*) const itkMultiThreaderBase.h:350 (ITKLabelMapTestDriver:x86_64+0x100011ed7)
    #11 decltype(std::__1::forward<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&>(fp)(std::__1::forward<long const*>(fp0), std::__1::forward<unsigned long const*>(fp0))) std::__1::__invoke<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&, long const*, unsigned long const*>(void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&&&, long const*&&, unsigned long const*&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x100011dfe)
    #12 void std::__1::__invoke_void_return_wrapper<void>::__call<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&, long const*, unsigned long const*>(void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)&&&, long const*&&, unsigned long const*&&) __functional_base:349 (ITKLabelMapTestDriver:x86_64+0x100011d48)
    #13 std::__1::__function::__alloc_func<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*), std::__1::allocator<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)>, void (long const*, unsigned long const*)>::operator()(long const*&&, unsigned long const*&&) functional:1527 (ITKLabelMapTestDriver:x86_64+0x100011c78)
    #14 std::__1::__function::__func<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*), std::__1::allocator<void itk::MultiThreaderBase::ParallelizeImageRegion<2u>(itk::ImageRegion<2u> const&, std::__1::function<void (itk::ImageRegion<2u> const&)>, itk::ProcessObject*)::'lambda'(long const*, unsigned long const*)>, void (long const*, unsigned long const*)>::operator()(long const*&&, unsigned long const*&&) functional:1651 (ITKLabelMapTestDriver:x86_64+0x100010640)
    #15 std::__1::__function::__value_func<void (long const*, unsigned long const*)>::operator()(long const*&&, unsigned long const*&&) const functional:1799 (ITKLabelMapTestDriver:x86_64+0x10135193a)
    #16 std::__1::function<void (long const*, unsigned long const*)>::operator()(long const*, unsigned long const*) const functional:2347 (ITKLabelMapTestDriver:x86_64+0x101349ec3)
    #17 itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5::operator()() const itkPoolMultiThreader.cxx:271 (ITKLabelMapTestDriver:x86_64+0x1013de1aa)
    #18 decltype(std::__1::forward<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&>(fp)()) std::__1::__invoke<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013de111)
    #19 std::__1::__bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<>, __is_valid_bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<> >::value>::type std::__1::__apply_functor<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<> >(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&, std::__1::tuple<>&, std::__1::__tuple_indices<>, std::__1::tuple<>&&) functional:2644 (ITKLabelMapTestDriver:x86_64+0x1013de0c9)
    #20 std::__1::__bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<>, __is_valid_bind_return<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5, std::__1::tuple<>, std::__1::tuple<> >::value>::type std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>::operator()<>() functional:2677 (ITKLabelMapTestDriver:x86_64+0x1013de089)
    #21 decltype(std::__1::forward<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>&>(fp)()) std::__1::__invoke<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>&>(std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>&&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013de021)
    #22 std::__1::__packaged_task_func<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>, std::__1::allocator<std::__1::__bind<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5> >, void* ()>::operator()() future:1821 (ITKLabelMapTestDriver:x86_64+0x1013dd8a5)
    #23 std::__1::__packaged_task_function<void* ()>::operator()() const future:1998 (ITKLabelMapTestDriver:x86_64+0x1013d6cbf)
    #24 std::__1::packaged_task<void* ()>::operator()() future:2089 (ITKLabelMapTestDriver:x86_64+0x1013d6b6e)
    #25 std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()::operator()() const itkThreadPool.h:97 (ITKLabelMapTestDriver:x86_64+0x1013e0091)
    #26 decltype(std::__1::forward<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(fp)()) std::__1::__invoke<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()&>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013e0021)
    #27 void std::__1::__invoke_void_return_wrapper<void>::__call<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()&>(std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()&&&) __functional_base:349 (ITKLabelMapTestDriver:x86_64+0x1013dffb1)
    #28 std::__1::__function::__alloc_func<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'(), std::__1::allocator<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()>, void ()>::operator()() functional:1527 (ITKLabelMapTestDriver:x86_64+0x1013dff71)
    #29 std::__1::__function::__func<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'(), std::__1::allocator<std::__1::future<std::__1::result_of<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5 ()>::type> itk::ThreadPool::AddWork<itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5>(itk::PoolMultiThreader::ParallelizeImageRegion(unsigned int, long const*, unsigned long const*, std::__1::function<void (long const*, unsigned long const*)>, itk::ProcessObject*)::$_5&&)::'lambda'()>, void ()>::operator()() functional:1651 (ITKLabelMapTestDriver:x86_64+0x1013de9ed)
    #30 std::__1::__function::__value_func<void ()>::operator()() const functional:1799 (ITKLabelMapTestDriver:x86_64+0x1013a6c84)
    #31 std::__1::function<void ()>::operator()() const functional:2347 (ITKLabelMapTestDriver:x86_64+0x1013a27e9)
    #32 itk::ThreadPool::ThreadExecute() itkThreadPool.cxx:211 (ITKLabelMapTestDriver:x86_64+0x1013e0e5a)
    #33 decltype(std::__1::forward<void (*)()>(fp)()) std::__1::__invoke<void (*)()>(void (*&&)()) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013e7f76)
    #34 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)()>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)()>&, std::__1::__tuple_indices<>) thread:342 (ITKLabelMapTestDriver:x86_64+0x1013e7e59)
    #35 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)()> >(void*) thread:352 (ITKLabelMapTestDriver:x86_64+0x1013e760a)

  Previous write of size 1 at 0x7bc00005cd56 by thread T8:
    [failed to restore the stack]

  Location is heap block of size 65536 at 0x7bc000050000 allocated by main thread:
    #0 operator new[](unsigned long) <null>:5891680 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x6ed8b)
    #1 itk::ImportImageContainer<unsigned long, unsigned char>::AllocateElements(unsigned long, bool) const itkImportImageContainer.hxx:180 (ITKLabelMapTestDriver:x86_64+0x10001b2da)
    #2 itk::ImportImageContainer<unsigned long, unsigned char>::Reserve(unsigned long, bool) itkImportImageContainer.hxx:85 (ITKLabelMapTestDriver:x86_64+0x10001c3e5)
    #3 itk::Image<unsigned char, 2u>::Allocate(bool) itkImage.hxx:53 (ITKLabelMapTestDriver:x86_64+0x1000186f6)
    #4 itk::ImageSource<itk::Image<unsigned char, 2u> >::AllocateOutputs() itkImageSource.hxx:184 (ITKLabelMapTestDriver:x86_64+0x10000d752)
    #5 itk::ImageSource<itk::Image<unsigned char, 2u> >::GenerateData() itkImageSource.hxx:215 (ITKLabelMapTestDriver:x86_64+0x10000ea7a)
    #6 itk::ProcessObject::UpdateOutputData(itk::DataObject*) itkProcessObject.cxx:1708 (ITKLabelMapTestDriver:x86_64+0x1013344a8)
    #7 itk::DataObject::UpdateOutputData() itkDataObject.cxx:376 (ITKLabelMapTestDriver:x86_64+0x101370a4d)
    #8 itk::ImageBase<2u>::UpdateOutputData() itkImageBase.hxx:263 (ITKLabelMapTestDriver:x86_64+0x10001747a)
    #9 itk::ImageFileWriter<itk::Image<unsigned char, 2u> >::Write() itkImageFileWriter.hxx:284 (ITKLabelMapTestDriver:x86_64+0x1000580ad)
    #10 itk::ImageFileWriter<itk::Image<unsigned char, 2u> >::Update() itkImageFileWriter.h:178 (ITKLabelMapTestDriver:x86_64+0x1000568f5)
    #11 itkStatisticsUniqueLabelMapFilterTest1(int, char**) itkStatisticsUniqueLabelMapFilterTest1.cxx:136 (ITKLabelMapTestDriver:x86_64+0x100af9088)
    #12 main ITKLabelMapTestDriver.cxx:513 (ITKLabelMapTestDriver:x86_64+0x100002473)

  Thread T10 (tid=106450770, running) created by main thread at:
    #0 pthread_create <null>:5891728 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x2933d)
    #1 std::__1::__libcpp_thread_create(_opaque_pthread_t**, void* (*)(void*), void*) __threading_support:328 (ITKLabelMapTestDriver:x86_64+0x1013e7589)
    #2 std::__1::thread::thread<void (*)(), void>(void (*&&)()) thread:368 (ITKLabelMapTestDriver:x86_64+0x1013e73cc)
    #3 std::__1::thread::thread<void (*)(), void>(void (*&&)()) thread:360 (ITKLabelMapTestDriver:x86_64+0x1013e7300)
    #4 void std::__1::allocator<std::__1::thread>::construct<std::__1::thread, void (*)()>(std::__1::thread*, void (*&&)()) memory:1826 (ITKLabelMapTestDriver:x86_64+0x1013e72b8)
    #5 void std::__1::allocator_traits<std::__1::allocator<std::__1::thread> >::__construct<std::__1::thread, void (*)()>(std::__1::integral_constant<bool, true>, std::__1::allocator<std::__1::thread>&, std::__1::thread*, void (*&&)()) memory:1718 (ITKLabelMapTestDriver:x86_64+0x1013e7268)
    #6 void std::__1::allocator_traits<std::__1::allocator<std::__1::thread> >::construct<std::__1::thread, void (*)()>(std::__1::allocator<std::__1::thread>&, std::__1::thread*, void (*&&)()) memory:1561 (ITKLabelMapTestDriver:x86_64+0x1013e7118)
    #7 void std::__1::vector<std::__1::thread, std::__1::allocator<std::__1::thread> >::emplace_back<void (*)()>(void (*&&)()) vector:1688 (ITKLabelMapTestDriver:x86_64+0x1013e0d12)
    #8 itk::ThreadPool::ThreadPool() itkThreadPool.cxx:118 (ITKLabelMapTestDriver:x86_64+0x1013e0ac6)
    #9 itk::ThreadPool::ThreadPool() itkThreadPool.cxx:108 (ITKLabelMapTestDriver:x86_64+0x1013e0f49)
    #10 itk::ThreadPool::GetInstance()::$_2::operator()() const itkThreadPool.cxx:83 (ITKLabelMapTestDriver:x86_64+0x1013e620b)
    #11 decltype(std::__1::forward<itk::ThreadPool::GetInstance()::$_2>(fp)()) std::__1::__invoke<itk::ThreadPool::GetInstance()::$_2>(itk::ThreadPool::GetInstance()::$_2&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013e6103)
    #12 void std::__1::__call_once_param<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >::__execute<>(std::__1::__tuple_indices<>) mutex:622 (ITKLabelMapTestDriver:x86_64+0x1013e60d1)
    #13 std::__1::__call_once_param<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >::operator()() mutex:614 (ITKLabelMapTestDriver:x86_64+0x1013e6079)
    #14 void std::__1::__call_once_proxy<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >(void*) mutex:650 (ITKLabelMapTestDriver:x86_64+0x1013e5f19)
    #15 __tsan::(anonymous namespace)::call_once_callback_wrapper(void*) <null>:5891728 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x69a0e)
    #16 itk::ThreadPool::GetInstance() itkThreadPool.cxx:79 (ITKLabelMapTestDriver:x86_64+0x1013e0681)
    #17 itk::PoolMultiThreader::PoolMultiThreader() itkPoolMultiThreader.cxx:81 (ITKLabelMapTestDriver:x86_64+0x1013ca496)
    #18 itk::PoolMultiThreader::PoolMultiThreader() itkPoolMultiThreader.cxx:82 (ITKLabelMapTestDriver:x86_64+0x1013ca7b9)
    #19 itk::PoolMultiThreader::New() itkPoolMultiThreader.h:57 (ITKLabelMapTestDriver:x86_64+0x1013493c5)
    #20 itk::MultiThreaderBase::New() itkMultiThreaderBase.cxx:419 (ITKLabelMapTestDriver:x86_64+0x101348ef0)
    #21 itk::ProcessObject::ProcessObject() itkProcessObject.cxx:72 (ITKLabelMapTestDriver:x86_64+0x10132bf1a)
    #22 itk::ImageSource<itk::Image<unsigned char, 2u> >::ImageSource() itkImageSource.h:230 (ITKLabelMapTestDriver:x86_64+0x10000a020)
    #23 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::ImageFileReader() itkImageFileReader.h:122 (ITKLabelMapTestDriver:x86_64+0x100009ef4)
    #24 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::ImageFileReader() itkImageFileReader.hxx:36 (ITKLabelMapTestDriver:x86_64+0x100009d19)
    #25 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::New() itkImageFileReader.h:86 (ITKLabelMapTestDriver:x86_64+0x100008475)
    #26 itkStatisticsUniqueLabelMapFilterTest1(int, char**) itkStatisticsUniqueLabelMapFilterTest1.cxx:62 (ITKLabelMapTestDriver:x86_64+0x100af8800)
    #27 main ITKLabelMapTestDriver.cxx:513 (ITKLabelMapTestDriver:x86_64+0x100002473)

  Thread T8 (tid=106450768, running) created by main thread at:
    #0 pthread_create <null>:5891728 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x2933d)
    #1 std::__1::__libcpp_thread_create(_opaque_pthread_t**, void* (*)(void*), void*) __threading_support:328 (ITKLabelMapTestDriver:x86_64+0x1013e7589)
    #2 std::__1::thread::thread<void (*)(), void>(void (*&&)()) thread:368 (ITKLabelMapTestDriver:x86_64+0x1013e73cc)
    #3 std::__1::thread::thread<void (*)(), void>(void (*&&)()) thread:360 (ITKLabelMapTestDriver:x86_64+0x1013e7300)
    #4 void std::__1::allocator<std::__1::thread>::construct<std::__1::thread, void (*)()>(std::__1::thread*, void (*&&)()) memory:1826 (ITKLabelMapTestDriver:x86_64+0x1013e72b8)
    #5 void std::__1::allocator_traits<std::__1::allocator<std::__1::thread> >::__construct<std::__1::thread, void (*)()>(std::__1::integral_constant<bool, true>, std::__1::allocator<std::__1::thread>&, std::__1::thread*, void (*&&)()) memory:1718 (ITKLabelMapTestDriver:x86_64+0x1013e7268)
    #6 void std::__1::allocator_traits<std::__1::allocator<std::__1::thread> >::construct<std::__1::thread, void (*)()>(std::__1::allocator<std::__1::thread>&, std::__1::thread*, void (*&&)()) memory:1561 (ITKLabelMapTestDriver:x86_64+0x1013e7118)
    #7 void std::__1::vector<std::__1::thread, std::__1::allocator<std::__1::thread> >::emplace_back<void (*)()>(void (*&&)()) vector:1688 (ITKLabelMapTestDriver:x86_64+0x1013e0d12)
    #8 itk::ThreadPool::ThreadPool() itkThreadPool.cxx:118 (ITKLabelMapTestDriver:x86_64+0x1013e0ac6)
    #9 itk::ThreadPool::ThreadPool() itkThreadPool.cxx:108 (ITKLabelMapTestDriver:x86_64+0x1013e0f49)
    #10 itk::ThreadPool::GetInstance()::$_2::operator()() const itkThreadPool.cxx:83 (ITKLabelMapTestDriver:x86_64+0x1013e620b)
    #11 decltype(std::__1::forward<itk::ThreadPool::GetInstance()::$_2>(fp)()) std::__1::__invoke<itk::ThreadPool::GetInstance()::$_2>(itk::ThreadPool::GetInstance()::$_2&&) type_traits:4361 (ITKLabelMapTestDriver:x86_64+0x1013e6103)
    #12 void std::__1::__call_once_param<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >::__execute<>(std::__1::__tuple_indices<>) mutex:622 (ITKLabelMapTestDriver:x86_64+0x1013e60d1)
    #13 std::__1::__call_once_param<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >::operator()() mutex:614 (ITKLabelMapTestDriver:x86_64+0x1013e6079)
    #14 void std::__1::__call_once_proxy<std::__1::tuple<itk::ThreadPool::GetInstance()::$_2&&> >(void*) mutex:650 (ITKLabelMapTestDriver:x86_64+0x1013e5f19)
    #15 __tsan::(anonymous namespace)::call_once_callback_wrapper(void*) <null>:5891728 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x69a0e)
    #16 itk::ThreadPool::GetInstance() itkThreadPool.cxx:79 (ITKLabelMapTestDriver:x86_64+0x1013e0681)
    #17 itk::PoolMultiThreader::PoolMultiThreader() itkPoolMultiThreader.cxx:81 (ITKLabelMapTestDriver:x86_64+0x1013ca496)
    #18 itk::PoolMultiThreader::PoolMultiThreader() itkPoolMultiThreader.cxx:82 (ITKLabelMapTestDriver:x86_64+0x1013ca7b9)
    #19 itk::PoolMultiThreader::New() itkPoolMultiThreader.h:57 (ITKLabelMapTestDriver:x86_64+0x1013493c5)
    #20 itk::MultiThreaderBase::New() itkMultiThreaderBase.cxx:419 (ITKLabelMapTestDriver:x86_64+0x101348ef0)
    #21 itk::ProcessObject::ProcessObject() itkProcessObject.cxx:72 (ITKLabelMapTestDriver:x86_64+0x10132bf1a)
    #22 itk::ImageSource<itk::Image<unsigned char, 2u> >::ImageSource() itkImageSource.h:230 (ITKLabelMapTestDriver:x86_64+0x10000a020)
    #23 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::ImageFileReader() itkImageFileReader.h:122 (ITKLabelMapTestDriver:x86_64+0x100009ef4)
    #24 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::ImageFileReader() itkImageFileReader.hxx:36 (ITKLabelMapTestDriver:x86_64+0x100009d19)
    #25 itk::ImageFileReader<itk::Image<unsigned char, 2u>, itk::DefaultConvertPixelTraits<unsigned char> >::New() itkImageFileReader.h:86 (ITKLabelMapTestDriver:x86_64+0x100008475)
    #26 itkStatisticsUniqueLabelMapFilterTest1(int, char**) itkStatisticsUniqueLabelMapFilterTest1.cxx:62 (ITKLabelMapTestDriver:x86_64+0x100af8800)
    #27 main ITKLabelMapTestDriver.cxx:513 (ITKLabelMapTestDriver:x86_64+0x100002473)

SUMMARY: ThreadSanitizer: data race itkImage.h:211 in itk::Image<unsigned char, 2u>::SetPixel(itk::Index<2u> const&, unsigned char const&)
==================
Trying writer->Update()
<DartMeasurement name="ImageError cthead1Label-label-statistics-unique-labelmap-baseline1.png" type="numeric/double">14</DartMeasurement>
<DartMeasurement name="ImageError" type="numeric/double">14</DartMeasurement>
<DartMeasurement name="ImageError Minimum" type="numeric/double">82</DartMeasurement>
<DartMeasurement name="ImageError Maximum" type="numeric/double">82</DartMeasurement>
<DartMeasurement name="ImageError Mean" type="numeric/double">82</DartMeasurement>
<DartMeasurementFile name="DifferenceImage" type="image/png">/Users/sean/external/ITK-test-bin/Testing/Temporary/itkStatisticsUniqueLabelMapFilterTest1.png.diff.png</DartMeasurementFile>
<DartMeasurementFile name="BaselineImage" type="image/png">/Users/sean/external/ITK-test-bin/Testing/Temporary/itkStatisticsUniqueLabelMapFilterTest1.png.base.png</DartMeasurementFile>
<DartMeasurementFile name="TestImage" type="image/png">/Users/sean/external/ITK-test-bin/Testing/Temporary/itkStatisticsUniqueLabelMapFilterTest1.png.test.png</DartMeasurementFile>
<DartMeasurement name="BaselineImageName" type="text/string">cthead1Label-label-statistics-unique-labelmap-baseline1.png</DartMeasurement>
<DartMeasurement name="ImageError cthead1Label-label-statistics-unique-labelmap-dilate-baseline1.png" type="numeric/double">0</DartMeasurement>
<DartMeasurement name="BaselineImageName" type="text/string">cthead1Label-label-statistics-unique-labelmap-dilate-baseline1.png</DartMeasurement>
ThreadSanitizer: reported 2 warnings
Abort trap: 6
@seanm seanm added the type:Bug Inconsistencies or issues which will cause an incorrect result under some or all circumstances label Jan 4, 2022
@blowekamp
Copy link
Member

That may be the long standing issue with that test/filter! Nice find!

@seanm
Copy link
Contributor Author

seanm commented Jan 4, 2022

There's a long-standing issue? Is there another ticket to relate this one to?

@blowekamp
Copy link
Member

It might have gotten resolved at some point, or the test stopped failing "randomly. There was an issue.... I'm unsure of the state to be honest. But there is mention of it in the code:

a18b3cf#diff-ce29fb0f5bbe68109294658b036c1a46f17abed19ce9168df44958670be4bf09

From back in the JIRA days 😃

@dzenanz
Copy link
Member

dzenanz commented Jan 4, 2022

Most recent nightly failure: https://open.cdash.org/test/552477773. I think there was a continuous build failure just a few days ago (I am too lazy to search for it).

@jhlegarreta
Copy link
Member

jhlegarreta commented Jan 5, 2022

Great @seanm !

I think there was a continuous build failure just a few days ago

The test has been failing on and off, e.g. latest failure on the master Azure Pipelines Windows build:
https://open.cdash.org/viewTest.php?onlyfailed&buildid=7657330
https://open.cdash.org/test/579122229

@seanm
Copy link
Contributor Author

seanm commented Jan 24, 2022

I've gone through all the TSan failures, and the following all basically have the same bug:

  • itkErodeObjectMorphologyImageFilterTest
  • itkStatisticsUniqueLabelMapFilterTest1
  • itkStatisticsUniqueLabelMapFilterTest2
  • itkParallelSparseFieldLevelSetImageFilterTest
  • itkNarrowBandImageFilterBaseTest
  • SLICFixture.Blank2DImage
  • itkSLICImageFilterTest3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:Bug Inconsistencies or issues which will cause an incorrect result under some or all circumstances
Projects
None yet
4 participants