oneTBB: Test ``test_arena_constraints`` sporadically hangs on Apple Silicon

Commit: cd6a5f9f4a5bae9fc157fa03093c17b9f861c9f2

Compiler:

Apple clang version 13.0.0 (clang-1300.0.29.30)
Target: arm64-apple-darwin21.2.0
Thread model: posix

Debug build.

Test output:

[doctest] doctest version is "2.4.7"
[doctest] run with "--help" for options





^C===============================================================================
/Users/phprus/Devel/oneapi-src/tmp/oneTBB-cd6a5f9f4a5bae9fc157fa03093c17b9f861c9f2/test/tbb/test_arena_constraints.cpp:112:
TEST CASE:  Test memory leaks

/Users/phprus/Devel/oneapi-src/tmp/oneTBB-cd6a5f9f4a5bae9fc157fa03093c17b9f861c9f2/test/tbb/test_arena_constraints.cpp:112: FATAL ERROR: test case CRASHED: SIGINT - Terminal interrupt signal

===============================================================================
[doctest] test cases: 1 | 0 passed | 1 failed | 3 skipped
[doctest] assertions: 0 | 0 passed | 0 failed |
[doctest] Status: FAILURE!

lldb:

phprus@mbp debug % lldb
(lldb) process attach -p 28972
Process 28972 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
    frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
libsystem_kernel.dylib`__semwait_signal:
->  0x1a26d0ebc <+8>:  b.lo   0x1a26d0edc               ; <+40>
    0x1a26d0ec0 <+12>: pacibsp
    0x1a26d0ec4 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1a26d0ec8 <+20>: mov    x29, sp
Target 0: (test_arena_constraints) stopped.

Executable module set to "/Users/phprus/Devel/oneapi-src/tmp/oneTBB-cd6a5f9f4a5bae9fc157fa03093c17b9f861c9f2/build/debug/appleclang_13.0_cxx17_64_debug/test_arena_constraints".
Architecture set to: arm64e-apple-macosx-.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
    frame #1: 0x00000001a25dbd88 libsystem_c.dylib`nanosleep + 216
    frame #2: 0x00000001a2664820 libc++.1.dylib`std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > const&) + 84
    frame #3: 0x0000000100a0ded8 test_arena_constraints`void std::__1::this_thread::sleep_for<long long, std::__1::ratio<1l, 1000000l> >(__d=0x000000016f411fa0) at thread:386:9
    frame #4: 0x0000000100a0ddd0 test_arena_constraints`void utils::SpinWaitWhile<void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'()>(pred=(anonymous class) @ 0x000000016f411fb0) at spin_barrier.h:49:13
    frame #5: 0x0000000100a0dd30 test_arena_constraints`void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(location=0x000000016f412730, comp=(anonymous class) @ 0x000000016f411fe8) at spin_barrier.h:60:5
    frame #6: 0x0000000100a0dcf4 test_arena_constraints`void utils::SpinWaitWhileEq<unsigned long, unsigned long>(location=0x000000016f412730, value=0) at spin_barrier.h:67:5
    frame #7: 0x0000000100a0dc10 test_arena_constraints`void utils::WaitWhileEq::operator(this=0x000000016f4120cf, location=0x000000016f412730, value=0)<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long) const at spin_barrier.h:84:9
    frame #8: 0x0000000100a0da90 test_arena_constraints`bool utils::SpinBarrier::customWait<utils::WaitWhileEq, utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onWaitCallback=0x000000016f4120cf, onOpenBarrierCallback=0x000000016f4120f7) at spin_barrier.h:140:13
    frame #9: 0x0000000100a0d9ac test_arena_constraints`bool utils::SpinBarrier::wait<utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onOpenBarrierCallback=0x000000016f4120f7) at spin_barrier.h:159:16
    frame #10: 0x0000000100a0d978 test_arena_constraints`utils::SpinBarrier::wait(this=0x000000016f412720) at spin_barrier.h:163:16
    frame #11: 0x0000000100a0d950 test_arena_constraints`DOCTEST_ANON_FUNC_38(this=0x000000010115bd58, (null)=0x000000010115bd40)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&)::operator()(tbb::detail::d1::blocked_range<unsigned long> const&) const at test_arena_constraints.cpp:133:33
    frame #12: 0x0000000100a0d388 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::run_body(this=0x000000010115bd00, r=0x000000010115bd40) at parallel_for.h:119:9
    frame #13: 0x0000000100a0c644 test_arena_constraints`void tbb::detail::d1::dynamic_grainsize_mode<tbb::detail::d1::adaptive_mode<tbb::detail::d1::auto_partition_type> >::work_balance<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010115bd68, start=0x000000010115bd00, range=0x000000010115bd40, ed=0x00000001010d9688)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:447:19
    frame #14: 0x0000000100a0c1b4 test_arena_constraints`void tbb::detail::d1::partition_type_base<tbb::detail::d1::auto_partition_type>::execute<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010115bd68, start=0x000000010115bd00, range=0x000000010115bd40, ed=0x00000001010d9688)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:288:16
    frame #15: 0x0000000100a0be40 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::execute(this=0x000000010115bd00, ed=0x00000001010d9688) at parallel_for.h:172:18
    frame #16: 0x0000000100ea9d64 libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<false, tbb::detail::r1::external_waiter>(tbb::detail::d1::task*, tbb::detail::r1::external_waiter&) + 884
    frame #17: 0x0000000100ea62fc libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<tbb::detail::r1::external_waiter>(tbb::detail::d1::task*, tbb::detail::r1::external_waiter&) + 80
    frame #18: 0x0000000100ea6038 libtbb_debug.12.6.dylib`tbb::detail::r1::task_dispatcher::execute_and_wait(tbb::detail::d1::task*, tbb::detail::d1::wait_context&, tbb::detail::d1::task_group_context&) + 180
    frame #19: 0x0000000100ea5f74 libtbb_debug.12.6.dylib`tbb::detail::r1::execute_and_wait(tbb::detail::d1::task&, tbb::detail::d1::task_group_context&, tbb::detail::d1::wait_context&, tbb::detail::d1::task_group_context&) + 64
    frame #20: 0x0000000100a0bb04 test_arena_constraints`tbb::detail::d1::execute_and_wait(t=0x000000010115bd00, t_ctx=0x000000016f412608, wait_ctx=0x000000016f412580, w_ctx=0x000000016f412608) at _task.h:191:5
    frame #21: 0x0000000100a0b7d0 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::run(range=0x000000016f4126f8, body=0x000000016f4126f0, partitioner=0x000000016f4126bf, context=0x000000016f412608)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&) const&, tbb::detail::d1::auto_partitioner const&, tbb::detail::d1::task_group_context&) at parallel_for.h:114:13
    frame #22: 0x0000000100a0b684 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::run(range=0x000000016f4126f8, body=0x000000016f4126f0, partitioner=0x000000016f4126bf)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&) const&, tbb::detail::d1::auto_partitioner const&) at parallel_for.h:103:9
    frame #23: 0x0000000100a0b49c test_arena_constraints`void tbb::detail::d1::parallel_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&)>(range=0x000000016f4126f8, body=0x000000016f4126f0)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&) const&) at parallel_for.h:231:5
    frame #24: 0x0000000100a0b354 test_arena_constraints`DOCTEST_ANON_FUNC_38(this=0x000000016f412b37)::$_6::operator()() const at test_arena_constraints.cpp:130:17
    frame #25: 0x0000000100a0b288 test_arena_constraints`tbb::detail::d1::task_arena_function<DOCTEST_ANON_FUNC_38()::$_6, void>::operator(this=0x000000016f412a50)() const at task_arena.h:68:9
    frame #26: 0x0000000100e79e74 libtbb_debug.12.6.dylib`tbb::detail::r1::task_arena_impl::execute(tbb::detail::d1::task_arena_base&, tbb::detail::d1::delegate_base&) + 1004
    frame #27: 0x0000000100e79a7c libtbb_debug.12.6.dylib`tbb::detail::r1::execute(tbb::detail::d1::task_arena_base&, tbb::detail::d1::delegate_base&) + 32
    frame #28: 0x0000000100a0a930 test_arena_constraints`void tbb::detail::d1::task_arena::execute_impl<void, DOCTEST_ANON_FUNC_38()::$_6>(this=0x000000016f412b38, f=0x000000016f412b37)::$_6&) at task_arena.h:255:9
    frame #29: 0x0000000100a0a704 test_arena_constraints`decltype(this=0x000000016f412b38, f=0x000000016f412b37)) tbb::detail::d1::task_arena::execute<DOCTEST_ANON_FUNC_38()::$_6>(DOCTEST_ANON_FUNC_38()::$_6&&) at task_arena.h:412:16
    frame #30: 0x00000001009fbb14 test_arena_constraints`DOCTEST_ANON_FUNC_38() at test_arena_constraints.cpp:127:19
    frame #31: 0x00000001009f8e24 test_arena_constraints`doctest::Context::run(this=0x000000016f413498) at doctest.h:6724:21
    frame #32: 0x00000001009fabac test_arena_constraints`main(argc=1, argv=0x000000016f413620) at doctest.h:6809:71
    frame #33: 0x0000000100cb90f4 dyld`start + 520
(lldb) thread select 2
* thread #2
    frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
libsystem_kernel.dylib`__semwait_signal:
->  0x1a26d0ebc <+8>:  b.lo   0x1a26d0edc               ; <+40>
    0x1a26d0ec0 <+12>: pacibsp
    0x1a26d0ec4 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1a26d0ec8 <+20>: mov    x29, sp
(lldb) bt
* thread #2
  * frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
    frame #1: 0x00000001a25dbd88 libsystem_c.dylib`nanosleep + 216
    frame #2: 0x00000001a2664820 libc++.1.dylib`std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > const&) + 84
    frame #3: 0x0000000100a0ded8 test_arena_constraints`void std::__1::this_thread::sleep_for<long long, std::__1::ratio<1l, 1000000l> >(__d=0x000000016f81a9f0) at thread:386:9
    frame #4: 0x0000000100a0ddd0 test_arena_constraints`void utils::SpinWaitWhile<void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'()>(pred=(anonymous class) @ 0x000000016f81aa00) at spin_barrier.h:49:13
    frame #5: 0x0000000100a0dd30 test_arena_constraints`void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(location=0x000000016f412730, comp=(anonymous class) @ 0x000000016f81aa38) at spin_barrier.h:60:5
    frame #6: 0x0000000100a0dcf4 test_arena_constraints`void utils::SpinWaitWhileEq<unsigned long, unsigned long>(location=0x000000016f412730, value=0) at spin_barrier.h:67:5
    frame #7: 0x0000000100a0dc10 test_arena_constraints`void utils::WaitWhileEq::operator(this=0x000000016f81ab1f, location=0x000000016f412730, value=0)<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long) const at spin_barrier.h:84:9
    frame #8: 0x0000000100a0da90 test_arena_constraints`bool utils::SpinBarrier::customWait<utils::WaitWhileEq, utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onWaitCallback=0x000000016f81ab1f, onOpenBarrierCallback=0x000000016f81ab47) at spin_barrier.h:140:13
    frame #9: 0x0000000100a0d9ac test_arena_constraints`bool utils::SpinBarrier::wait<utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onOpenBarrierCallback=0x000000016f81ab47) at spin_barrier.h:159:16
    frame #10: 0x0000000100a0d978 test_arena_constraints`utils::SpinBarrier::wait(this=0x000000016f412720) at spin_barrier.h:163:16
    frame #11: 0x0000000100a0d950 test_arena_constraints`DOCTEST_ANON_FUNC_38(this=0x000000010110bb58, (null)=0x000000010110bb40)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&)::operator()(tbb::detail::d1::blocked_range<unsigned long> const&) const at test_arena_constraints.cpp:133:33
    frame #12: 0x0000000100a0d388 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::run_body(this=0x000000010110bb00, r=0x000000010110bb40) at parallel_for.h:119:9
    frame #13: 0x0000000100a0c644 test_arena_constraints`void tbb::detail::d1::dynamic_grainsize_mode<tbb::detail::d1::adaptive_mode<tbb::detail::d1::auto_partition_type> >::work_balance<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010110bb68, start=0x000000010110bb00, range=0x000000010110bb40, ed=0x00000001010d9708)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:447:19
    frame #14: 0x0000000100a0c1b4 test_arena_constraints`void tbb::detail::d1::partition_type_base<tbb::detail::d1::auto_partition_type>::execute<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010110bb68, start=0x000000010110bb00, range=0x000000010110bb40, ed=0x00000001010d9708)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:288:16
    frame #15: 0x0000000100a0be40 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::execute(this=0x000000010110bb00, ed=0x00000001010d9708) at parallel_for.h:172:18
    frame #16: 0x0000000100e8129c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<false, tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 884
    frame #17: 0x0000000100e77a4c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 80
    frame #18: 0x0000000100e772e8 libtbb_debug.12.6.dylib`tbb::detail::r1::arena::process(tbb::detail::r1::thread_data&) + 484
    frame #19: 0x0000000100e965fc libtbb_debug.12.6.dylib`tbb::detail::r1::market::process(rml::job&) + 100
    frame #20: 0x0000000100e9f014 libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::run() + 120
    frame #21: 0x0000000100e9ef7c libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::thread_routine(void*) + 44
    frame #22: 0x00000001a2709240 libsystem_pthread.dylib`_pthread_start + 148
(lldb) thread select 3
* thread #3
    frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
libsystem_kernel.dylib`__semwait_signal:
->  0x1a26d0ebc <+8>:  b.lo   0x1a26d0edc               ; <+40>
    0x1a26d0ec0 <+12>: pacibsp
    0x1a26d0ec4 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1a26d0ec8 <+20>: mov    x29, sp
(lldb) bt
* thread #3
  * frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
    frame #1: 0x00000001a25dbd88 libsystem_c.dylib`nanosleep + 216
    frame #2: 0x00000001a2664820 libc++.1.dylib`std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > const&) + 84
    frame #3: 0x0000000100a0ded8 test_arena_constraints`void std::__1::this_thread::sleep_for<long long, std::__1::ratio<1l, 1000000l> >(__d=0x000000016fc269f0) at thread:386:9
    frame #4: 0x0000000100a0ddd0 test_arena_constraints`void utils::SpinWaitWhile<void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'()>(pred=(anonymous class) @ 0x000000016fc26a00) at spin_barrier.h:49:13
    frame #5: 0x0000000100a0dd30 test_arena_constraints`void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(location=0x000000016f412730, comp=(anonymous class) @ 0x000000016fc26a38) at spin_barrier.h:60:5
    frame #6: 0x0000000100a0dcf4 test_arena_constraints`void utils::SpinWaitWhileEq<unsigned long, unsigned long>(location=0x000000016f412730, value=0) at spin_barrier.h:67:5
    frame #7: 0x0000000100a0dc10 test_arena_constraints`void utils::WaitWhileEq::operator(this=0x000000016fc26b1f, location=0x000000016f412730, value=0)<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long) const at spin_barrier.h:84:9
    frame #8: 0x0000000100a0da90 test_arena_constraints`bool utils::SpinBarrier::customWait<utils::WaitWhileEq, utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onWaitCallback=0x000000016fc26b1f, onOpenBarrierCallback=0x000000016fc26b47) at spin_barrier.h:140:13
    frame #9: 0x0000000100a0d9ac test_arena_constraints`bool utils::SpinBarrier::wait<utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onOpenBarrierCallback=0x000000016fc26b47) at spin_barrier.h:159:16
    frame #10: 0x0000000100a0d978 test_arena_constraints`utils::SpinBarrier::wait(this=0x000000016f412720) at spin_barrier.h:163:16
    frame #11: 0x0000000100a0d950 test_arena_constraints`DOCTEST_ANON_FUNC_38(this=0x0000000101123c58, (null)=0x0000000101123c40)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&)::operator()(tbb::detail::d1::blocked_range<unsigned long> const&) const at test_arena_constraints.cpp:133:33
    frame #12: 0x0000000100a0d388 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::run_body(this=0x0000000101123c00, r=0x0000000101123c40) at parallel_for.h:119:9
    frame #13: 0x0000000100a0c644 test_arena_constraints`void tbb::detail::d1::dynamic_grainsize_mode<tbb::detail::d1::adaptive_mode<tbb::detail::d1::auto_partition_type> >::work_balance<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x0000000101123c68, start=0x0000000101123c00, range=0x0000000101123c40, ed=0x00000001010d9788)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:447:19
    frame #14: 0x0000000100a0c1b4 test_arena_constraints`void tbb::detail::d1::partition_type_base<tbb::detail::d1::auto_partition_type>::execute<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x0000000101123c68, start=0x0000000101123c00, range=0x0000000101123c40, ed=0x00000001010d9788)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:288:16
    frame #15: 0x0000000100a0be40 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::execute(this=0x0000000101123c00, ed=0x00000001010d9788) at parallel_for.h:172:18
    frame #16: 0x0000000100e8129c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<false, tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 884
    frame #17: 0x0000000100e77a4c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 80
    frame #18: 0x0000000100e772e8 libtbb_debug.12.6.dylib`tbb::detail::r1::arena::process(tbb::detail::r1::thread_data&) + 484
    frame #19: 0x0000000100e965fc libtbb_debug.12.6.dylib`tbb::detail::r1::market::process(rml::job&) + 100
    frame #20: 0x0000000100e9f014 libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::run() + 120
    frame #21: 0x0000000100e9ef7c libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::thread_routine(void*) + 44
    frame #22: 0x00000001a2709240 libsystem_pthread.dylib`_pthread_start + 148
(lldb) thread select 4
* thread #4
    frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
libsystem_kernel.dylib`__semwait_signal:
->  0x1a26d0ebc <+8>:  b.lo   0x1a26d0edc               ; <+40>
    0x1a26d0ec0 <+12>: pacibsp
    0x1a26d0ec4 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1a26d0ec8 <+20>: mov    x29, sp
(lldb) bt
* thread #4
  * frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
    frame #1: 0x00000001a25dbd88 libsystem_c.dylib`nanosleep + 216
    frame #2: 0x00000001a2664820 libc++.1.dylib`std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > const&) + 84
    frame #3: 0x0000000100a0ded8 test_arena_constraints`void std::__1::this_thread::sleep_for<long long, std::__1::ratio<1l, 1000000l> >(__d=0x00000001700329f0) at thread:386:9
    frame #4: 0x0000000100a0ddd0 test_arena_constraints`void utils::SpinWaitWhile<void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'()>(pred=(anonymous class) @ 0x0000000170032a00) at spin_barrier.h:49:13
    frame #5: 0x0000000100a0dd30 test_arena_constraints`void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(location=0x000000016f412730, comp=(anonymous class) @ 0x0000000170032a38) at spin_barrier.h:60:5
    frame #6: 0x0000000100a0dcf4 test_arena_constraints`void utils::SpinWaitWhileEq<unsigned long, unsigned long>(location=0x000000016f412730, value=0) at spin_barrier.h:67:5
    frame #7: 0x0000000100a0dc10 test_arena_constraints`void utils::WaitWhileEq::operator(this=0x0000000170032b1f, location=0x000000016f412730, value=0)<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long) const at spin_barrier.h:84:9
    frame #8: 0x0000000100a0da90 test_arena_constraints`bool utils::SpinBarrier::customWait<utils::WaitWhileEq, utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onWaitCallback=0x0000000170032b1f, onOpenBarrierCallback=0x0000000170032b47) at spin_barrier.h:140:13
    frame #9: 0x0000000100a0d9ac test_arena_constraints`bool utils::SpinBarrier::wait<utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onOpenBarrierCallback=0x0000000170032b47) at spin_barrier.h:159:16
    frame #10: 0x0000000100a0d978 test_arena_constraints`utils::SpinBarrier::wait(this=0x000000016f412720) at spin_barrier.h:163:16
    frame #11: 0x0000000100a0d950 test_arena_constraints`DOCTEST_ANON_FUNC_38(this=0x000000010115b758, (null)=0x000000010115b740)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&)::operator()(tbb::detail::d1::blocked_range<unsigned long> const&) const at test_arena_constraints.cpp:133:33
    frame #12: 0x0000000100a0d388 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::run_body(this=0x000000010115b700, r=0x000000010115b740) at parallel_for.h:119:9
    frame #13: 0x0000000100a0c644 test_arena_constraints`void tbb::detail::d1::dynamic_grainsize_mode<tbb::detail::d1::adaptive_mode<tbb::detail::d1::auto_partition_type> >::work_balance<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010115b768, start=0x000000010115b700, range=0x000000010115b740, ed=0x00000001010d9988)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:447:19
    frame #14: 0x0000000100a0c1b4 test_arena_constraints`void tbb::detail::d1::partition_type_base<tbb::detail::d1::auto_partition_type>::execute<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010115b768, start=0x000000010115b700, range=0x000000010115b740, ed=0x00000001010d9988)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:288:16
    frame #15: 0x0000000100a0be40 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::execute(this=0x000000010115b700, ed=0x00000001010d9988) at parallel_for.h:172:18
    frame #16: 0x0000000100e8129c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<false, tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 884
    frame #17: 0x0000000100e77a4c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 80
    frame #18: 0x0000000100e772e8 libtbb_debug.12.6.dylib`tbb::detail::r1::arena::process(tbb::detail::r1::thread_data&) + 484
    frame #19: 0x0000000100e965fc libtbb_debug.12.6.dylib`tbb::detail::r1::market::process(rml::job&) + 100
    frame #20: 0x0000000100e9f014 libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::run() + 120
    frame #21: 0x0000000100e9ef7c libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::thread_routine(void*) + 44
    frame #22: 0x00000001a2709240 libsystem_pthread.dylib`_pthread_start + 148
(lldb) thread select 5
* thread #5
    frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
libsystem_kernel.dylib`__semwait_signal:
->  0x1a26d0ebc <+8>:  b.lo   0x1a26d0edc               ; <+40>
    0x1a26d0ec0 <+12>: pacibsp
    0x1a26d0ec4 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1a26d0ec8 <+20>: mov    x29, sp
(lldb) bt
* thread #5
  * frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
    frame #1: 0x00000001a25dbd88 libsystem_c.dylib`nanosleep + 216
    frame #2: 0x00000001a2664820 libc++.1.dylib`std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > const&) + 84
    frame #3: 0x0000000100a0ded8 test_arena_constraints`void std::__1::this_thread::sleep_for<long long, std::__1::ratio<1l, 1000000l> >(__d=0x000000017043e9f0) at thread:386:9
    frame #4: 0x0000000100a0ddd0 test_arena_constraints`void utils::SpinWaitWhile<void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'()>(pred=(anonymous class) @ 0x000000017043ea00) at spin_barrier.h:49:13
    frame #5: 0x0000000100a0dd30 test_arena_constraints`void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(location=0x000000016f412730, comp=(anonymous class) @ 0x000000017043ea38) at spin_barrier.h:60:5
    frame #6: 0x0000000100a0dcf4 test_arena_constraints`void utils::SpinWaitWhileEq<unsigned long, unsigned long>(location=0x000000016f412730, value=0) at spin_barrier.h:67:5
    frame #7: 0x0000000100a0dc10 test_arena_constraints`void utils::WaitWhileEq::operator(this=0x000000017043eb1f, location=0x000000016f412730, value=0)<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long) const at spin_barrier.h:84:9
    frame #8: 0x0000000100a0da90 test_arena_constraints`bool utils::SpinBarrier::customWait<utils::WaitWhileEq, utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onWaitCallback=0x000000017043eb1f, onOpenBarrierCallback=0x000000017043eb47) at spin_barrier.h:140:13
    frame #9: 0x0000000100a0d9ac test_arena_constraints`bool utils::SpinBarrier::wait<utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onOpenBarrierCallback=0x000000017043eb47) at spin_barrier.h:159:16
    frame #10: 0x0000000100a0d978 test_arena_constraints`utils::SpinBarrier::wait(this=0x000000016f412720) at spin_barrier.h:163:16
    frame #11: 0x0000000100a0d950 test_arena_constraints`DOCTEST_ANON_FUNC_38(this=0x000000010110bd58, (null)=0x000000010110bd40)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&)::operator()(tbb::detail::d1::blocked_range<unsigned long> const&) const at test_arena_constraints.cpp:133:33
    frame #12: 0x0000000100a0d388 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::run_body(this=0x000000010110bd00, r=0x000000010110bd40) at parallel_for.h:119:9
    frame #13: 0x0000000100a0c644 test_arena_constraints`void tbb::detail::d1::dynamic_grainsize_mode<tbb::detail::d1::adaptive_mode<tbb::detail::d1::auto_partition_type> >::work_balance<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010110bd68, start=0x000000010110bd00, range=0x000000010110bd40, ed=0x00000001010d9888)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:447:19
    frame #14: 0x0000000100a0c1b4 test_arena_constraints`void tbb::detail::d1::partition_type_base<tbb::detail::d1::auto_partition_type>::execute<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010110bd68, start=0x000000010110bd00, range=0x000000010110bd40, ed=0x00000001010d9888)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:288:16
    frame #15: 0x0000000100a0be40 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::execute(this=0x000000010110bd00, ed=0x00000001010d9888) at parallel_for.h:172:18
    frame #16: 0x0000000100e8129c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<false, tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 884
    frame #17: 0x0000000100e77a4c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 80
    frame #18: 0x0000000100e772e8 libtbb_debug.12.6.dylib`tbb::detail::r1::arena::process(tbb::detail::r1::thread_data&) + 484
    frame #19: 0x0000000100e965fc libtbb_debug.12.6.dylib`tbb::detail::r1::market::process(rml::job&) + 100
    frame #20: 0x0000000100e9f014 libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::run() + 120
    frame #21: 0x0000000100e9ef7c libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::thread_routine(void*) + 44
    frame #22: 0x00000001a2709240 libsystem_pthread.dylib`_pthread_start + 148
(lldb) thread select 6
* thread #6
    frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
libsystem_kernel.dylib`__semwait_signal:
->  0x1a26d0ebc <+8>:  b.lo   0x1a26d0edc               ; <+40>
    0x1a26d0ec0 <+12>: pacibsp
    0x1a26d0ec4 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1a26d0ec8 <+20>: mov    x29, sp
(lldb) bt
* thread #6
  * frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
    frame #1: 0x00000001a25dbd88 libsystem_c.dylib`nanosleep + 216
    frame #2: 0x00000001a2664820 libc++.1.dylib`std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > const&) + 84
    frame #3: 0x0000000100a0ded8 test_arena_constraints`void std::__1::this_thread::sleep_for<long long, std::__1::ratio<1l, 1000000l> >(__d=0x000000017084a9f0) at thread:386:9
    frame #4: 0x0000000100a0ddd0 test_arena_constraints`void utils::SpinWaitWhile<void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'()>(pred=(anonymous class) @ 0x000000017084aa00) at spin_barrier.h:49:13
    frame #5: 0x0000000100a0dd30 test_arena_constraints`void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(location=0x000000016f412730, comp=(anonymous class) @ 0x000000017084aa38) at spin_barrier.h:60:5
    frame #6: 0x0000000100a0dcf4 test_arena_constraints`void utils::SpinWaitWhileEq<unsigned long, unsigned long>(location=0x000000016f412730, value=0) at spin_barrier.h:67:5
    frame #7: 0x0000000100a0dc10 test_arena_constraints`void utils::WaitWhileEq::operator(this=0x000000017084ab1f, location=0x000000016f412730, value=0)<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long) const at spin_barrier.h:84:9
    frame #8: 0x0000000100a0da90 test_arena_constraints`bool utils::SpinBarrier::customWait<utils::WaitWhileEq, utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onWaitCallback=0x000000017084ab1f, onOpenBarrierCallback=0x000000017084ab47) at spin_barrier.h:140:13
    frame #9: 0x0000000100a0d9ac test_arena_constraints`bool utils::SpinBarrier::wait<utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onOpenBarrierCallback=0x000000017084ab47) at spin_barrier.h:159:16
    frame #10: 0x0000000100a0d978 test_arena_constraints`utils::SpinBarrier::wait(this=0x000000016f412720) at spin_barrier.h:163:16
    frame #11: 0x0000000100a0d950 test_arena_constraints`DOCTEST_ANON_FUNC_38(this=0x0000000101103a58, (null)=0x0000000101103a40)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&)::operator()(tbb::detail::d1::blocked_range<unsigned long> const&) const at test_arena_constraints.cpp:133:33
    frame #12: 0x0000000100a0d388 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::run_body(this=0x0000000101103a00, r=0x0000000101103a40) at parallel_for.h:119:9
    frame #13: 0x0000000100a0c644 test_arena_constraints`void tbb::detail::d1::dynamic_grainsize_mode<tbb::detail::d1::adaptive_mode<tbb::detail::d1::auto_partition_type> >::work_balance<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x0000000101103a68, start=0x0000000101103a00, range=0x0000000101103a40, ed=0x00000001010d9808)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:447:19
    frame #14: 0x0000000100a0c1b4 test_arena_constraints`void tbb::detail::d1::partition_type_base<tbb::detail::d1::auto_partition_type>::execute<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x0000000101103a68, start=0x0000000101103a00, range=0x0000000101103a40, ed=0x00000001010d9808)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:288:16
    frame #15: 0x0000000100a0be40 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::execute(this=0x0000000101103a00, ed=0x00000001010d9808) at parallel_for.h:172:18
    frame #16: 0x0000000100e8129c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<false, tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 884
    frame #17: 0x0000000100e77a4c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 80
    frame #18: 0x0000000100e772e8 libtbb_debug.12.6.dylib`tbb::detail::r1::arena::process(tbb::detail::r1::thread_data&) + 484
    frame #19: 0x0000000100e965fc libtbb_debug.12.6.dylib`tbb::detail::r1::market::process(rml::job&) + 100
    frame #20: 0x0000000100e9f014 libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::run() + 120
    frame #21: 0x0000000100e9ef7c libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::thread_routine(void*) + 44
    frame #22: 0x00000001a2709240 libsystem_pthread.dylib`_pthread_start + 148
(lldb) thread select 7
* thread #7
    frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
libsystem_kernel.dylib`__semwait_signal:
->  0x1a26d0ebc <+8>:  b.lo   0x1a26d0edc               ; <+40>
    0x1a26d0ec0 <+12>: pacibsp
    0x1a26d0ec4 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1a26d0ec8 <+20>: mov    x29, sp
(lldb) bt
* thread #7
  * frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
    frame #1: 0x00000001a25dbd88 libsystem_c.dylib`nanosleep + 216
    frame #2: 0x00000001a2664820 libc++.1.dylib`std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > const&) + 84
    frame #3: 0x0000000100a0ded8 test_arena_constraints`void std::__1::this_thread::sleep_for<long long, std::__1::ratio<1l, 1000000l> >(__d=0x0000000170c569f0) at thread:386:9
    frame #4: 0x0000000100a0ddd0 test_arena_constraints`void utils::SpinWaitWhile<void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'()>(pred=(anonymous class) @ 0x0000000170c56a00) at spin_barrier.h:49:13
    frame #5: 0x0000000100a0dd30 test_arena_constraints`void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(location=0x000000016f412730, comp=(anonymous class) @ 0x0000000170c56a38) at spin_barrier.h:60:5
    frame #6: 0x0000000100a0dcf4 test_arena_constraints`void utils::SpinWaitWhileEq<unsigned long, unsigned long>(location=0x000000016f412730, value=0) at spin_barrier.h:67:5
    frame #7: 0x0000000100a0dc10 test_arena_constraints`void utils::WaitWhileEq::operator(this=0x0000000170c56b1f, location=0x000000016f412730, value=0)<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long) const at spin_barrier.h:84:9
    frame #8: 0x0000000100a0da90 test_arena_constraints`bool utils::SpinBarrier::customWait<utils::WaitWhileEq, utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onWaitCallback=0x0000000170c56b1f, onOpenBarrierCallback=0x0000000170c56b47) at spin_barrier.h:140:13
    frame #9: 0x0000000100a0d9ac test_arena_constraints`bool utils::SpinBarrier::wait<utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onOpenBarrierCallback=0x0000000170c56b47) at spin_barrier.h:159:16
    frame #10: 0x0000000100a0d978 test_arena_constraints`utils::SpinBarrier::wait(this=0x000000016f412720) at spin_barrier.h:163:16
    frame #11: 0x0000000100a0d950 test_arena_constraints`DOCTEST_ANON_FUNC_38(this=0x000000010115bc58, (null)=0x000000010115bc40)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&)::operator()(tbb::detail::d1::blocked_range<unsigned long> const&) const at test_arena_constraints.cpp:133:33
    frame #12: 0x0000000100a0d388 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::run_body(this=0x000000010115bc00, r=0x000000010115bc40) at parallel_for.h:119:9
    frame #13: 0x0000000100a0c644 test_arena_constraints`void tbb::detail::d1::dynamic_grainsize_mode<tbb::detail::d1::adaptive_mode<tbb::detail::d1::auto_partition_type> >::work_balance<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010115bc68, start=0x000000010115bc00, range=0x000000010115bc40, ed=0x00000001010d9908)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:447:19
    frame #14: 0x0000000100a0c1b4 test_arena_constraints`void tbb::detail::d1::partition_type_base<tbb::detail::d1::auto_partition_type>::execute<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010115bc68, start=0x000000010115bc00, range=0x000000010115bc40, ed=0x00000001010d9908)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:288:16
    frame #15: 0x0000000100a0be40 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::execute(this=0x000000010115bc00, ed=0x00000001010d9908) at parallel_for.h:172:18
    frame #16: 0x0000000100e8129c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<false, tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 884
    frame #17: 0x0000000100e77a4c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 80
    frame #18: 0x0000000100e772e8 libtbb_debug.12.6.dylib`tbb::detail::r1::arena::process(tbb::detail::r1::thread_data&) + 484
    frame #19: 0x0000000100e965fc libtbb_debug.12.6.dylib`tbb::detail::r1::market::process(rml::job&) + 100
    frame #20: 0x0000000100e9f014 libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::run() + 120
    frame #21: 0x0000000100e9ef7c libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::thread_routine(void*) + 44
    frame #22: 0x00000001a2709240 libsystem_pthread.dylib`_pthread_start + 148
(lldb) thread select 8
* thread #8
    frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
libsystem_kernel.dylib`__semwait_signal:
->  0x1a26d0ebc <+8>:  b.lo   0x1a26d0edc               ; <+40>
    0x1a26d0ec0 <+12>: pacibsp
    0x1a26d0ec4 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1a26d0ec8 <+20>: mov    x29, sp
(lldb) bt
* thread #8
  * frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
    frame #1: 0x00000001a25dbd88 libsystem_c.dylib`nanosleep + 216
    frame #2: 0x00000001a2664820 libc++.1.dylib`std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > const&) + 84
    frame #3: 0x0000000100a0ded8 test_arena_constraints`void std::__1::this_thread::sleep_for<long long, std::__1::ratio<1l, 1000000l> >(__d=0x00000001710629f0) at thread:386:9
    frame #4: 0x0000000100a0ddd0 test_arena_constraints`void utils::SpinWaitWhile<void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'()>(pred=(anonymous class) @ 0x0000000171062a00) at spin_barrier.h:49:13
    frame #5: 0x0000000100a0dd30 test_arena_constraints`void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(location=0x000000016f412730, comp=(anonymous class) @ 0x0000000171062a38) at spin_barrier.h:60:5
    frame #6: 0x0000000100a0dcf4 test_arena_constraints`void utils::SpinWaitWhileEq<unsigned long, unsigned long>(location=0x000000016f412730, value=0) at spin_barrier.h:67:5
    frame #7: 0x0000000100a0dc10 test_arena_constraints`void utils::WaitWhileEq::operator(this=0x0000000171062b1f, location=0x000000016f412730, value=0)<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long) const at spin_barrier.h:84:9
    frame #8: 0x0000000100a0da90 test_arena_constraints`bool utils::SpinBarrier::customWait<utils::WaitWhileEq, utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onWaitCallback=0x0000000171062b1f, onOpenBarrierCallback=0x0000000171062b47) at spin_barrier.h:140:13
    frame #9: 0x0000000100a0d9ac test_arena_constraints`bool utils::SpinBarrier::wait<utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onOpenBarrierCallback=0x0000000171062b47) at spin_barrier.h:159:16
    frame #10: 0x0000000100a0d978 test_arena_constraints`utils::SpinBarrier::wait(this=0x000000016f412720) at spin_barrier.h:163:16
    frame #11: 0x0000000100a0d950 test_arena_constraints`DOCTEST_ANON_FUNC_38(this=0x0000000101143a58, (null)=0x0000000101143a40)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&)::operator()(tbb::detail::d1::blocked_range<unsigned long> const&) const at test_arena_constraints.cpp:133:33
    frame #12: 0x0000000100a0d388 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::run_body(this=0x0000000101143a00, r=0x0000000101143a40) at parallel_for.h:119:9
    frame #13: 0x0000000100a0c644 test_arena_constraints`void tbb::detail::d1::dynamic_grainsize_mode<tbb::detail::d1::adaptive_mode<tbb::detail::d1::auto_partition_type> >::work_balance<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x0000000101143a68, start=0x0000000101143a00, range=0x0000000101143a40, ed=0x00000001010d9a08)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:447:19
    frame #14: 0x0000000100a0c1b4 test_arena_constraints`void tbb::detail::d1::partition_type_base<tbb::detail::d1::auto_partition_type>::execute<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x0000000101143a68, start=0x0000000101143a00, range=0x0000000101143a40, ed=0x00000001010d9a08)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:288:16
    frame #15: 0x0000000100a0be40 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::execute(this=0x0000000101143a00, ed=0x00000001010d9a08) at parallel_for.h:172:18
    frame #16: 0x0000000100e8129c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<false, tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 884
    frame #17: 0x0000000100e77a4c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 80
    frame #18: 0x0000000100e772e8 libtbb_debug.12.6.dylib`tbb::detail::r1::arena::process(tbb::detail::r1::thread_data&) + 484
    frame #19: 0x0000000100e965fc libtbb_debug.12.6.dylib`tbb::detail::r1::market::process(rml::job&) + 100
    frame #20: 0x0000000100e9f014 libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::run() + 120
    frame #21: 0x0000000100e9ef7c libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::thread_routine(void*) + 44
    frame #22: 0x00000001a2709240 libsystem_pthread.dylib`_pthread_start + 148
(lldb) thread select 9
* thread #9
    frame #0: 0x00000001a26cd990 libsystem_kernel.dylib`semaphore_wait_trap + 8
libsystem_kernel.dylib`semaphore_wait_trap:
->  0x1a26cd990 <+8>: ret

libsystem_kernel.dylib`semaphore_wait_signal_trap:
    0x1a26cd994 <+0>: mov    x16, #-0x25
    0x1a26cd998 <+4>: svc    #0x80
    0x1a26cd99c <+8>: ret
(lldb) bt
* thread #9
  * frame #0: 0x00000001a26cd990 libsystem_kernel.dylib`semaphore_wait_trap + 8
    frame #1: 0x0000000100e742f4 libtbb_debug.12.6.dylib`tbb::detail::r1::binary_semaphore::P() + 32
    frame #2: 0x0000000100e9f69c libtbb_debug.12.6.dylib`tbb::detail::r1::rml::internal::thread_monitor::commit_wait(tbb::detail::r1::rml::internal::thread_monitor::cookie&) + 88
    frame #3: 0x0000000100e9f06c libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::run() + 208
    frame #4: 0x0000000100e9ef7c libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::thread_routine(void*) + 44
    frame #5: 0x00000001a2709240 libsystem_pthread.dylib`_pthread_start + 148
(lldb) thread select 10
* thread #10
    frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
libsystem_kernel.dylib`__semwait_signal:
->  0x1a26d0ebc <+8>:  b.lo   0x1a26d0edc               ; <+40>
    0x1a26d0ec0 <+12>: pacibsp
    0x1a26d0ec4 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1a26d0ec8 <+20>: mov    x29, sp
(lldb) bt
* thread #10
  * frame #0: 0x00000001a26d0ebc libsystem_kernel.dylib`__semwait_signal + 8
    frame #1: 0x00000001a25dbd88 libsystem_c.dylib`nanosleep + 216
    frame #2: 0x00000001a2664820 libc++.1.dylib`std::__1::this_thread::sleep_for(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> > const&) + 84
    frame #3: 0x0000000100a0ded8 test_arena_constraints`void std::__1::this_thread::sleep_for<long long, std::__1::ratio<1l, 1000000l> >(__d=0x000000017187a9f0) at thread:386:9
    frame #4: 0x0000000100a0ddd0 test_arena_constraints`void utils::SpinWaitWhile<void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'()>(pred=(anonymous class) @ 0x000000017187aa00) at spin_barrier.h:49:13
    frame #5: 0x0000000100a0dd30 test_arena_constraints`void utils::SpinWaitWhileCondition<unsigned long, void utils::SpinWaitWhileEq<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long)::'lambda'(unsigned long)>(location=0x000000016f412730, comp=(anonymous class) @ 0x000000017187aa38) at spin_barrier.h:60:5
    frame #6: 0x0000000100a0dcf4 test_arena_constraints`void utils::SpinWaitWhileEq<unsigned long, unsigned long>(location=0x000000016f412730, value=0) at spin_barrier.h:67:5
    frame #7: 0x0000000100a0dc10 test_arena_constraints`void utils::WaitWhileEq::operator(this=0x000000017187ab1f, location=0x000000016f412730, value=0)<unsigned long, unsigned long>(std::__1::atomic<unsigned long> const&, unsigned long) const at spin_barrier.h:84:9
    frame #8: 0x0000000100a0da90 test_arena_constraints`bool utils::SpinBarrier::customWait<utils::WaitWhileEq, utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onWaitCallback=0x000000017187ab1f, onOpenBarrierCallback=0x000000017187ab47) at spin_barrier.h:140:13
    frame #9: 0x0000000100a0d9ac test_arena_constraints`bool utils::SpinBarrier::wait<utils::SpinBarrier::DummyCallback>(this=0x000000016f412720, onOpenBarrierCallback=0x000000017187ab47) at spin_barrier.h:159:16
    frame #10: 0x0000000100a0d978 test_arena_constraints`utils::SpinBarrier::wait(this=0x000000016f412720) at spin_barrier.h:163:16
    frame #11: 0x0000000100a0d950 test_arena_constraints`DOCTEST_ANON_FUNC_38(this=0x000000010115ba58, (null)=0x000000010115ba40)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&)::operator()(tbb::detail::d1::blocked_range<unsigned long> const&) const at test_arena_constraints.cpp:133:33
    frame #12: 0x0000000100a0d388 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::run_body(this=0x000000010115ba00, r=0x000000010115ba40) at parallel_for.h:119:9
    frame #13: 0x0000000100a0c644 test_arena_constraints`void tbb::detail::d1::dynamic_grainsize_mode<tbb::detail::d1::adaptive_mode<tbb::detail::d1::auto_partition_type> >::work_balance<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010115ba68, start=0x000000010115ba00, range=0x000000010115ba40, ed=0x00000001010d9b08)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:447:19
    frame #14: 0x0000000100a0c1b4 test_arena_constraints`void tbb::detail::d1::partition_type_base<tbb::detail::d1::auto_partition_type>::execute<tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38(this=0x000000010115ba68, start=0x000000010115ba00, range=0x000000010115ba40, ed=0x00000001010d9b08)::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>, tbb::detail::d1::blocked_range<unsigned long> >(tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>&, tbb::detail::d1::blocked_range<unsigned long>&, tbb::detail::d1::execution_data&) at partitioner.h:288:16
    frame #15: 0x0000000100a0be40 test_arena_constraints`tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<unsigned long>, DOCTEST_ANON_FUNC_38()::$_6::operator()() const::'lambda'(tbb::detail::d1::blocked_range<unsigned long> const&), tbb::detail::d1::auto_partitioner const>::execute(this=0x000000010115ba00, ed=0x00000001010d9b08) at parallel_for.h:172:18
    frame #16: 0x0000000100e8129c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<false, tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 884
    frame #17: 0x0000000100e77a4c libtbb_debug.12.6.dylib`tbb::detail::d1::task* tbb::detail::r1::task_dispatcher::local_wait_for_all<tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&) + 80
    frame #18: 0x0000000100e772e8 libtbb_debug.12.6.dylib`tbb::detail::r1::arena::process(tbb::detail::r1::thread_data&) + 484
    frame #19: 0x0000000100e965fc libtbb_debug.12.6.dylib`tbb::detail::r1::market::process(rml::job&) + 100
    frame #20: 0x0000000100e9f014 libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::run() + 120
    frame #21: 0x0000000100e9ef7c libtbb_debug.12.6.dylib`tbb::detail::r1::rml::private_worker::thread_routine(void*) + 44
    frame #22: 0x00000001a2709240 libsystem_pthread.dylib`_pthread_start + 148
(lldb)

About this issue

  • Original URL
  • State: open
  • Created 2 years ago
  • Comments: 17 (17 by maintainers)

Most upvoted comments

Hi @phprus, the problem that Alex did not write all details that were behind the scene. It was several month ago (so I might be mistaken in this case), there is a root cause: They way oneTBB share the tasks across threads is some sort of weak ordering. I am talking about the task spawn and signal propagation inside the internal arena. And while it is ok on arches like x86 it might lead to problems (for example hangs) on the weaker memory models (Apple M1 for example). Also it will reproduce vary rarely and only I think in a cases when we use for example barriers (It is no matter which barrier oneTBB one or standard one). And as Alex mentioned: “We are thinking about better approach for testing.” we did not come to any results yet.