-
Notifications
You must be signed in to change notification settings - Fork 93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
conda-build: undefined behaviors detected with libcxx v18.1.8
on macOS
#1724
Comments
I can reproduce this on an M3 mac using master branch environment_unix.yml but with For me the failed tests are:
so similar to but not identical to above. Running these individually under $ 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 * 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 * 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 * 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
|
Thank you for this comprehensive report, Ian. |
The problem is due to the previous builds of For more context see conda-forge/libcxx-feedstock#162 (comment). On a side note regarding this remark from Ian:
conda-forge/folly-feedstock#211 should fix it. |
ILLEGAL
instruction at runtime with libcxx v18.1.8
on macOSlibcxx v18.1.8
on macOS
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
|
#### Reference Issues/PRs Fixes part of #1724. #### What does this implement or fix? When testing on macOS ARM using hardened `libcxx` and latest `master` branch commit (89817db) I see 4 failures in Clause testing: ``` 125 - Clause.AggregationEmptyColumn (Subprocess aborted) 126 - Clause.AggregationColumn (Subprocess aborted) 127 - Clause.AggregationSparseColumn (Subprocess aborted) 128 - Clause.AggregationSparseGroupby (Subprocess aborted) ``` All 4 are fixed by the single character change to `clause.cpp` in this PR. Comparator functions passed to `std::sort` should be [strict weak order](https://en.cppreference.com/w/cpp/concepts/strict_weak_order) such that `sort(a, a)` is `false`. All other sort functions are already strict weak ordering. There is no functional change here and there is no explicit test for it. It probably shouldn't be labelled "bug", it is more "code quality" but even so is really theoretical as I see no way to get the code to do something wrong based on different sorting order of two identical elements. Signed-off-by: Ian Thomas <[email protected]>
…ocks (#1745) #### Reference Issues/PRs Fixes part of #1724. #### What does this implement or fix? This fixes one of the undefined behaviours that came to light in issue #1724 when building and testing ArcticDB on macOS ARM using a hardened build of `libcxx`. The C++ test it fixes is `SegmentHeader.SerializeUnserializeV1`. #### Any other comments? Previously `EncodedFieldImpl::shapes` was applying an offset into the `_blocks` member variable `std::array` before casting to an `EncodedBlock`. Other use of `_blocks` in this class uses the member function `blocks()` to do it the other way round, i.e. casting then offsetting. In practice this has been fine but in principle it is not as some hardware platform could have some interesting memory alignment to mess this up, which is what the hardened `libcxx` identifies. The fix is to use the same approach in `shapes()` to that in `values()`, the function below it. I have tested this locally against a hardened build on macOS ARM, and also against an unhardened build on Ubuntu. Hardened builds are currently not tested in CI and I suspect that we don't want to add one as it would be considered a poor use of CI resources. --------- Signed-off-by: Ian Thomas <[email protected]>
First observed here. Logs for posterity:
Also observed on the feedstock with conda-forge/arcticdb-feedstock#249.
Currently solved by using
libcxx<18
(see #1680).Other projects are having a similar problem with this build (see conda-forge/libcxx-feedstock#162)
The text was updated successfully, but these errors were encountered: