Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Segfault in ConnectionEstablisher/ProfileEvents #51313

Closed
Tracked by #51442
tavplubix opened this issue Jun 23, 2023 · 10 comments
Closed
Tracked by #51442

Segfault in ConnectionEstablisher/ProfileEvents #51313

tavplubix opened this issue Jun 23, 2023 · 10 comments
Assignees
Labels
fuzz Problem found by one of the fuzzers

Comments

@tavplubix
Copy link
Member

https://s3.amazonaws.com/clickhouse-test-reports/51135/220520c516bea15399396b5f82aa3ab2d6cd9ca3/upgrade_check__debug_.html

 [ 3891 ] {} <Fatal> BaseDaemon: ########################################
 [ 3891 ] {} <Fatal> BaseDaemon: (version 23.5.3.24 (official build), build id: 606CFC1B860DC7991A721637C9DF5A09D26C31A7) (from thread 1743) (query_id: 3c557eb1-aae6-4334-8ece-8877b931b749) (query: 
 [ 3891 ] {} <Fatal> BaseDaemon: Address: 0x7fdbd1dce530. Access: read. Address not mapped to object.
 [ 3891 ] {} <Fatal> BaseDaemon: Stack trace: 0x0000000014c07977 0x0000000014c0899d 0x0000000012d17563
 [ 3891 ] {} <Fatal> BaseDaemon: 2.1. inlined from ./build_docker/./src/Common/CurrentThread.cpp:50: DB::CurrentThread::getProfileEvents()
 [ 3891 ] {} <Fatal> BaseDaemon: 2.2. inlined from ./build_docker/./src/Common/ProfileEvents.cpp:605: ProfileEvents::increment(StrongTypedef<unsigned long, ProfileEvents::EventTag>, unsigned long)
 [ 3891 ] {} <Fatal> BaseDaemon: 2. ./build_docker/./src/Client/ConnectionEstablisher.cpp:72: DB::ConnectionEstablisher::run(PoolWithFailoverBase<DB::IConnectionPool>::TryResult&, String&) @ 0x0000000014c07977 in /usr/lib/debug/usr/bin/clickhouse.debug
 [ 3891 ] {} <Fatal> BaseDaemon: 3. ./build_docker/./src/Client/ConnectionEstablisher.cpp:129: DB::ConnectionEstablisherAsync::Task::run(std::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, String const&, unsigned int)>, std::function<void ()>) @ 0x0000000014c0899d in /usr/lib/debug/u
 [ 3891 ] {} <Fatal> BaseDaemon: 4.1. inlined from ./build_docker/./contrib/llvm-project/libcxx/include/__functional/function.h:818: ~__policy_func
 [ 3891 ] {} <Fatal> BaseDaemon: 4.2. inlined from ./build_docker/./contrib/llvm-project/libcxx/include/__functional/function.h:1174: ~function
 [ 3891 ] {} <Fatal> BaseDaemon: 4.3. inlined from ./build_docker/./src/Common/AsyncTaskExecutor.cpp:77: DB::AsyncTaskExecutor::Routine::operator()(std::function<void ()>)
 [ 3891 ] {} <Fatal> BaseDaemon: 4.4. inlined from ./build_docker/./src/Common/Fiber.h:70: Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>::operator()(boost::context::fiber&&)
 [ 3891 ] {} <Fatal> BaseDaemon: 4.5. inlined from ./build_docker/./contrib/llvm-project/libcxx/include/__functional/invoke.h:394: decltype(std::declval<Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>&>()(std::declval<boost::context::fiber>())) std::__invoke[abi:v15000]<Fiber::RoutineImpl<DB::Asy
 [ 3891 ] {} <Fatal> BaseDaemon: 4.6. inlined from ./build_docker/./contrib/llvm-project/libcxx/include/__functional/invoke.h:531: std::invoke_result<Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>&, boost::context::fiber>::type std::invoke<Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>&, boo
 [ 3891 ] {} <Fatal> BaseDaemon: 4.7. inlined from ./build_docker/./contrib/boost/boost/context/fiber_fcontext.hpp:140: boost::context::detail::fiber_record<boost::context::fiber, FiberStack&, Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>>::run(void*)
 [ 3891 ] {} <Fatal> BaseDaemon: 4. ./build_docker/./contrib/boost/boost/context/fiber_fcontext.hpp:80: void boost::context::detail::fiber_entry<boost::context::detail::fiber_record<boost::context::fiber, FiberStack&, Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>>>(boost::context::detail::trans
 [ 3891 ] {} <Fatal> BaseDaemon: Integrity check of the executable successfully passed (checksum: 02EE3772E06B612C6A9DDFB631612F78)
 [ 985 ] {} <Fatal> Application: Child process was terminated by signal 11.

Introduced in #50034

@tavplubix tavplubix added the fuzz Problem found by one of the fuzzers label Jun 23, 2023
@qoega qoega mentioned this issue Jun 27, 2023
49 tasks
@Avogar
Copy link
Member

Avogar commented Jun 29, 2023

I am not sure that it was introduced in #50034, don't see any connection to the OpenTelemetry.

And actually, it's really strange. Seems like we got segfault trying to read data from current_performance_counters pointer here:

return current_thread ? *current_thread->current_performance_counters : ProfileEvents::global_counters;

But how can it be invalid pointer. It points to another field of the struct:
ProfileEvents::Counters performance_counters{VariableContext::Thread};
/// Points to performance_counters by default.
/// Could be changed to point to another object to calculate performance counters for some narrow scope.
ProfileEvents::Counters * current_performance_counters{&performance_counters};

Only place where we can change this pointer is using attachProfileCountersScope method in ProfileEventsScope. But there we still using pointer to other struct field. And I don't see ProfileEventsScope is used in distributed query execution. And new ThreadStatus is also not created inside fibers.

According to logs, we started fibers in one thread and finish in another thread (cancellation thread). The segfault happens during query cancellation while we are trying to increment profile events. But I don't see any problems here, we just use thread local ThreadStatus from cancellation thread that was created outside of fibers.

And again, I spent a lot of time trying to reproduce with different stress testing and nothing happend...
I am out of ideas

@tavplubix
Copy link
Member Author

I am not sure that it was introduced in #50034, don't see any connection to the OpenTelemetry.

Sorry, I just noticed that this line

ProfileEvents::increment(ProfileEvents::DistributedConnectionUsable);
was added in #50034 and did not find other relevant recent changes.

But how can it be invalid pointer. It points to another field of the struct

Also the current_thread pointer could be invalid

@Avogar
Copy link
Member

Avogar commented Jun 30, 2023

Also the current_thread pointer could be invalid

Yes. I also thought about it. I even can imagine how it's possible. We update current_thread in ThreadStatus constructur/destructor and there is a possible race condition in fibers when current_thread can become invalid. It can happen if we create ThreadStatus inside each fiber and swith between them before ThreadStatus destructor. But I don't see any place in code where we can create ThreadStatus inside fiber, need to investigate more

@Avogar
Copy link
Member

Avogar commented Jul 4, 2023

Let's see if we can catch invalid current_thread using assert in ThreadStatus destructor: #51800

@kssenii
Copy link
Member

kssenii commented Jul 5, 2023

looks similar issue: https://s3.amazonaws.com/clickhouse-test-reports/50625/dcda3576d25b46e8bfbacb2e2a447952de350bc0/stateless_tests__tsan__[3_5]/stderr.log

==742==ThreadSanitizer: memory flush check RSS=90 LAST=90 LIMIT=46080
    #0 __tsan::CheckUnwind() crtstuff.c (clickhouse+0xdd4fb9b) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #1 __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) crtstuff.c (clickhouse+0xdcc96a2) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #2 __tsan::CallUserSignalHandler(__tsan::ThreadState*, bool, bool, int, __sanitizer::__sanitizer_siginfo*, void*) crtstuff.c (clickhouse+0xdcebc23) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #3 sighandler(int, __sanitizer::__sanitizer_siginfo*, void*) crtstuff.c (clickhouse+0xdcebde5) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #4 <null> <null> (libc.so.6+0x4251f) (BuildId: 69389d485a9793dbe873f0ea2c93e02efaa9aa3d)
    #5 __tsan::ThreadContext::OnFinished() crtstuff.c (clickhouse+0xdd64f4c) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #6 __sanitizer::ThreadRegistry::FinishThread(unsigned int) crtstuff.c (clickhouse+0xdcc7d0f) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #7 __tsan::ThreadFinish(__tsan::ThreadState*) crtstuff.c (clickhouse+0xdd64cb9) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #8 __tsan::FiberDestroy(__tsan::ThreadState*, unsigned long, __tsan::ThreadState*) crtstuff.c (clickhouse+0xdd654ef) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #9 boost::context::detail::fiber_activation_record::~fiber_activation_record() build_docker/./contrib/boost/boost/context/fiber_ucontext.hpp:121:13 (clickhouse+0x1e667094) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #10 boost::context::detail::fiber_capture_record<boost::context::fiber, FiberStack&, Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>>::destroy(boost::context::detail::fiber_capture_record<boost::context::fiber, FiberStack&, Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>>*) build_docker/./contrib/boost/boost/context/fiber_ucontext.hpp:255:13 (clickhouse+0x1e666fff) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #11 boost::context::detail::fiber_capture_record<boost::context::fiber, FiberStack&, Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>>::deallocate() build_docker/./contrib/boost/boost/context/fiber_ucontext.hpp:269:9 (clickhouse+0x1e666fff)
    #12 boost::context::fiber::~fiber() build_docker/./contrib/boost/boost/context/fiber_ucontext.hpp:450:19 (clickhouse+0x1e666275) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #13 Fiber::~Fiber() build_docker/./src/Common/Fiber.h:12:7 (clickhouse+0x1e666275)
    #14 DB::AsyncTaskExecutor::~AsyncTaskExecutor() build_docker/./src/Common/AsyncTaskExecutor.h:64:42 (clickhouse+0x21256cd9) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #15 DB::ConnectionEstablisherAsync::~ConnectionEstablisherAsync() build_docker/./src/Client/ConnectionEstablisher.h:57:7 (clickhouse+0x21256cd9)
    #16 DB::ConnectionPoolWithFailover::tryGetEntry(DB::IConnectionPool&, DB::ConnectionTimeouts const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&, DB::Settings const*, DB::QualifiedTableName const*, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>) build_docker/./src/Client/ConnectionPoolWithFailover.cpp:237:5 (clickhouse+0x21253e85) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #17 DB::ConnectionPoolWithFailover::getManyChecked(DB::ConnectionTimeouts const&, DB::Settings const*, DB::PoolMode, DB::QualifiedTableName const&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)::$_0::operator()(DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) const build_docker/./src/Client/ConnectionPoolWithFailover.cpp:153:16 (clickhouse+0x212547e6) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #18 decltype(std::declval<DB::ConnectionPoolWithFailover::getManyChecked(DB::ConnectionTimeouts const&, DB::Settings const*, DB::PoolMode, DB::QualifiedTableName const&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)::$_0&>()(std::declval<DB::IConnectionPool&>(), std::declval<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&>())) std::__1::__invoke[abi:v15000]<DB::ConnectionPoolWithFailover::getManyChecked(DB::ConnectionTimeouts const&, DB::Settings const*, DB::PoolMode, DB::QualifiedTableName const&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)::$_0&, DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&>(DB::ConnectionPoolWithFailover::getManyChecked(DB::ConnectionTimeouts const&, DB::Settings const*, DB::PoolMode, DB::QualifiedTableName const&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)::$_0&, DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) build_docker/./contrib/llvm-project/libcxx/include/__functional/invoke.h:394:23 (clickhouse+0x212547e6)
    #19 PoolWithFailoverBase<DB::IConnectionPool>::TryResult std::__1::__invoke_void_return_wrapper<PoolWithFailoverBase<DB::IConnectionPool>::TryResult, false>::__call<DB::ConnectionPoolWithFailover::getManyChecked(DB::ConnectionTimeouts const&, DB::Settings const*, DB::PoolMode, DB::QualifiedTableName const&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)::$_0&, DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&>(DB::ConnectionPoolWithFailover::getManyChecked(DB::ConnectionTimeouts const&, DB::Settings const*, DB::PoolMode, DB::QualifiedTableName const&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)::$_0&, DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) build_docker/./contrib/llvm-project/libcxx/include/__functional/invoke.h:470:16 (clickhouse+0x212547e6)
    #20 std::__1::__function::__default_alloc_func<DB::ConnectionPoolWithFailover::getManyChecked(DB::ConnectionTimeouts const&, DB::Settings const*, DB::PoolMode, DB::QualifiedTableName const&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)::$_0, PoolWithFailoverBase<DB::IConnectionPool>::TryResult (DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&)>::operator()[abi:v15000](DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) build_docker/./contrib/llvm-project/libcxx/include/__functional/function.h:235:12 (clickhouse+0x212547e6)
    #21 PoolWithFailoverBase<DB::IConnectionPool>::TryResult std::__1::__function::__policy_invoker<PoolWithFailoverBase<DB::IConnectionPool>::TryResult (DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&)>::__call_impl<std::__1::__function::__default_alloc_func<DB::ConnectionPoolWithFailover::getManyChecked(DB::ConnectionTimeouts const&, DB::Settings const*, DB::PoolMode, DB::QualifiedTableName const&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)::$_0, PoolWithFailoverBase<DB::IConnectionPool>::TryResult (DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&)>>(std::__1::__function::__policy_storage const*, DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) build_docker/./contrib/llvm-project/libcxx/include/__functional/function.h:716:16 (clickhouse+0x212547e6)
    #22 std::__1::__function::__policy_func<PoolWithFailoverBase<DB::IConnectionPool>::TryResult (DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&)>::operator()[abi:v15000](DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) const build_docker/./contrib/llvm-project/libcxx/include/__functional/function.h:848:16 (clickhouse+0x21255964) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #23 std::__1::function<PoolWithFailoverBase<DB::IConnectionPool>::TryResult (DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&)>::operator()(DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) const build_docker/./contrib/llvm-project/libcxx/include/__functional/function.h:1187:12 (clickhouse+0x21255964)
    #24 PoolWithFailoverBase<DB::IConnectionPool>::getMany(unsigned long, unsigned long, unsigned long, unsigned long, bool, std::__1::function<PoolWithFailoverBase<DB::IConnectionPool>::TryResult (DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&)> const&, std::__1::function<Priority (unsigned long)> const&) build_docker/./src/Common/PoolWithFailoverBase.h:267:22 (clickhouse+0x21255964)
    #25 DB::ConnectionPoolWithFailover::getManyImpl(DB::Settings const*, DB::PoolMode, std::__1::function<PoolWithFailoverBase<DB::IConnectionPool>::TryResult (DB::IConnectionPool&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&)> const&) build_docker/./src/Client/ConnectionPoolWithFailover.cpp:203:18 (clickhouse+0x21253769) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #26 DB::ConnectionPoolWithFailover::getManyChecked(DB::ConnectionTimeouts const&, DB::Settings const*, DB::PoolMode, DB::QualifiedTableName const&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>) build_docker/./src/Client/ConnectionPoolWithFailover.cpp:156:12 (clickhouse+0x21253a8f) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #27 DB::RemoteQueryExecutor::RemoteQueryExecutor(std::__1::shared_ptr<DB::ConnectionPoolWithFailover> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, DB::Block const&, std::__1::shared_ptr<DB::Context const>, std::__1::shared_ptr<DB::Throttler> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, DB::Block, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, DB::Block>>> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::shared_ptr<DB::IStorage>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, std::__1::shared_ptr<DB::IStorage>>>> const&, DB::QueryProcessingStage::Enum, std::__1::optional<DB::RemoteQueryExecutor::Extension>)::$_0::operator()(std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>) const build_docker/./src/QueryPipeline/RemoteQueryExecutor.cpp:133:38 (clickhouse+0x1e65c629) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #28 decltype(std::declval<DB::RemoteQueryExecutor::RemoteQueryExecutor(std::__1::shared_ptr<DB::ConnectionPoolWithFailover> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, DB::Block const&, std::__1::shared_ptr<DB::Context const>, std::__1::shared_ptr<DB::Throttler> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, DB::Block, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, DB::Block>>> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::shared_ptr<DB::IStorage>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, std::__1::shared_ptr<DB::IStorage>>>> const&, DB::QueryProcessingStage::Enum, std::__1::optional<DB::RemoteQueryExecutor::Extension>)::$_0&>()(std::declval<std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>>())) std::__1::__invoke[abi:v15000]<DB::RemoteQueryExecutor::RemoteQueryExecutor(std::__1::shared_ptr<DB::ConnectionPoolWithFailover> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, DB::Block const&, std::__1::shared_ptr<DB::Context const>, std::__1::shared_ptr<DB::Throttler> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, DB::Block, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, DB::Block>>> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::shared_ptr<DB::IStorage>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, std::__1::shared_ptr<DB::IStorage>>>> const&, DB::QueryProcessingStage::Enum, std::__1::optional<DB::RemoteQueryExecutor::Extension>)::$_0&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>>(DB::RemoteQueryExecutor::RemoteQueryExecutor(std::__1::shared_ptr<DB::ConnectionPoolWithFailover> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, DB::Block const&, std::__1::shared_ptr<DB::Context const>, std::__1::shared_ptr<DB::Throttler> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, DB::Block, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, DB::Block>>> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::shared_ptr<DB::IStorage>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, std::__1::shared_ptr<DB::IStorage>>>> const&, DB::QueryProcessingStage::Enum, std::__1::optional<DB::RemoteQueryExecutor::Extension>)::$_0&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>&&) build_docker/./contrib/llvm-project/libcxx/include/__functional/invoke.h:394:23 (clickhouse+0x1e65c629)
    #29 std::__1::unique_ptr<DB::IConnections, std::__1::default_delete<DB::IConnections>> std::__1::__invoke_void_return_wrapper<std::__1::unique_ptr<DB::IConnections, std::__1::default_delete<DB::IConnections>>, false>::__call<DB::RemoteQueryExecutor::RemoteQueryExecutor(std::__1::shared_ptr<DB::ConnectionPoolWithFailover> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, DB::Block const&, std::__1::shared_ptr<DB::Context const>, std::__1::shared_ptr<DB::Throttler> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, DB::Block, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, DB::Block>>> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::shared_ptr<DB::IStorage>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, std::__1::shared_ptr<DB::IStorage>>>> const&, DB::QueryProcessingStage::Enum, std::__1::optional<DB::RemoteQueryExecutor::Extension>)::$_0&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>>(DB::RemoteQueryExecutor::RemoteQueryExecutor(std::__1::shared_ptr<DB::ConnectionPoolWithFailover> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, DB::Block const&, std::__1::shared_ptr<DB::Context const>, std::__1::shared_ptr<DB::Throttler> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, DB::Block, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, DB::Block>>> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::shared_ptr<DB::IStorage>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, std::__1::shared_ptr<DB::IStorage>>>> const&, DB::QueryProcessingStage::Enum, std::__1::optional<DB::RemoteQueryExecutor::Extension>)::$_0&, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>&&) build_docker/./contrib/llvm-project/libcxx/include/__functional/invoke.h:470:16 (clickhouse+0x1e65c629)
    #30 std::__1::__function::__default_alloc_func<DB::RemoteQueryExecutor::RemoteQueryExecutor(std::__1::shared_ptr<DB::ConnectionPoolWithFailover> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, DB::Block const&, std::__1::shared_ptr<DB::Context const>, std::__1::shared_ptr<DB::Throttler> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, DB::Block, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, DB::Block>>> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::shared_ptr<DB::IStorage>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, std::__1::shared_ptr<DB::IStorage>>>> const&, DB::QueryProcessingStage::Enum, std::__1::optional<DB::RemoteQueryExecutor::Extension>)::$_0, std::__1::unique_ptr<DB::IConnections, std::__1::default_delete<DB::IConnections>> (std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)>::operator()[abi:v15000](std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>&&) build_docker/./contrib/llvm-project/libcxx/include/__functional/function.h:235:12 (clickhouse+0x1e65c629)
    #31 std::__1::unique_ptr<DB::IConnections, std::__1::default_delete<DB::IConnections>> std::__1::__function::__policy_invoker<std::__1::unique_ptr<DB::IConnections, std::__1::default_delete<DB::IConnections>> (std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)>::__call_impl<std::__1::__function::__default_alloc_func<DB::RemoteQueryExecutor::RemoteQueryExecutor(std::__1::shared_ptr<DB::ConnectionPoolWithFailover> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, DB::Block const&, std::__1::shared_ptr<DB::Context const>, std::__1::shared_ptr<DB::Throttler> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, DB::Block, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, DB::Block>>> const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::shared_ptr<DB::IStorage>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const, std::__1::shared_ptr<DB::IStorage>>>> const&, DB::QueryProcessingStage::Enum, std::__1::optional<DB::RemoteQueryExecutor::Extension>)::$_0, std::__1::unique_ptr<DB::IConnections, std::__1::default_delete<DB::IConnections>> (std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)>>(std::__1::__function::__policy_storage const*, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>&&) build_docker/./contrib/llvm-project/libcxx/include/__functional/function.h:716:16 (clickhouse+0x1e65c629)
    #32 std::__1::__function::__policy_func<std::__1::unique_ptr<DB::IConnections, std::__1::default_delete<DB::IConnections>> (std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)>::operator()[abi:v15000](std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>&&) const build_docker/./contrib/llvm-project/libcxx/include/__functional/function.h:848:16 (clickhouse+0x1e655013) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #33 std::__1::function<std::__1::unique_ptr<DB::IConnections, std::__1::default_delete<DB::IConnections>> (std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>)>::operator()(std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>) const build_docker/./contrib/llvm-project/libcxx/include/__functional/function.h:1187:12 (clickhouse+0x1e655013)
    #34 DB::RemoteQueryExecutor::sendQueryUnlocked(DB::ClientInfo::QueryKind, std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>) build_docker/./src/QueryPipeline/RemoteQueryExecutor.cpp:236:19 (clickhouse+0x1e655013)
    #35 DB::RemoteQueryExecutorReadContext::Task::run(std::__1::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned int)>, std::__1::function<void ()>) build_docker/./src/QueryPipeline/RemoteQueryExecutorReadContext.cpp:39:27 (clickhouse+0x1e6686ea) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #36 DB::AsyncTaskExecutor::Routine::operator()(std::__1::function<void ()>) build_docker/./src/Common/AsyncTaskExecutor.cpp:77:28 (clickhouse+0x1e66781e) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #37 Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>::operator()(boost::context::fiber&&) build_docker/./src/Common/Fiber.h:70:13 (clickhouse+0x1e66725f) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)
    #38 decltype(std::declval<Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>&>()(std::declval<boost::context::fiber>())) std::__1::__invoke[abi:v15000]<Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>&, boost::context::fiber>(Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>&, boost::context::fiber&&) build_docker/./contrib/llvm-project/libcxx/include/__functional/invoke.h:394:23 (clickhouse+0x1e66725f)
    #39 std::__1::invoke_result<Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>&, boost::context::fiber>::type std::__1::invoke<Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>&, boost::context::fiber>(Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>&, boost::context::fiber&&) build_docker/./contrib/llvm-project/libcxx/include/__functional/invoke.h:531:12 (clickhouse+0x1e66725f)
    #40 boost::context::detail::fiber_capture_record<boost::context::fiber, FiberStack&, Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>>::run() build_docker/./contrib/boost/boost/context/fiber_ucontext.hpp:285:17 (clickhouse+0x1e66725f)
    #41 void boost::context::detail::fiber_entry_func<boost::context::detail::fiber_capture_record<boost::context::fiber, FiberStack&, Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>>>(void*) build_docker/./contrib/boost/boost/context/fiber_ucontext.hpp:73:13 (clickhouse+0x1e6660d9) (BuildId: 58b1fb74d8cf683585da67225d47c4cedc81e572)

@Avogar
Copy link
Member

Avogar commented Aug 9, 2023

Didn't see this failure after #52533, let's close

@Avogar Avogar closed this as completed Aug 9, 2023
@azat
Copy link
Collaborator

azat commented Apr 8, 2024

Got this today:

2024.04.08 13:15:26.959842 [ 2118603 ] {} <Fatal> BaseDaemon: ########## Short fault info ############
2024.04.08 13:15:26.960917 [ 2118603 ] {} <Fatal> BaseDaemon: (version 24.2.2.71 (official build), build id: 57F857DCFE8BA6838F6463E4665CD700852BFF0E, git hash: 9293d361e72be9f6ccfd444d504e2137b2e837cf) (from thread 2076989) Received signal 11
2024.04.08 13:15:26.965625 [ 2118603 ] {} <Fatal> BaseDaemon: Signal description: Segmentation fault
2024.04.08 13:15:26.965668 [ 2118603 ] {} <Fatal> BaseDaemon: Address: 0x7eeadc120e48. Access: read. Address not mapped to object.
2024.04.08 13:15:26.965686 [ 2118603 ] {} <Fatal> BaseDaemon: Stack trace: 0x0000000012ece216 0x0000000012ecf668 0x0000000010ce14e3
2024.04.08 13:15:26.965716 [ 2118603 ] {} <Fatal> BaseDaemon: ########################################
2024.04.08 13:15:26.965918 [ 2118603 ] {} <Fatal> BaseDaemon: (version 24.2.2.71 (official build), build id: 57F857DCFE8BA6838F6463E4665CD700852BFF0E, git hash: 9293d361e72be9f6ccfd444d504e2137b2e837cf) (from thread 2076989) (query_id: 043a1139-23c5-4fa9-b7ff-c508db7d5e69) (query: WITH (
2024.04.08 13:15:26.966390 [ 2118603 ] {} <Fatal> BaseDaemon: Address: 0x7eeadc120e48. Access: read. Address not mapped to object.
2024.04.08 13:15:26.966416 [ 2118603 ] {} <Fatal> BaseDaemon: Stack trace: 0x0000000012ece216 0x0000000012ecf668 0x0000000010ce14e3
2024.04.08 13:15:29.202222 [ 2118603 ] {} <Fatal> BaseDaemon: 2.0. inlined from ./src/Common/CurrentThread.cpp:49: DB::CurrentThread::getProfileEvents()
2024.04.08 13:15:29.202286 [ 2118603 ] {} <Fatal> BaseDaemon: 2.1. inlined from ./src/Common/ProfileEvents.cpp:751: ProfileEvents::increment(StrongTypedef<unsigned long, ProfileEvents::EventTag>, unsigned long)
2024.04.08 13:15:29.202320 [ 2118603 ] {} <Fatal> BaseDaemon: 2. ./build_docker/./src/Client/ConnectionEstablisher.cpp:70: DB::ConnectionEstablisher::run(PoolWithFailoverBase<DB::IConnectionPool>::TryResult&, String&) @ 0x0000000012ece216
2024.04.08 13:15:29.215416 [ 2118603 ] {} <Fatal> BaseDaemon: 3. ./build_docker/./src/Client/ConnectionEstablisher.cpp:127: DB::ConnectionEstablisherAsync::Task::run(std::function<void (int, Poco::Timespan, DB::AsyncEventTimeoutType, String const&, unsigned int)>, std::function<void ()>) @ 0x0000000012ecf668
2024.04.08 13:15:29.230243 [ 2118603 ] {} <Fatal> BaseDaemon: 4.0. inlined from ./contrib/llvm-project/libcxx/include/__functional/function.h:818: ?
2024.04.08 13:15:29.230314 [ 2118603 ] {} <Fatal> BaseDaemon: 4.1. inlined from ./contrib/llvm-project/libcxx/include/__functional/function.h:1174: ?
2024.04.08 13:15:29.230364 [ 2118603 ] {} <Fatal> BaseDaemon: 4.2. inlined from ./build_docker/./src/Common/AsyncTaskExecutor.cpp:88: DB::AsyncTaskExecutor::Routine::operator()(std::function<void ()>)
2024.04.08 13:15:29.230390 [ 2118603 ] {} <Fatal> BaseDaemon: 4.3. inlined from ./src/Common/Fiber.h:76: Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>::operator()(boost::context::fiber&&)
2024.04.08 13:15:29.230424 [ 2118603 ] {} <Fatal> BaseDaemon: 4.4. inlined from ./contrib/llvm-project/libcxx/include/__functional/invoke.h:394: ?
2024.04.08 13:15:29.230450 [ 2118603 ] {} <Fatal> BaseDaemon: 4.5. inlined from ./contrib/llvm-project/libcxx/include/__functional/invoke.h:531: ?
2024.04.08 13:15:29.230483 [ 2118603 ] {} <Fatal> BaseDaemon: 4.6. inlined from ./contrib/boost/boost/context/fiber_fcontext.hpp:157: boost::context::detail::fiber_record<boost::context::fiber, FiberStack&, Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>>::run(void*)
2024.04.08 13:15:29.230510 [ 2118603 ] {} <Fatal> BaseDaemon: 4. ./contrib/boost/boost/context/fiber_fcontext.hpp:97: void boost::context::detail::fiber_entry<boost::context::detail::fiber_record<boost::context::fiber, FiberStack&, Fiber::RoutineImpl<DB::AsyncTaskExecutor::Routine>>>(boost::context::detail::transfer_t) @ 0x0000000010ce14e3
2024.04.08 13:15:29.488150 [ 2118603 ] {} <Fatal> BaseDaemon: Integrity check of the executable successfully passed (checksum: 3485110FABDB0C94202BD684999A9814)
2024.04.08 13:15:29.488498 [ 2118603 ] {} <Fatal> BaseDaemon: Report this error to https://github.com/ClickHouse/ClickHouse/issues
2024.04.08 13:15:29.489144 [ 2118603 ] {} <Fatal> BaseDaemon: Changed settings: max_threads = 1, max_query_size = 2097152, use_uncompressed_cache = false, distributed_background_insert_sleep_time_ms = 60000, distributed_background_insert_max_sleep_time_ms = 180000, distributed_background_insert_batch = true, load_balancing = 'random', compile_expressions = false, compile_aggregate_expressions = false, compile_sort_description = false, max_execution_time = 90., max_memory_usage = 107374182400, external_table_strict_query = true, max_partitions_per_insert_block = 1000, allow_experimental_database_materialized_mysql = true, use_structure_from_insertion_table_in_table_functions = 0, allow_experimental_map_type = true, background_message_broker_schedule_pool_size = 32, backup_threads = 1

Sadly, but I don't have query logs for that time already (sigh)

@Avogar
Copy link
Member

Avogar commented Apr 8, 2024

Need logs of thread 2076989 .
Probably it's #60499

@azat
Copy link
Collaborator

azat commented Apr 8, 2024

Need logs of thread 2076989 .

Sadly, but I don't have them

Probably it's #60499

It is not, the 24.2.2 contains the backport of this patch.

@Avogar
Copy link
Member

Avogar commented Apr 8, 2024

Sadly, but I don't have them

Maybe worth enabling system.text_log table 😅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
fuzz Problem found by one of the fuzzers
Projects
None yet
Development

No branches or pull requests

4 participants