man-group / ArcticDB

ArcticDB is a high performance, serverless DataFrame database built for the Python Data Science ecosystem.
http://arcticdb.io
Other
1.44k stars 93 forks source link

conda-build: undefined behaviors detected with `libcxx v18.1.8` on macOS #1724

Open jjerphan opened 1 month ago

jjerphan commented 1 month ago

First observed here. Logs for posterity:

The following tests FAILED:
      1 - Async.SinkBasic (ILLEGAL)
      2 - Async.DeDupTest (ILLEGAL)
     23 - Segment.RoundtripTimeseriesDescriptorWriteToBufferV2 (ILLEGAL)
     27 - SegmentHeader.SerializeUnserializeV1 (ILLEGAL)
    323 - SparseTestStore.Compact (ILLEGAL)
    324 - SparseTestStore.CompactWithStrings (ILLEGAL)
    388 - VersionStoreTest.CompactIncompleteDynamicSchema (ILLEGAL)
    408 - TestEmbedded/SimpleTestSuite.Example/lmdb  # GetParam() = 24-byte object <08-6C 6D-64 62-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00> (ILLEGAL)
    412 - AllStoragesCommonTests/GenericStorageTest.WriteDuplicateKeyException/(ptr = 0x6000023e8018, value = 8-byte object <90-1F 99-0A 01-00 00-00>) (ILLEGAL)

Also observed on the feedstock with https://github.com/conda-forge/arcticdb-feedstock/pull/249.

Currently solved by using libcxx<18 (see https://github.com/man-group/ArcticDB/pull/1680).


Other projects are having a similar problem with this build (see https://github.com/conda-forge/libcxx-feedstock/issues/162)

ianthomas23 commented 1 month ago

I can reproduce this on an M3 mac using master branch environment_unix.yml but with libcxx unconstrained. I needed to manually change the use of posix_memalign rather than memalign (issue #1322).

For me the failed tests are:

The following tests FAILED:
      1 - Async.SinkBasic (SIGTRAP)
      2 - Async.DeDupTest (SIGTRAP)
     25 - Segment.RoundtripTimeseriesDescriptorWriteToBufferV2 (SIGTRAP)
     29 - SegmentHeader.SerializeUnserializeV1 (SIGTRAP)
    208 - LMDBStorageTestBase.WriteMapFullError (Failed)
    409 - TestEmbedded/SimpleTestSuite.Example/lmdb  # GetParam() = 24-byte object <6C-6D 64-62 00-00 00-00 47-00 00-00 00-00 00-00 48-00 00-00 00-00 00-04> (SIGTRAP)
    413 - AllStoragesCommonTests/GenericStorageTest.WriteDuplicateKeyException/(ptr = 0x6000018aa7d8, value = 8-byte object <50-EB AC-02 01-00 00-00>) (SIGTRAP)

so similar to but not identical to above.

Running these individually under lldb gives me for most of the failures:

$ lldb ./arcticdb/test_unit_arcticdb
(lldb) run --gtest_filter=Async.SinkBasic
Process 27309 launched: '/Users/iant/github/ArcticDB/cpp/out/darwin-conda-debug-build/arcticdb/test_unit_arcticdb' (arm64)
Note: Google Test filter = Async.SinkBasic
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from Async
[ RUN      ] Async.SinkBasic
Process 27309 stopped
* thread #5, name = 'IOPool0', stop reason = EXC_BREAKPOINT (code=1, subcode=0x100546c40)
    frame #0: 0x0000000100546c40 test_unit_arcticdb`arcticdb::SegmentHeader::serialize_to_bytes(unsigned char*, std::__1::optional<unsigned long>) const [inlined] std::__1::optional<unsigned long>::operator*[abi:fe180100](this= Has Value=false ) & at optional:806:5
   803    }
   804  
   805    _LIBCPP_HIDE_FROM_ABI constexpr value_type& operator*() & noexcept {
-> 806      _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(this->has_value(), "optional operator* called on a disengaged value");
   807      return this->__get();
   808    }
   809  
Target 0: (test_unit_arcticdb) stopped.

The one exception is SegmentHeader.SerializeUnserializeV1:

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BREAKPOINT (code=1, subcode=0x100540774)
    frame #0: 0x0000000100540774 test_unit_arcticdb`arcticdb::copy_encoded_field_to_proto(arcticdb::EncodedFieldImpl const&, arcticc::pb2::encoding_pb2::EncodedField&) [inlined] std::__1::array<arcticdb::Block, 1ul>::operator[][abi:fe180100](this=<unavailable>, __n=<unavailable>) const at array:238:5
   235      return __elems_[__n];
   236    }
   237    _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const_reference operator[](size_type __n) const _NOEXCEPT {
-> 238      _LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(__n < _Size, "out-of-bounds access in std::array<T, N>");
   239      return __elems_[__n];
   240    }

Example backtraces for SegmentHeader.SerializeUnserializeV1:

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BREAKPOINT (code=1, subcode=0x100540774)
  * frame #0: 0x0000000100540774 test_unit_arcticdb`arcticdb::copy_encoded_field_to_proto(arcticdb::EncodedFieldImpl const&, arcticc::pb2::encoding_pb2::EncodedField&) [inlined] std::__1::array<arcticdb::Block, 1ul>::operator[][abi:fe180100](this=<unavailable>, __n=<unavailable>) const at array:238:5
    frame #1: 0x0000000100540774 test_unit_arcticdb`arcticdb::copy_encoded_field_to_proto(arcticdb::EncodedFieldImpl const&, arcticc::pb2::encoding_pb2::EncodedField&) [inlined] arcticdb::EncodedFieldImpl::shapes(this=0x0000000156053480, n=1) const at encoded_field.hpp:312:60
    frame #2: 0x000000010054075c test_unit_arcticdb`arcticdb::copy_encoded_field_to_proto(input=0x0000000156053480, output=<unavailable>) at protobuf_mappings.cpp:93:40
    frame #3: 0x00000001005411d4 test_unit_arcticdb`arcticdb::generate_v1_header(header=0x000000016fdfdbf0, desc=0x000000016fdfdb50) at segment.cpp:25:9
    frame #4: 0x000000010009d808 test_unit_arcticdb`SegmentHeader_SerializeUnserializeV1_Test::TestBody(this=<unavailable>) at test_segment_header.cpp:74:18
    frame #5: 0x0000000105d05f64 libgtest.1.15.0.dylib`void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) + 96
    frame #6: 0x0000000105d05eb0 libgtest.1.15.0.dylib`testing::Test::Run() + 800
    frame #7: 0x0000000105d074b4 libgtest.1.15.0.dylib`testing::TestInfo::Run() + 952
    frame #8: 0x0000000105d0877c libgtest.1.15.0.dylib`testing::TestSuite::Run() + 1004
    frame #9: 0x0000000105d1a950 libgtest.1.15.0.dylib`testing::internal::UnitTestImpl::RunAllTests() + 1592
    frame #10: 0x0000000105d1a0d4 libgtest.1.15.0.dylib`bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) + 96
    frame #11: 0x0000000105d1a024 libgtest.1.15.0.dylib`testing::UnitTest::Run() + 140
    frame #12: 0x0000000100332790 test_unit_arcticdb`main [inlined] RUN_ALL_TESTS() at gtest.h:2334:73
    frame #13: 0x0000000100332788 test_unit_arcticdb`main(argc=1, argv=<unavailable>) at gtest_main.cpp:15:16
    frame #14: 0x0000000191ebe0e0 dyld`start + 2360

and Async.SinkBasic:

* thread #5, name = 'IOPool0', stop reason = EXC_BREAKPOINT (code=1, subcode=0x100546c40)
  * frame #0: 0x0000000100546c40 test_unit_arcticdb`arcticdb::SegmentHeader::serialize_to_bytes(unsigned char*, std::__1::optional<unsigned long>) const [inlined] std::__1::optional<unsigned long>::operator*[abi:fe180100](this= Has Value=false ) & at optional:806:5
    frame #1: 0x0000000100546c40 test_unit_arcticdb`arcticdb::SegmentHeader::serialize_to_bytes(this=0x00000001238059a0, dst=<unavailable>, expected_bytes= Has Value=false ) const at segment_header.cpp:31:139
    frame #2: 0x00000001005440a8 test_unit_arcticdb`arcticdb::Segment::write_to(unsigned char*) [inlined] arcticdb::Segment::write_binary_header(this=0x00000001238059a0, dst="\xff\xff\xff") const at segment.cpp:253:34
    frame #3: 0x0000000100544094 test_unit_arcticdb`arcticdb::Segment::write_to(this=0x00000001238059a0, dst="\xff\xff\xff") at segment.cpp:341:23
    frame #4: 0x0000000101809b44 test_unit_arcticdb`arcticdb::storage::lmdb::RealLmdbClient::write(this=<unavailable>, (null)=<unavailable>, path=<unavailable>, seg=0x00000001238059a0, txn=0x000000017002a3b8, dbi=0x000060000123e760, overwrite_flag=16) at lmdb_real_client.cpp:57:9
    frame #5: 0x000000010180ab9c test_unit_arcticdb`arcticdb::storage::lmdb::LmdbStorage::do_write_internal(arcticdb::Composite<arcticdb::storage::KeySegmentPair>&&, lmdb::txn&) at lmdb_storage.cpp:81:31
    frame #6: 0x000000010180aa8c test_unit_arcticdb`arcticdb::storage::lmdb::LmdbStorage::do_write_internal(arcticdb::Composite<arcticdb::storage::KeySegmentPair>&&, lmdb::txn&) [inlined] void folly::gen::GenImpl<folly::gen::Group<arcticdb::entity::KeyType, arcticdb::storage::KeySegmentPair>&&, folly::gen::detail::GroupBy<arcticdb::storage::lmdb::LmdbStorage::do_write_internal(arcticdb::Composite<arcticdb::storage::KeySegmentPair>&&, lmdb::txn&)::$_0>::Generator<arcticdb::storage::KeySegmentPair const&&, folly::gen::detail::Map<folly::gen::Move>::Generator<arcticdb::storage::KeySegmentPair const&, folly::gen::detail::CopiedSource<arcticdb::storage::KeySegmentPair, std::__1::vector<arcticdb::storage::KeySegmentPair, std::__1::allocator<arcticdb::storage::KeySegmentPair>>>, arcticdb::storage::KeySegmentPair const&&>, arcticdb::storage::KeySegmentPair, arcticdb::entity::KeyType, arcticdb::entity::KeyType>>::foreach<arcticdb::storage::lmdb::LmdbStorage::do_write_internal(this=<unavailable>, value=0x000000017002a268)::$_1>(arcticdb::storage::lmdb::LmdbStorage::do_write_internal(arcticdb::Composite<arcticdb::storage::KeySegmentPair>&&, lmdb::txn&)::$_1&&) const::'lambda'(folly::gen::Group<arcticdb::entity::KeyType, arcticdb::storage::KeySegmentPair>&&)::operator()(folly::gen::Group<arcticdb::entity::KeyType, arcticdb::storage::KeySegmentPair>&&) const at Core-inl.h:173:7
    frame #7: 0x000000010180aa8c test_unit_arcticdb`arcticdb::storage::lmdb::LmdbStorage::do_write_internal(arcticdb::Composite<arcticdb::storage::KeySegmentPair>&&, lmdb::txn&) at Base-inl.h:1164:14
    frame #8: 0x000000010180aa14 test_unit_arcticdb`arcticdb::storage::lmdb::LmdbStorage::do_write_internal(arcticdb::Composite<arcticdb::storage::KeySegmentPair>&&, lmdb::txn&) [inlined] void folly::gen::GenImpl<folly::gen::Group<arcticdb::entity::KeyType, arcticdb::storage::KeySegmentPair>&&, folly::gen::detail::GroupBy<arcticdb::storage::lmdb::LmdbStorage::do_write_internal(arcticdb::Composite<arcticdb::storage::KeySegmentPair>&&, lmdb::txn&)::$_0>::Generator<arcticdb::storage::KeySegmentPair const&&, folly::gen::detail::Map<folly::gen::Move>::Generator<arcticdb::storage::KeySegmentPair const&, folly::gen::detail::CopiedSource<arcticdb::storage::KeySegmentPair, std::__1::vector<arcticdb::storage::KeySegmentPair, std::__1::allocator<arcticdb::storage::KeySegmentPair>>>, arcticdb::storage::KeySegmentPair const&&>, arcticdb::storage::KeySegmentPair, arcticdb::entity::KeyType, arcticdb::entity::KeyType>>::foreach<arcticdb::storage::lmdb::LmdbStorage::do_write_internal(arcticdb::Composite<arcticdb::storage::KeySegmentPair>&&, lmdb::txn&)::$_1>(this=0x000000017002a300, body=<unavailable>) const at Core-inl.h:171:18
    frame #9: 0x000000010180aa14 test_unit_arcticdb`arcticdb::storage::lmdb::LmdbStorage::do_write_internal(this=0x0000600002f304c8, kvs=<unavailable>, txn=0x000000017002a3b8) at lmdb_storage.cpp:68:65
    frame #10: 0x000000010180b174 test_unit_arcticdb`arcticdb::storage::lmdb::LmdbStorage::do_write(this=0x0000600002f304c8, kvs=0x000000017002a408) at lmdb_storage.cpp:100:5
    frame #11: 0x00000001000283d0 test_unit_arcticdb`arcticdb::async::WriteSegmentTask::operator()(this=0x0000600002134508, key_seg=0x0000600002134588) const at tasks.hpp:180:15
    frame #12: 0x0000000100060070 test_unit_arcticdb`folly::Try<std::__1::variant<arcticdb::entity::AtomKeyImpl, arcticdb::entity::RefKey>> folly::futures::detail::InvokeResultWrapperBase<folly::Try<std::__1::variant<arcticdb::entity::AtomKeyImpl, arcticdb::entity::RefKey>>>::wrapResult<auto folly::futures::detail::wrapInvoke<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>(folly::Try<arcticdb::storage::KeySegmentPair>&&, arcticdb::async::WriteSegmentTask&&)::'lambda'()>(arcticdb::storage::KeySegmentPair) [inlined] auto folly::futures::detail::wrapInvoke<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>(this=<unavailable>)::'lambda'()::operator()() const at Future-inl.h:93:12
    frame #13: 0x0000000100060058 test_unit_arcticdb`folly::Try<std::__1::variant<arcticdb::entity::AtomKeyImpl, arcticdb::entity::RefKey>> folly::futures::detail::InvokeResultWrapperBase<folly::Try<std::__1::variant<arcticdb::entity::AtomKeyImpl, arcticdb::entity::RefKey>>>::wrapResult<auto folly::futures::detail::wrapInvoke<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>(folly::Try<arcticdb::storage::KeySegmentPair>&&, arcticdb::async::WriteSegmentTask&&)::'lambda'()>(fn=<unavailable>) at Future-inl.h:68:14
    frame #14: 0x000000010005ffa4 test_unit_arcticdb`std::__1::enable_if<isTry<folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::value, folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::type folly::makeTryWith<std::__1::enable_if<!folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::ReturnsFuture::value, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::Return>::type folly::futures::detail::FutureBase<arcticdb::storage::KeySegmentPair>::thenImplementation<folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>>(arcticdb::async::WriteSegmentTask&&, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>, folly::futures::detail::InlineContinuation)::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::operator()(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::'lambda'()>(arcticdb::async::WriteSegmentTask&&) [inlined] auto folly::futures::detail::wrapInvoke<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>(t=0x0000600002134580, f=0x0000600002134508) at Future-inl.h:103:10
    frame #15: 0x000000010005ff64 test_unit_arcticdb`std::__1::enable_if<isTry<folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::value, folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::type folly::makeTryWith<std::__1::enable_if<!folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::ReturnsFuture::value, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::Return>::type folly::futures::detail::FutureBase<arcticdb::storage::KeySegmentPair>::thenImplementation<folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>>(arcticdb::async::WriteSegmentTask&&, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>, folly::futures::detail::InlineContinuation)::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::operator()(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::'lambda'()>(arcticdb::async::WriteSegmentTask&&) [inlined] folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(this=0x0000600002134508, (null)=<unavailable>, t=0x0000600002134580) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::operator()(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&) at Future-inl.h:988:12
    frame #16: 0x000000010005ff64 test_unit_arcticdb`std::__1::enable_if<isTry<folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::value, folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::type folly::makeTryWith<std::__1::enable_if<!folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::ReturnsFuture::value, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::Return>::type folly::futures::detail::FutureBase<arcticdb::storage::KeySegmentPair>::thenImplementation<folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>>(arcticdb::async::WriteSegmentTask&&, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>, folly::futures::detail::InlineContinuation)::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::operator()(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::'lambda'()>(arcticdb::async::WriteSegmentTask&&) [inlined] auto folly::futures::detail::CoreCallbackState<std::__1::variant<arcticdb::entity::AtomKeyImpl, arcticdb::entity::RefKey>, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)>::invoke<folly::Executor::KeepAlive<folly::Executor>, folly::Try<arcticdb::storage::KeySegmentPair>>(this=0x0000600002134508, args=<unavailable>, args=0x0000600002134580) at Future-inl.h:139:12
    frame #17: 0x000000010005ff58 test_unit_arcticdb`std::__1::enable_if<isTry<folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::value, folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::type folly::makeTryWith<std::__1::enable_if<!folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::ReturnsFuture::value, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::Return>::type folly::futures::detail::FutureBase<arcticdb::storage::KeySegmentPair>::thenImplementation<folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>>(arcticdb::async::WriteSegmentTask&&, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>, folly::futures::detail::InlineContinuation)::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::operator()(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::'lambda'()>(arcticdb::async::WriteSegmentTask&&) [inlined] decltype(auto) folly::futures::detail::detail_msvc_15_7_workaround::invoke<folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>, folly::futures::detail::CoreCallbackState<std::__1::variant<arcticdb::entity::AtomKeyImpl, arcticdb::entity::RefKey>, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)>, arcticdb::storage::KeySegmentPair, 0>((null)=<unavailable>, state=0x0000600002134508, ka=<unavailable>, t=0x0000600002134580) at Future-inl.h:331:16
    frame #18: 0x000000010005ff58 test_unit_arcticdb`std::__1::enable_if<isTry<folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::value, folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::type folly::makeTryWith<std::__1::enable_if<!folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::ReturnsFuture::value, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::Return>::type folly::futures::detail::FutureBase<arcticdb::storage::KeySegmentPair>::thenImplementation<folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>>(arcticdb::async::WriteSegmentTask&&, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>, folly::futures::detail::InlineContinuation)::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::operator()(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::'lambda'()>(arcticdb::async::WriteSegmentTask&&) [inlined] std::__1::enable_if<!folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::ReturnsFuture::value, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::Return>::type folly::futures::detail::FutureBase<arcticdb::storage::KeySegmentPair>::thenImplementation<folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(this=<unavailable>) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>>(arcticdb::async::WriteSegmentTask&&, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>, folly::futures::detail::InlineContinuation)::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::operator()(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::'lambda'()::operator()() const at Future-inl.h:378:33
    frame #19: 0x000000010005ff48 test_unit_arcticdb`std::__1::enable_if<isTry<folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::value, folly::invoke_detail::traits<arcticdb::async::WriteSegmentTask>::result<>>::type folly::makeTryWith<std::__1::enable_if<!folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::ReturnsFuture::value, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::Return>::type folly::futures::detail::FutureBase<arcticdb::storage::KeySegmentPair>::thenImplementation<folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>>(arcticdb::async::WriteSegmentTask&&, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>, folly::futures::detail::InlineContinuation)::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::operator()(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::'lambda'()>(f=0x000000017002a5d0) at Try-inl.h:285:12
    frame #20: 0x000000010005fd04 test_unit_arcticdb`std::__1::enable_if<!folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::ReturnsFuture::value, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::Return>::type folly::futures::detail::FutureBase<arcticdb::storage::KeySegmentPair>::thenImplementation<folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(this=0x0000600002134508, ka=0x000000017002a820, t=0x0000600002134580) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>>(arcticdb::async::WriteSegmentTask&&, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>, folly::futures::detail::InlineContinuation)::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)::operator()(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&) at Future-inl.h:377:48
    frame #21: 0x000000010005fc00 test_unit_arcticdb`void folly::futures::detail::Core<arcticdb::storage::KeySegmentPair>::setCallback<std::__1::enable_if<!folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(this=0x0000600002134508, coreBase=0x0000600002134500, ka=0x000000017002a820, ew=<unavailable>) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::ReturnsFuture::value, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>::Return>::type folly::futures::detail::FutureBase<arcticdb::storage::KeySegmentPair>::thenImplementation<folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>>(arcticdb::async::WriteSegmentTask&&, folly::futures::detail::tryExecutorCallableResult<arcticdb::storage::KeySegmentPair, folly::Future<folly::futures::detail::valueCallableResult<arcticdb::storage::KeySegmentPair, arcticdb::async::WriteSegmentTask>::value_type> folly::Future<arcticdb::storage::KeySegmentPair>::thenValue<arcticdb::async::WriteSegmentTask>(arcticdb::async::WriteSegmentTask&&) &&::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&), void>, folly::futures::detail::InlineContinuation)::'lambda'(folly::Executor::KeepAlive<folly::Executor>&&, folly::Try<arcticdb::storage::KeySegmentPair>&&)>(arcticdb::async::WriteSegmentTask&&, std::__1::shared_ptr<folly::RequestContext>&&, folly::futures::detail::InlineContinuation)::'lambda'(folly::futures::detail::CoreBase&, folly::Executor::KeepAlive<folly::Executor>&&, folly::exception_wrapper*)::operator()(folly::futures::detail::CoreBase&, folly::Executor::KeepAlive<folly::Executor>&&, folly::exception_wrapper*) at Core.h:629:7
    frame #22: 0x00000001069e94f0 libfolly.0.58.0-dev.dylib`folly::futures::detail::CoreBase::doCallback(folly::Executor::KeepAlive<folly::Executor>&&, folly::futures::detail::State)::$_0::operator()(folly::Executor::KeepAlive<folly::Executor>&&) + 88
    frame #23: 0x0000000106970e7c libfolly.0.58.0-dev.dylib`folly::ThreadPoolExecutor::runTask(std::__1::shared_ptr<folly::ThreadPoolExecutor::Thread> const&, folly::ThreadPoolExecutor::Task&&) + 304
    frame #24: 0x00000001069650b4 libfolly.0.58.0-dev.dylib`void folly::detail::function::FunctionTraits<void ()>::callBig<folly::IOThreadPoolExecutor::add(folly::Function<void ()>, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l>>, folly::Function<void ()>)::$_0>(folly::detail::function::Data&) + 76
    frame #25: 0x0000000106a2d9d0 libfolly.0.58.0-dev.dylib`folly::AtomicNotificationQueueTaskStatus folly::detail::invokeConsumerWithTask<folly::Function<void ()>, folly::EventBase::FuncRunner&, void, void, void>(folly::EventBase::FuncRunner&, folly::Function<void ()>&&, std::__1::shared_ptr<folly::RequestContext>&&) + 104
    frame #26: 0x0000000106a2d754 libfolly.0.58.0-dev.dylib`bool folly::AtomicNotificationQueue<folly::Function<void ()>>::drive<folly::EventBase::FuncRunner&>(folly::EventBase::FuncRunner&) + 348
    frame #27: 0x0000000106a2fe04 libfolly.0.58.0-dev.dylib`folly::EventBaseAtomicNotificationQueue<folly::Function<void ()>, folly::EventBase::FuncRunner>::execute() + 48
    frame #28: 0x0000000106a31ff0 libfolly.0.58.0-dev.dylib`non-virtual thunk to folly::EventBaseAtomicNotificationQueue<folly::Function<void ()>, folly::EventBase::FuncRunner>::handlerReady(unsigned short) + 16
    frame #29: 0x0000000106a36a38 libfolly.0.58.0-dev.dylib`folly::EventHandler::libeventCallback(int, short, void*) + 116
    frame #30: 0x0000000107244518 libevent-2.1.7.dylib`event_process_active_single_queue + 1636
    frame #31: 0x00000001072409a0 libevent-2.1.7.dylib`event_base_loop + 1620
    frame #32: 0x0000000106a2f33c libfolly.0.58.0-dev.dylib`folly::EventBase::loopMain(int, bool) + 340
    frame #33: 0x0000000106a2eb9c libfolly.0.58.0-dev.dylib`folly::EventBase::loop() + 112
    frame #34: 0x0000000106a303c4 libfolly.0.58.0-dev.dylib`folly::EventBase::loopForever() + 60
    frame #35: 0x0000000106963688 libfolly.0.58.0-dev.dylib`folly::IOThreadPoolExecutor::threadRun(std::__1::shared_ptr<folly::ThreadPoolExecutor::Thread>) + 412
    frame #36: 0x0000000106971bcc libfolly.0.58.0-dev.dylib`std::__1::__bind_return<void (folly::ThreadPoolExecutor::*)(std::__1::shared_ptr<folly::ThreadPoolExecutor::Thread>), std::__1::tuple<folly::ThreadPoolExecutor*, std::__1::shared_ptr<folly::ThreadPoolExecutor::Thread>>, std::__1::tuple<>, __is_valid_bind_return<void (folly::ThreadPoolExecutor::*)(std::__1::shared_ptr<folly::ThreadPoolExecutor::Thread>), std::__1::tuple<folly::ThreadPoolExecutor*, std::__1::shared_ptr<folly::ThreadPoolExecutor::Thread>>, std::__1::tuple<>>::value>::type std::__1::__bind<void (folly::ThreadPoolExecutor::*)(std::__1::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*, std::__1::shared_ptr<folly::ThreadPoolExecutor::Thread>&>::operator()[abi:v160006]<>() + 92
    frame #37: 0x0000000100019ae0 test_unit_arcticdb`void* std::__1::__thread_proxy[abi:fe180100]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>>(void*) [inlined] folly::detail::function::FunctionTraits<void ()>::operator()(this=0x0000600003438008) at Function.h:374:12
    frame #38: 0x0000000100019ad4 test_unit_arcticdb`void* std::__1::__thread_proxy[abi:fe180100]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>>(void*) [inlined] folly::NamedThreadFactory::newThread(this=0x0000600003438008)>&&)::'lambda'()::operator()() at NamedThreadFactory.h:40:11
    frame #39: 0x0000000100019ad4 test_unit_arcticdb`void* std::__1::__thread_proxy[abi:fe180100]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>>(void*) [inlined] decltype(std::declval<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>()()) std::__1::__invoke[abi:fe180100]<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>(__f=0x0000600003438008) at invoke.h:344:25
    frame #40: 0x0000000100019ad4 test_unit_arcticdb`void* std::__1::__thread_proxy[abi:fe180100]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>>(void*) [inlined] void std::__1::__thread_execute[abi:fe180100]<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>(__t=size=2, (null)=<unavailable>) at thread.h:193:3
    frame #41: 0x0000000100019ab0 test_unit_arcticdb`void* std::__1::__thread_proxy[abi:fe180100]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::'lambda'()>>(__vp=0x0000600003438000) at thread.h:202:3
    frame #42: 0x0000000192246f94 libsystem_pthread.dylib`_pthread_start + 136

Full list of packages in micromamba environment:

  Name                       Version          Build                 Channel    
─────────────────────────────────────────────────────────────────────────────────
  asv                        0.6.3            py310hcf9f62a_1       conda-forge
  asv_runner                 0.2.1            pyhd8ed1ab_0          conda-forge
  attrs                      23.2.0           pyh71513ae_0          conda-forge
  aws-c-auth                 0.7.3            h109ad1a_1            conda-forge
  aws-c-cal                  0.6.1            hb406d48_1            conda-forge
  aws-c-common               0.9.0            hb547adb_0            conda-forge
  aws-c-compression          0.2.17           he70778a_2            conda-forge
  aws-c-event-stream         0.3.1            hcf14f3f_4            conda-forge
  aws-c-http                 0.7.11           hcbec455_4            conda-forge
  aws-c-io                   0.13.32          he8ad1d2_1            conda-forge
  aws-c-mqtt                 0.9.3            hf45dd20_1            conda-forge
  aws-c-s3                   0.3.14           hf0e1321_1            conda-forge
  aws-c-sdkutils             0.1.12           he70778a_1            conda-forge
  aws-checksums              0.1.17           he70778a_1            conda-forge
  aws-crt-cpp                0.21.0           hda227cd_5            conda-forge
  aws-sdk-cpp                1.10.57          h1190f42_19           conda-forge
  aws-xray-sdk               2.14.0           pyhd8ed1ab_0          conda-forge
  azure-core                 1.30.2           pyhd8ed1ab_0          conda-forge
  azure-core-cpp             1.13.0           hd01fc5c_0            conda-forge
  azure-identity             1.17.1           pyhd8ed1ab_0          conda-forge
  azure-identity-cpp         1.8.0            h13ea094_2            conda-forge
  azure-storage-blob         12.21.0          pyhd8ed1ab_0          conda-forge
  azure-storage-blobs-cpp    12.12.0          hfde595f_0            conda-forge
  azure-storage-common-cpp   12.7.0           hcf3b6fd_1            conda-forge
  backports.zoneinfo         0.2.1            py310hbe9552e_8       conda-forge
  benchmark                  1.8.5            h00cdb27_0            conda-forge
  bitmagic                   7.13.4           hce30654_0            conda-forge
  blinker                    1.8.2            pyhd8ed1ab_0          conda-forge
  boto3                      1.34.150         pyhd8ed1ab_0          conda-forge
  botocore                   1.34.150         pyge310_1234567_0     conda-forge
  brotli-python              1.0.9            py310h0f1eb42_9       conda-forge
  bzip2                      1.0.8            h99b78c6_7            conda-forge
  c-ares                     1.32.3           h99b78c6_0            conda-forge
  c-compiler                 1.7.0            h6aa9301_1            conda-forge
  ca-certificates            2024.7.4         hf0a4a13_0            conda-forge
  cairo                      1.18.0           hc6c324b_2            conda-forge
  cctools                    986              h4faf515_0            conda-forge
  cctools_osx-arm64          986              h62378fb_0            conda-forge
  certifi                    2024.7.4         pyhd8ed1ab_0          conda-forge
  cffi                       1.16.0           py310hdcd7c05_0       conda-forge
  charset-normalizer         3.3.2            pyhd8ed1ab_0          conda-forge
  clang                      16.0.6           default_h675cc0c_11   conda-forge
  clang-16                   16.0.6           default_h5c12605_11   conda-forge
  clang_impl_osx-arm64       16.0.6           hc421ffc_18           conda-forge
  clang_osx-arm64            16.0.6           h54d7cd3_18           conda-forge
  clangxx                    16.0.6           default_h675cc0c_11   conda-forge
  clangxx_impl_osx-arm64     16.0.6           hcd7bac0_18           conda-forge
  clangxx_osx-arm64          16.0.6           h54d7cd3_18           conda-forge
  click                      8.1.7            unix_pyh707e725_0     conda-forge
  cmake                      3.30.1           had79d8f_0            conda-forge
  colorama                   0.4.6            pyhd8ed1ab_0          conda-forge
  compiler-rt                16.0.6           h3808999_2            conda-forge
  compiler-rt_osx-arm64      16.0.6           h3808999_2            conda-forge
  cryptography               43.0.0           py310ha71c378_0       conda-forge
  cxx-compiler               1.7.0            h2ffa867_1            conda-forge
  cyrus-sasl                 2.1.27           h60b93bd_7            conda-forge
  distlib                    0.3.8            pyhd8ed1ab_0          conda-forge
  dnspython                  2.6.1            pyhd8ed1ab_1          conda-forge
  double-conversion          3.3.0            h13dd4ca_0            conda-forge
  doxygen                    1.10.0           h8fbad5d_0            conda-forge
  exceptiongroup             1.2.2            pyhd8ed1ab_0          conda-forge
  execnet                    2.1.1            pyhd8ed1ab_0          conda-forge
  expat                      2.6.2            hebf3989_0            conda-forge
  filelock                   3.15.4           pyhd8ed1ab_0          conda-forge
  flask                      3.0.3            pyhd8ed1ab_0          conda-forge
  flask-cors                 4.0.0            pyhd8ed1ab_0          conda-forge
  fmt                        10.2.1           h2ffa867_0            conda-forge
  folly                      2023.09.25.00    h4e9558f_1_jemalloc   conda-forge
  font-ttf-dejavu-sans-mono  2.37             hab24e00_0            conda-forge
  font-ttf-inconsolata       3.000            h77eed37_0            conda-forge
  font-ttf-source-code-pro   2.038            h77eed37_0            conda-forge
  font-ttf-ubuntu            0.83             h77eed37_2            conda-forge
  fontconfig                 2.14.2           h82840c6_0            conda-forge
  fonts-conda-ecosystem      1                0                     conda-forge
  fonts-conda-forge          1                0                     conda-forge
  freetype                   2.12.1           hadb7bae_2            conda-forge
  gettext                    0.22.5           h8fbad5d_2            conda-forge
  gettext-tools              0.22.5           h8fbad5d_2            conda-forge
  gflags                     2.2.2            hc88da5d_1004         conda-forge
  glog                       0.6.0            h6da1cb0_0            conda-forge
  grpcio                     1.54.3           py310h1253130_0       conda-forge
  grpcio-tools               1.54.2           py310h1253130_1       conda-forge
  gtest                      1.15.0           h420ef59_0            conda-forge
  h2                         4.1.0            pyhd8ed1ab_0          conda-forge
  hpack                      4.0.0            pyh9f0ad1d_0          conda-forge
  hyperframe                 6.0.1            pyhd8ed1ab_0          conda-forge
  hypothesis                 6.72.4           pyha770c72_0          conda-forge
  icu                        73.2             hc8870d7_0            conda-forge
  idna                       3.7              pyhd8ed1ab_0          conda-forge
  importlib-metadata         8.2.0            pyha770c72_0          conda-forge
  importlib_resources        6.4.0            pyhd8ed1ab_0          conda-forge
  iniconfig                  2.0.0            pyhd8ed1ab_0          conda-forge
  isodate                    0.6.1            pyhd8ed1ab_0          conda-forge
  itsdangerous               2.2.0            pyhd8ed1ab_0          conda-forge
  jemalloc-local             5.3.0            hb7217d7_0            conda-forge
  jinja2                     3.1.4            pyhd8ed1ab_0          conda-forge
  jmespath                   1.0.1            pyhd8ed1ab_0          conda-forge
  joserfc                    1.0.0            pyhd8ed1ab_0          conda-forge
  json5                      0.9.25           pyhd8ed1ab_0          conda-forge
  jsondiff                   2.0.0            pyhd8ed1ab_0          conda-forge
  jsonschema                 4.23.0           pyhd8ed1ab_0          conda-forge
  jsonschema-path            0.3.3            pyhd8ed1ab_0          conda-forge
  jsonschema-specifications  2023.12.1        pyhd8ed1ab_0          conda-forge
  krb5                       1.21.3           h237132a_0            conda-forge
  lazy-object-proxy          1.10.0           py310hd125d64_0       conda-forge
  ld64                       711              h634c8be_0            conda-forge
  ld64_osx-arm64             711              ha4bd21c_0            conda-forge
  libabseil                  20230125.3       cxx17_h13dd4ca_0      conda-forge
  libarrow                   12.0.1           h0b136c2_8_cpu        conda-forge
  libasprintf                0.22.5           h8fbad5d_2            conda-forge
  libasprintf-devel          0.22.5           h8fbad5d_2            conda-forge
  libblas                    3.9.0            23_osxarm64_openblas  conda-forge
  libboost                   1.82.0           h72cdd8a_6            conda-forge
  libboost-devel             1.82.0           hf450f58_6            conda-forge
  libboost-headers           1.82.0           hce30654_6            conda-forge
  libbrotlicommon            1.0.9            h1a8c8d9_9            conda-forge
  libbrotlidec               1.0.9            h1a8c8d9_9            conda-forge
  libbrotlienc               1.0.9            h1a8c8d9_9            conda-forge
  libbson                    1.23.2           hb7217d7_0            conda-forge
  libcblas                   3.9.0            23_osxarm64_openblas  conda-forge
  libclang-cpp16             16.0.6           default_h5c12605_11   conda-forge
  libcrc32c                  1.1.2            hbdafb3b_0            conda-forge
  libcurl                    8.9.0            hfd8ffcc_0            conda-forge
  libcxx                     18.1.8           h167917d_1            conda-forge
  libedit                    3.1.20191231     hc8eb9b7_2            conda-forge
  libev                      4.33             h93a5062_2            conda-forge
  libevent                   2.1.12           h2757513_1            conda-forge
  libexpat                   2.6.2            hebf3989_0            conda-forge
  libffi                     3.4.2            h3422bc3_5            conda-forge
  libgcrypt                  1.11.0           h99b78c6_1            conda-forge
  libgettextpo               0.22.5           h8fbad5d_2            conda-forge
  libgettextpo-devel         0.22.5           h8fbad5d_2            conda-forge
  libgfortran                5.0.0            13_2_0_hd922786_3     conda-forge
  libgfortran5               13.2.0           hf226fd6_3            conda-forge
  libgirepository            1.80.1           hee7aab5_0            conda-forge
  libglib                    2.80.3           h59d46d9_1            conda-forge
  libgoogle-cloud            2.12.0           he22f4c0_1            conda-forge
  libgpg-error               1.50             h3e7c369_0            conda-forge
  libgrpc                    1.54.3           h0a338ca_0            conda-forge
  libiconv                   1.17             h0d3ecfb_2            conda-forge
  libintl                    0.22.5           h8fbad5d_2            conda-forge
  libintl-devel              0.22.5           h8fbad5d_2            conda-forge
  libjemalloc-local          5.3.0            hb7217d7_0            conda-forge
  liblapack                  3.9.0            23_osxarm64_openblas  conda-forge
  libllvm16                  16.0.6           haab561b_3            conda-forge
  libmongoc                  1.23.2           hfc821f9_0            conda-forge
  libmongocxx                3.7.2            h13dd4ca_1            conda-forge
  libnghttp2                 1.58.0           ha4dd798_1            conda-forge
  libntlm                    1.4              h3422bc3_1002         conda-forge
  libopenblas                0.3.27           openmp_h517c56d_1     conda-forge
  libpng                     1.6.43           h091b4b1_0            conda-forge
  libprotobuf                3.21.12          ha614eb4_2            conda-forge
  libsecret                  0.18.8           h2b036b6_2            conda-forge
  libsodium                  1.0.18           h27ca646_1            conda-forge
  libsqlite                  3.46.0           hfb93653_0            conda-forge
  libssh2                    1.11.0           h7a5bd25_0            conda-forge
  libthrift                  0.18.1           ha061701_2            conda-forge
  libutf8proc                2.8.0            h1a8c8d9_0            conda-forge
  libuv                      1.48.0           h93a5062_0            conda-forge
  libxml2                    2.12.7           h9a80f22_3            conda-forge
  libzlib                    1.3.1            hfb2fe0b_1            conda-forge
  llvm-openmp                18.1.8           hde57baf_0            conda-forge
  llvm-tools                 16.0.6           haab561b_3            conda-forge
  lmdb                       0.9.22           h93a5062_1001         conda-forge
  lmdbxx                     0.9.14.0         h1995070_1            conda-forge
  lz4-c                      1.9.4            hb7217d7_0            conda-forge
  markupsafe                 2.1.5            py310hd125d64_0       conda-forge
  mock                       5.1.0            pyhd8ed1ab_0          conda-forge
  moto                       5.0.11           pyhd8ed1ab_0          conda-forge
  msal                       1.30.0           pyhd8ed1ab_0          conda-forge
  msal_extensions            1.1.0            py310hbe9552e_1       conda-forge
  msgpack-c                  6.0.0            ha614eb4_0            conda-forge
  msgpack-python             1.0.8            py310he1a186f_0       conda-forge
  ncurses                    6.5              hb89a1cb_0            conda-forge
  numpy                      1.26.4           py310hd45542a_0       conda-forge
  openapi-schema-validator   0.6.2            pyhd8ed1ab_0          conda-forge
  openapi-spec-validator     0.7.1            pyhd8ed1ab_0          conda-forge
  openssl                    3.3.1            hfb2fe0b_2            conda-forge
  orc                        1.9.0            ha98e9e8_1            conda-forge
  packaging                  24.1             pyhd8ed1ab_0          conda-forge
  pandas                     2.2.2            py310h2216879_1       conda-forge
  pathable                   0.4.3            pyhd8ed1ab_0          conda-forge
  pcre                       8.45             hbdafb3b_0            conda-forge
  pcre2                      10.44            h297a79d_0            conda-forge
  pip                        24.0             pyhd8ed1ab_0          conda-forge
  pixman                     0.43.4           hebf3989_0            conda-forge
  pkgutil-resolve-name       1.3.10           pyhd8ed1ab_1          conda-forge
  platformdirs               4.2.2            pyhd8ed1ab_0          conda-forge
  pluggy                     1.5.0            pyhd8ed1ab_0          conda-forge
  portalocker                2.10.1           py310hbe9552e_0       conda-forge
  prometheus-cpp             1.2.4            hd5cc21f_0            conda-forge
  protobuf                   4.21.12          py310h0f1eb42_0       conda-forge
  pyarrow                    12.0.1           py310hfbab16f_8_cpu   conda-forge
  pybind11                   2.10.4           py310h2887b22_0       conda-forge
  pybind11-global            2.10.4           py310h2887b22_0       conda-forge
  pycairo                    1.26.1           py310hbf1c8c6_0       conda-forge
  pycparser                  2.22             pyhd8ed1ab_0          conda-forge
  pygobject                  3.48.2           py310h5ffc74c_0       conda-forge
  pyjwt                      2.8.0            pyhd8ed1ab_1          conda-forge
  pymongo                    4.8.0            py310hcf9f62a_0       conda-forge
  pympler                    1.1              pyhd8ed1ab_0          conda-forge
  pyparsing                  3.1.2            pyhd8ed1ab_0          conda-forge
  pysocks                    1.7.1            pyha2e5f31_6          conda-forge
  pytest                     8.3.2            pyhd8ed1ab_0          conda-forge
  pytest-sugar               1.0.0            pyhd8ed1ab_0          conda-forge
  pytest-timeout             2.3.1            pyhd8ed1ab_1          conda-forge
  pytest-xdist               3.6.1            pyhd8ed1ab_0          conda-forge
  python                     3.10.14          h2469fbe_0_cpython    conda-forge
  python-dateutil            2.9.0            pyhd8ed1ab_0          conda-forge
  python-tzdata              2024.1           pyhd8ed1ab_0          conda-forge
  python_abi                 3.10             4_cp310               conda-forge
  pytz                       2024.1           pyhd8ed1ab_0          conda-forge
  pyyaml                     6.0.1            py310h2aa6e3c_1       conda-forge
  rapidcheck                 2023.4.13        h1995070_2            conda-forge
  re2                        2023.03.02       hc5e2d97_0            conda-forge
  readline                   8.2              h92ec313_1            conda-forge
  recycle                    6.0.0            h1995070_1            conda-forge
  referencing                0.35.1           pyhd8ed1ab_0          conda-forge
  requests                   2.32.3           pyhd8ed1ab_0          conda-forge
  responses                  0.25.3           pyhd8ed1ab_0          conda-forge
  rfc3339-validator          0.1.4            pyhd8ed1ab_0          conda-forge
  rhash                      1.4.4            hb547adb_0            conda-forge
  rpds-py                    0.19.1           py310h947b723_0       conda-forge
  s3transfer                 0.10.2           pyhd8ed1ab_0          conda-forge
  semimap                    1.0.0            h1995070_1            conda-forge
  setuptools                 71.0.4           pyhd8ed1ab_0          conda-forge
  sigtool                    0.1.3            h44b9a77_0            conda-forge
  six                        1.16.0           pyh6c4a22f_0          conda-forge
  snappy                     1.1.10           hd04f947_1            conda-forge
  sniffio                    1.3.1            pyhd8ed1ab_0          conda-forge
  sortedcontainers           2.4.0            pyhd8ed1ab_0          conda-forge
  spdlog                     1.14.1           h9c441cc_0            conda-forge
  tabulate                   0.9.0            pyhd8ed1ab_1          conda-forge
  tapi                       1100.0.11        he4954df_0            conda-forge
  termcolor                  2.4.0            pyhd8ed1ab_0          conda-forge
  tk                         8.6.13           h5083fa2_1            conda-forge
  tomli                      2.0.1            pyhd8ed1ab_0          conda-forge
  trustme                    1.1.0            pyhd8ed1ab_0          conda-forge
  types-pyyaml               6.0.12.20240724  pyhd8ed1ab_0          conda-forge
  typing-extensions          4.12.2           hd8ed1ab_0            conda-forge
  typing_extensions          4.12.2           pyha770c72_0          conda-forge
  tzdata                     2024a            h0c530f3_0            conda-forge
  unordered_dense            4.4.0            h2ffa867_1            conda-forge
  urllib3                    2.2.2            pyhd8ed1ab_1          conda-forge
  virtualenv                 20.26.3          pyhd8ed1ab_0          conda-forge
  werkzeug                   3.0.3            pyhd8ed1ab_0          conda-forge
  wheel                      0.43.0           pyhd8ed1ab_1          conda-forge
  wrapt                      1.16.0           py310hd125d64_0       conda-forge
  xmltodict                  0.13.0           pyhd8ed1ab_0          conda-forge
  xxhash                     0.8.2            hb547adb_0            conda-forge
  xz                         5.2.6            h57fd34a_0            conda-forge
  yaml                       0.2.5            h3422bc3_2            conda-forge
  zipp                       3.19.2           pyhd8ed1ab_0          conda-forge
  zlib                       1.3.1            hfb2fe0b_1            conda-forge
  zstandard                  0.23.0           py310hd9c37c8_0       conda-forge
  zstd                       1.5.6            hb46c0d2_0            conda-forge
jjerphan commented 1 month ago

Thank you for this comprehensive report, Ian.

jjerphan commented 1 month ago

The problem is due to the previous builds of libcxx 18.1.8 use the "fast" mode of the hardening mode, which caught a few UBs in ArcticDB itself.

For more context see https://github.com/conda-forge/libcxx-feedstock/issues/162#issuecomment-2259284699.

On a side note regarding this remark from Ian:

I needed to manually change the use of posix_memalign rather than memalign (issue https://github.com/man-group/ArcticDB/issues/1322).

https://github.com/conda-forge/folly-feedstock/pull/211 should fix it.

ianthomas23 commented 1 month ago

I am investigating the cause of these problems on macOS ARM on a local machine. To do so it is necessary to use a build of libcxx that has hardening enabled. When conda-forge/libcxx-feedstock#176 is merged and the packages are uploaded to conda-forge it will be easy to use it from there. Until then the process is as follows:

1) Build the hardening-enable package locally using the branch from https://github.com/conda-forge/libcxx-feedstock/pull/176 and using build-locally.py. 2) Modify the top of ArcticDB's environment_unix.yml to be:

name: arcticdb-debug
channels:
  - file:///<whatever local directory>/libcxx-feedstock/miniforge3/conda-bld
  - conda-forge
dependencies:
  - libcxx=18.1.8=debug_h24c5880_2

3) Create a conda environment and build ArcticDB in the usual manner.