-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Potential deadlock in SettingsProfilesCache #15680
Copy link
Copy link
Closed
Labels
bugConfirmed user-visible misbehaviour in official releaseConfirmed user-visible misbehaviour in official releasecomp-rbacAuthorization: roles, grants, quotas, row-level security, access checks.Authorization: roles, grants, quotas, row-level security, access checks.
Description
How to reproduce: Build with tsan and pytest -ss test_grant_and_revoke/test.py
==================
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=1)
Cycle in lock order graph: M93022325842250176 (0x000000000000) => M1457 (0x7b44000018a8) => M1458 (0x7b54000022b0) => M93022325842250176
Mutex M1457 acquired here while holding mutex M93022325842250176 in thread T29:
#0 pthread_mutex_lock <null> (clickhouse+0x74c7da6)
#1 std::__1::__libcpp_mutex_lock(pthread_mutex_t*) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/__threading_support:322:10 (clickhouse+0x12f78f99)
#2 std::__1::mutex::lock() /home/alesap/code/cpp/ClickHouse/contrib/libcxx/src/mutex.cpp:33:14 (clickhouse+0x12f78f99)
#3 std::__1::lock_guard<std::__1::mutex>::lock_guard(std::__1::mutex&) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/__mutex_base:91:27 (clickhouse+0xf8661ff)
#4 DB::SettingsProfilesCache::getEnabledSettings(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, DB::SettingsProfileElements const&, boost::container::flat_set<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::less<StrongTypedef<DB::UInt128, DB::UUIDTag> >, void> const&, DB::SettingsProfileElements const&) /home/alesap/code/cpp/ClickHouse/src/Access/SettingsProfilesCache.cpp:194:21 (clickhouse+0xf8661ff)
#5 DB::AccessControlManager::getEnabledSettings(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, DB::SettingsProfileElements const&, boost::container::flat_set<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::less<StrongTypedef<DB::UInt128, DB::UUIDTag> >, void> const&, DB::SettingsProfileElements const&) const /home/alesap/code/cpp/ClickHouse/src/Access/AccessControlManager.cpp:445:37 (clickhouse+0xf79f441)
#6 DB::ContextAccess::setRolesInfo(std::__1::shared_ptr<DB::EnabledRolesInfo const> const&) const /home/alesap/code/cpp/ClickHouse/src/Access/ContextAccess.cpp:263:33 (clickhouse+0xf7ceca5)
#7 DB::ContextAccess::setUser(std::__1::shared_ptr<DB::User const> const&) const /home/alesap/code/cpp/ClickHouse/src/Access/ContextAccess.cpp:253:5 (clickhouse+0xf7ce4bd)
#8 DB::ContextAccess::ContextAccess(DB::AccessControlManager const&, DB::ContextAccessParams const&)::$_0::operator()(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&) const /home/alesap/code/cpp/ClickHouse/src/Access/ContextAccess.cpp:191:9 (clickhouse+0xf7d8ab1)
#9 decltype(std::__1::forward<DB::ContextAccess::ContextAccess(DB::AccessControlManager const&, DB::ContextAccessParams const&)::$_0&>(fp)(std::__1::forward<StrongTypedef<DB::UInt128, DB::UUIDTag> const&>(fp0), std::__1::forward<std::__1::shared_ptr<DB::IAccessEntity const> const&>(fp0))) std::__1::__invoke<DB::ContextAccess::ContextAccess(DB::AccessControlManager const&, DB::ContextAccessParams const&)::$_0&, StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&>(DB::ContextAccess::ContextAccess(DB::AccessControlManager const&, DB::ContextAccessParams const&)::$_0&, StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/type_traits:3519:1 (clickhouse+0xf7d8ab1)
#10 void std::__1::__invoke_void_return_wrapper<void>::__call<DB::ContextAccess::ContextAccess(DB::AccessControlManager const&, DB::ContextAccessParams const&)::$_0&, StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&>(DB::ContextAccess::ContextAccess(DB::AccessControlManager const&, DB::ContextAccessParams const&)::$_0&, StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/__functional_base:348:9 (clickhouse+0xf7d8ab1)
#11 std::__1::__function::__alloc_func<DB::ContextAccess::ContextAccess(DB::AccessControlManager const&, DB::ContextAccessParams const&)::$_0, std::__1::allocator<DB::ContextAccess::ContextAccess(DB::AccessControlManager const&, DB::ContextAccessParams const&)::$_0>, void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)>::operator()(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/functional:1540:16 (clickhouse+0xf7d8ab1)
#12 std::__1::__function::__func<DB::ContextAccess::ContextAccess(DB::AccessControlManager const&, DB::ContextAccessParams const&)::$_0, std::__1::allocator<DB::ContextAccess::ContextAccess(DB::AccessControlManager const&, DB::ContextAccessParams const&)::$_0>, void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)>::operator()(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/functional:1714:12 (clickhouse+0xf7d8ab1)
#13 std::__1::__function::__value_func<void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)>::operator()(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&) const /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/functional:1867:16 (clickhouse+0xf813574)
#14 std::__1::function<void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)>::operator()(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&) const /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/functional:2473:12 (clickhouse+0xf813574)
#15 DB::IAccessStorage::notify(std::__1::vector<std::__1::tuple<std::__1::function<void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)>, StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::shared_ptr<DB::IAccessEntity const> >, std::__1::allocator<std::__1::tuple<std::__1::function<void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)>, StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::shared_ptr<DB::IAccessEntity const> > > > const&) /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.cpp:413:9 (clickhouse+0xf813574)
#16 DB::DiskAccessStorage::updateImpl(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&)::$_5::operator()() const /home/alesap/code/cpp/ClickHouse/src/Access/DiskAccessStorage.cpp:694:5 (clickhouse+0xf7fa962)
#17 ext::basic_scope_guard<DB::DiskAccessStorage::updateImpl(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&)::$_5>::invoke() /home/alesap/code/cpp/ClickHouse/base/common/../ext/scope_guard.h:97:9 (clickhouse+0xf7fa962)
#18 ext::basic_scope_guard<DB::DiskAccessStorage::updateImpl(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&)::$_5>::~basic_scope_guard() /home/alesap/code/cpp/ClickHouse/base/common/../ext/scope_guard.h:47:28 (clickhouse+0xf7fa962)
#19 DB::DiskAccessStorage::updateImpl(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) /home/alesap/code/cpp/ClickHouse/src/Access/DiskAccessStorage.cpp:698:1 (clickhouse+0xf7fa962)
#20 DB::IAccessStorage::update(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.cpp:335:5 (clickhouse+0xf812b42)
#21 DB::MultipleAccessStorage::updateImpl(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) /home/alesap/code/cpp/ClickHouse/src/Access/MultipleAccessStorage.cpp:253:27 (clickhouse+0xf82951a)
#22 DB::IAccessStorage::update(std::__1::vector<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::allocator<StrongTypedef<DB::UInt128, DB::UUIDTag> > > const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&)::$_12::operator()() const /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.cpp:345:27 (clickhouse+0xf812c28)
#23 bool DB::(anonymous namespace)::ErrorsTracker::tryCall<DB::IAccessStorage::update(std::__1::vector<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::allocator<StrongTypedef<DB::UInt128, DB::UUIDTag> > > const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&)::$_12>(DB::IAccessStorage::update(std::__1::vector<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::allocator<StrongTypedef<DB::UInt128, DB::UUIDTag> > > const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&)::$_12 const&) /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.cpp:67:17 (clickhouse+0xf812c28)
#24 DB::IAccessStorage::update(std::__1::vector<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::allocator<StrongTypedef<DB::UInt128, DB::UUIDTag> > > const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.cpp:346:17 (clickhouse+0xf812c28)
#25 DB::InterpreterGrantQuery::execute() /home/alesap/code/cpp/ClickHouse/src/Interpreters/InterpreterGrantQuery.cpp:251:20 (clickhouse+0xff62205)
#26 DB::executeQueryImpl(char const*, char const*, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool, DB::ReadBuffer*) /home/alesap/code/cpp/ClickHouse/src/Interpreters/executeQuery.cpp:412:28 (clickhouse+0x10387860)
#27 DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool) /home/alesap/code/cpp/ClickHouse/src/Interpreters/executeQuery.cpp:708:30 (clickhouse+0x1038667e)
#28 DB::TCPHandler::runImpl() /home/alesap/code/cpp/ClickHouse/src/Server/TCPHandler.cpp:254:24 (clickhouse+0x10aa4f51)
#29 DB::TCPHandler::run() /home/alesap/code/cpp/ClickHouse/src/Server/TCPHandler.cpp:1311:9 (clickhouse+0x10aafcd7)
#30 Poco::Net::TCPServerConnection::start() /home/alesap/code/cpp/ClickHouse/contrib/poco/Net/src/TCPServerConnection.cpp:43:3 (clickhouse+0x11ab9b02)
#31 Poco::Net::TCPServerDispatcher::run() /home/alesap/code/cpp/ClickHouse/contrib/poco/Net/src/TCPServerDispatcher.cpp:114:20 (clickhouse+0x11aba219)
#32 Poco::PooledThread::run() /home/alesap/code/cpp/ClickHouse/contrib/poco/Foundation/src/ThreadPool.cpp:199:14 (clickhouse+0x11c1c281)
#33 Poco::(anonymous namespace)::RunnableHolder::run() /home/alesap/code/cpp/ClickHouse/contrib/poco/Foundation/src/Thread.cpp:55:11 (clickhouse+0x11c1a94f)
#34 Poco::ThreadImpl::runnableEntry(void*) /home/alesap/code/cpp/ClickHouse/contrib/poco/Foundation/src/Thread_POSIX.cpp:345:27 (clickhouse+0x11c192b7)
Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message
Mutex M1458 acquired here while holding mutex M1457 in main thread:
#0 pthread_mutex_lock <null> (clickhouse+0x74c7da6)
#1 std::__1::__libcpp_mutex_lock(pthread_mutex_t*) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/__threading_support:322:10 (clickhouse+0x12f78f99)
#2 std::__1::mutex::lock() /home/alesap/code/cpp/ClickHouse/contrib/libcxx/src/mutex.cpp:33:14 (clickhouse+0x12f78f99)
#3 std::__1::lock_guard<std::__1::mutex>::lock_guard(std::__1::mutex&) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/__mutex_base:91:27 (clickhouse+0xf7fce44)
#4 DB::DiskAccessStorage::subscribeForChangesImpl(DB::IAccessEntity::Type, std::__1::function<void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) const /home/alesap/code/cpp/ClickHouse/src/Access/DiskAccessStorage.cpp:805:21 (clickhouse+0xf7fce44)
#5 DB::IAccessStorage::subscribeForChanges(DB::IAccessEntity::Type, std::__1::function<void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) const /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.cpp:379:12 (clickhouse+0xf813289)
#6 DB::MultipleAccessStorage::updateSubscriptionsToNestedStorages(std::__1::unique_lock<std::__1::mutex>&) const /home/alesap/code/cpp/ClickHouse/src/Access/MultipleAccessStorage.cpp:369:41 (clickhouse+0xf8265a9)
#7 DB::MultipleAccessStorage::subscribeForChangesImpl(DB::IAccessEntity::Type, std::__1::function<void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) const /home/alesap/code/cpp/ClickHouse/src/Access/MultipleAccessStorage.cpp:285:9 (clickhouse+0xf829eca)
#8 DB::IAccessStorage::subscribeForChanges(DB::IAccessEntity::Type, std::__1::function<void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) const /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.cpp:379:12 (clickhouse+0xf813289)
#9 ext::basic_scope_guard<std::__1::function<void ()> > DB::IAccessStorage::subscribeForChanges<DB::SettingsProfile>(std::__1::function<void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)>) const /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.h:135:83 (clickhouse+0xf863f8f)
#10 DB::SettingsProfilesCache::ensureAllProfilesRead() /home/alesap/code/cpp/ClickHouse/src/Access/SettingsProfilesCache.cpp:32:28 (clickhouse+0xf863f8f)
#11 DB::SettingsProfilesCache::setDefaultProfileName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /home/alesap/code/cpp/ClickHouse/src/Access/SettingsProfilesCache.cpp:91:5 (clickhouse+0xf865354)
#12 DB::AccessControlManager::setDefaultProfileName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /home/alesap/code/cpp/ClickHouse/src/Access/AccessControlManager.cpp:355:30 (clickhouse+0xf79eb30)
#13 DB::Context::setDefaultProfiles(Poco::Util::AbstractConfiguration const&) /home/alesap/code/cpp/ClickHouse/src/Interpreters/Context.cpp:2073:31 (clickhouse+0xfbbe68d)
#14 DB::Server::main(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) /home/alesap/code/cpp/ClickHouse/programs/server/Server.cpp:613:21 (clickhouse+0x75429ef)
#15 Poco::Util::Application::run() /home/alesap/code/cpp/ClickHouse/contrib/poco/Util/src/Application.cpp:334:8 (clickhouse+0x11acd93b)
#16 DB::Server::run() /home/alesap/code/cpp/ClickHouse/programs/server/Server.cpp:205:25 (clickhouse+0x753c23a)
#17 Poco::Util::ServerApplication::run(int, char**) /home/alesap/code/cpp/ClickHouse/contrib/poco/Util/src/ServerApplication.cpp:611:9 (clickhouse+0x11ae84d8)
#18 mainEntryClickHouseServer(int, char**) /home/alesap/code/cpp/ClickHouse/programs/server/Server.cpp:99:20 (clickhouse+0x753bd53)
#19 main /home/alesap/code/cpp/ClickHouse/programs/main.cpp:400:12 (clickhouse+0x753b032)
Mutex M93022325842250176 acquired here while holding mutex M1458 in thread T29:
#0 pthread_mutex_lock <null> (clickhouse+0x74c7da6)
#1 std::__1::__libcpp_mutex_lock(pthread_mutex_t*) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/__threading_support:322:10 (clickhouse+0x12f78f99)
#2 std::__1::mutex::lock() /home/alesap/code/cpp/ClickHouse/contrib/libcxx/src/mutex.cpp:33:14 (clickhouse+0x12f78f99)
#3 std::__1::lock_guard<std::__1::mutex>::lock_guard(std::__1::mutex&) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/__mutex_base:91:27 (clickhouse+0xf7e2648)
#4 DB::ContextAccess::getAccess() const /home/alesap/code/cpp/ClickHouse/src/Access/ContextAccess.cpp:364:21 (clickhouse+0xf7e2648)
#5 bool DB::ContextAccess::isGrantedImpl2<true, std::__1::basic_string_view<char, std::__1::char_traits<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(DB::AccessFlags const&, std::__1::basic_string_view<char, std::__1::char_traits<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const /home/alesap/code/cpp/ClickHouse/src/Access/ContextAccess.cpp:374:26 (clickhouse+0xf7e2648)
#6 bool DB::ContextAccess::isGrantedImpl<true, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(DB::AccessFlags const&, std::__1::basic_string_view<char, std::__1::char_traits<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const /home/alesap/code/cpp/ClickHouse/src/Access/ContextAccess.cpp:394:12 (clickhouse+0xf7d9741)
#7 bool DB::ContextAccess::isGrantedImpl<true>(DB::AccessRightsElement const&) const /home/alesap/code/cpp/ClickHouse/src/Access/ContextAccess.cpp:405:16 (clickhouse+0xf7d9741)
#8 bool DB::ContextAccess::isGrantedImpl<true>(DB::AccessRightsElements const&) const /home/alesap/code/cpp/ClickHouse/src/Access/ContextAccess.cpp:414:14 (clickhouse+0xf7d1f1a)
#9 DB::ContextAccess::hasGrantOption(DB::AccessRightsElements const&) const /home/alesap/code/cpp/ClickHouse/src/Access/ContextAccess.cpp:435:90 (clickhouse+0xf7d1f1a)
#10 DB::(anonymous namespace)::doRevokeAccess(DB::AccessRights&, DB::AccessRightsElements const&, bool, std::__1::shared_ptr<DB::ContextAccess const> const&) /home/alesap/code/cpp/ClickHouse/src/Interpreters/InterpreterGrantQuery.cpp:58:34 (clickhouse+0xff63121)
#11 void DB::(anonymous namespace)::updateFromQueryTemplate<DB::User>(DB::User&, DB::ASTGrantQuery const&, DB::RolesOrUsersSet const&, std::__1::unordered_map<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<StrongTypedef<DB::UInt128, DB::UUIDTag> >, std::__1::equal_to<StrongTypedef<DB::UInt128, DB::UUIDTag> >, std::__1::allocator<std::__1::pair<StrongTypedef<DB::UInt128, DB::UUIDTag> const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::shared_ptr<DB::ContextAccess const> const&) /home/alesap/code/cpp/ClickHouse/src/Interpreters/InterpreterGrantQuery.cpp:173:17 (clickhouse+0xff629e8)
#12 DB::(anonymous namespace)::updateFromQueryImpl(DB::IAccessEntity&, DB::ASTGrantQuery const&, DB::RolesOrUsersSet const&, std::__1::unordered_map<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<StrongTypedef<DB::UInt128, DB::UUIDTag> >, std::__1::equal_to<StrongTypedef<DB::UInt128, DB::UUIDTag> >, std::__1::allocator<std::__1::pair<StrongTypedef<DB::UInt128, DB::UUIDTag> const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > const&, std::__1::shared_ptr<DB::ContextAccess const> const&) /home/alesap/code/cpp/ClickHouse/src/Interpreters/InterpreterGrantQuery.cpp:198:13 (clickhouse+0xff629e8)
#13 DB::InterpreterGrantQuery::execute()::$_0::operator()(std::__1::shared_ptr<DB::IAccessEntity const> const&) const /home/alesap/code/cpp/ClickHouse/src/Interpreters/InterpreterGrantQuery.cpp:247:9 (clickhouse+0xff63900)
#14 decltype(std::__1::forward<DB::InterpreterGrantQuery::execute()::$_0&>(fp)(std::__1::forward<std::__1::shared_ptr<DB::IAccessEntity const> const&>(fp0))) std::__1::__invoke<DB::InterpreterGrantQuery::execute()::$_0&, std::__1::shared_ptr<DB::IAccessEntity const> const&>(DB::InterpreterGrantQuery::execute()::$_0&, std::__1::shared_ptr<DB::IAccessEntity const> const&) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/type_traits:3519:1 (clickhouse+0xff63900)
#15 std::__1::shared_ptr<DB::IAccessEntity const> std::__1::__invoke_void_return_wrapper<std::__1::shared_ptr<DB::IAccessEntity const> >::__call<DB::InterpreterGrantQuery::execute()::$_0&, std::__1::shared_ptr<DB::IAccessEntity const> const&>(DB::InterpreterGrantQuery::execute()::$_0&, std::__1::shared_ptr<DB::IAccessEntity const> const&) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/__functional_base:317:16 (clickhouse+0xff63900)
#16 std::__1::__function::__alloc_func<DB::InterpreterGrantQuery::execute()::$_0, std::__1::allocator<DB::InterpreterGrantQuery::execute()::$_0>, std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)>::operator()(std::__1::shared_ptr<DB::IAccessEntity const> const&) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/functional:1540:16 (clickhouse+0xff63900)
#17 std::__1::__function::__func<DB::InterpreterGrantQuery::execute()::$_0, std::__1::allocator<DB::InterpreterGrantQuery::execute()::$_0>, std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)>::operator()(std::__1::shared_ptr<DB::IAccessEntity const> const&) /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/functional:1714:12 (clickhouse+0xff63900)
#18 std::__1::__function::__value_func<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)>::operator()(std::__1::shared_ptr<DB::IAccessEntity const> const&) const /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/functional:1867:16 (clickhouse+0xf7fade0)
#19 std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)>::operator()(std::__1::shared_ptr<DB::IAccessEntity const> const&) const /home/alesap/code/cpp/ClickHouse/contrib/libcxx/include/functional:2473:12 (clickhouse+0xf7fade0)
#20 DB::DiskAccessStorage::updateNoLock(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&, std::__1::vector<std::__1::tuple<std::__1::function<void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)>, StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::shared_ptr<DB::IAccessEntity const> >, std::__1::allocator<std::__1::tuple<std::__1::function<void (StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::shared_ptr<DB::IAccessEntity const> const&)>, StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::shared_ptr<DB::IAccessEntity const> > > >&) /home/alesap/code/cpp/ClickHouse/src/Access/DiskAccessStorage.cpp:713:23 (clickhouse+0xf7fade0)
#21 DB::DiskAccessStorage::updateImpl(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) /home/alesap/code/cpp/ClickHouse/src/Access/DiskAccessStorage.cpp:697:5 (clickhouse+0xf7fa951)
#22 DB::IAccessStorage::update(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.cpp:335:5 (clickhouse+0xf812b42)
#23 DB::MultipleAccessStorage::updateImpl(StrongTypedef<DB::UInt128, DB::UUIDTag> const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) /home/alesap/code/cpp/ClickHouse/src/Access/MultipleAccessStorage.cpp:253:27 (clickhouse+0xf82951a)
#24 DB::IAccessStorage::update(std::__1::vector<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::allocator<StrongTypedef<DB::UInt128, DB::UUIDTag> > > const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&)::$_12::operator()() const /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.cpp:345:27 (clickhouse+0xf812c28)
#25 bool DB::(anonymous namespace)::ErrorsTracker::tryCall<DB::IAccessStorage::update(std::__1::vector<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::allocator<StrongTypedef<DB::UInt128, DB::UUIDTag> > > const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&)::$_12>(DB::IAccessStorage::update(std::__1::vector<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::allocator<StrongTypedef<DB::UInt128, DB::UUIDTag> > > const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&)::$_12 const&) /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.cpp:67:17 (clickhouse+0xf812c28)
#26 DB::IAccessStorage::update(std::__1::vector<StrongTypedef<DB::UInt128, DB::UUIDTag>, std::__1::allocator<StrongTypedef<DB::UInt128, DB::UUIDTag> > > const&, std::__1::function<std::__1::shared_ptr<DB::IAccessEntity const> (std::__1::shared_ptr<DB::IAccessEntity const> const&)> const&) /home/alesap/code/cpp/ClickHouse/src/Access/IAccessStorage.cpp:346:17 (clickhouse+0xf812c28)
#27 DB::InterpreterGrantQuery::execute() /home/alesap/code/cpp/ClickHouse/src/Interpreters/InterpreterGrantQuery.cpp:251:20 (clickhouse+0xff62205)
#28 DB::executeQueryImpl(char const*, char const*, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool, DB::ReadBuffer*) /home/alesap/code/cpp/ClickHouse/src/Interpreters/executeQuery.cpp:412:28 (clickhouse+0x10387860)
#29 DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool) /home/alesap/code/cpp/ClickHouse/src/Interpreters/executeQuery.cpp:708:30 (clickhouse+0x1038667e)
#30 DB::TCPHandler::runImpl() /home/alesap/code/cpp/ClickHouse/src/Server/TCPHandler.cpp:254:24 (clickhouse+0x10aa4f51)
#31 DB::TCPHandler::run() /home/alesap/code/cpp/ClickHouse/src/Server/TCPHandler.cpp:1311:9 (clickhouse+0x10aafcd7)
#32 Poco::Net::TCPServerConnection::start() /home/alesap/code/cpp/ClickHouse/contrib/poco/Net/src/TCPServerConnection.cpp:43:3 (clickhouse+0x11ab9b02)
#33 Poco::Net::TCPServerDispatcher::run() /home/alesap/code/cpp/ClickHouse/contrib/poco/Net/src/TCPServerDispatcher.cpp:114:20 (clickhouse+0x11aba219)
#34 Poco::PooledThread::run() /home/alesap/code/cpp/ClickHouse/contrib/poco/Foundation/src/ThreadPool.cpp:199:14 (clickhouse+0x11c1c281)
#35 Poco::(anonymous namespace)::RunnableHolder::run() /home/alesap/code/cpp/ClickHouse/contrib/poco/Foundation/src/Thread.cpp:55:11 (clickhouse+0x11c1a94f)
#36 Poco::ThreadImpl::runnableEntry(void*) /home/alesap/code/cpp/ClickHouse/contrib/poco/Foundation/src/Thread_POSIX.cpp:345:27 (clickhouse+0x11c192b7)
Thread T29 'TCPHandler' (tid=35, running) created by main thread at:
#0 pthread_create <null> (clickhouse+0x74aa94b)
#1 Poco::ThreadImpl::startImpl(Poco::SharedPtr<Poco::Runnable, Poco::ReferenceCounter, Poco::ReleasePolicy<Poco::Runnable> >) /home/alesap/code/cpp/ClickHouse/contrib/poco/Foundation/src/Thread_POSIX.cpp:202:6 (clickhouse+0x11c18d67)
#2 Poco::Thread::start(Poco::Runnable&) /home/alesap/code/cpp/ClickHouse/contrib/poco/Foundation/src/Thread.cpp:128:2 (clickhouse+0x11c1a3bc)
#3 Poco::PooledThread::start() /home/alesap/code/cpp/ClickHouse/contrib/poco/Foundation/src/ThreadPool.cpp:85:10 (clickhouse+0x11c1c682)
#4 Poco::ThreadPool::ThreadPool(int, int, int, int) /home/alesap/code/cpp/ClickHouse/contrib/poco/Foundation/src/ThreadPool.cpp:252:12 (clickhouse+0x11c1c682)
#5 DB::Server::main(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) /home/alesap/code/cpp/ClickHouse/programs/server/Server.cpp:806:26 (clickhouse+0x7545179)
#6 Poco::Util::Application::run() /home/alesap/code/cpp/ClickHouse/contrib/poco/Util/src/Application.cpp:334:8 (clickhouse+0x11acd93b)
#7 DB::Server::run() /home/alesap/code/cpp/ClickHouse/programs/server/Server.cpp:205:25 (clickhouse+0x753c23a)
#8 Poco::Util::ServerApplication::run(int, char**) /home/alesap/code/cpp/ClickHouse/contrib/poco/Util/src/ServerApplication.cpp:611:9 (clickhouse+0x11ae84d8)
#9 mainEntryClickHouseServer(int, char**) /home/alesap/code/cpp/ClickHouse/programs/server/Server.cpp:99:20 (clickhouse+0x753bd53)
#10 main /home/alesap/code/cpp/ClickHouse/programs/main.cpp:400:12 (clickhouse+0x753b032)
SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) (/usr/bin/clickhouse+0x74c7da6) in pthread_mutex_lock
==================
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugConfirmed user-visible misbehaviour in official releaseConfirmed user-visible misbehaviour in official releasecomp-rbacAuthorization: roles, grants, quotas, row-level security, access checks.Authorization: roles, grants, quotas, row-level security, access checks.