Skip to content

MemorySanitizer: use-of-uninitialized-value in DB::ColumnString::sizeAt(long) #86134

@nikitamikhaylov

Description

@nikitamikhaylov

Describe the bug

https://s3.amazonaws.com/clickhouse-test-reports/json.html?REF=master&sha=9b7ef376fd43daf0462132b168caa9ecf94fd071&name_0=MasterCI&name_1=AST%20fuzzer%20%28amd_msan%29&name_1=AST%20fuzzer%20%28amd_msan%29

Logging trace to server.log
==606==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x55a30c25f168 in DB::ColumnString::sizeAt(long) const ci/tmp/build/./src/Columns/ColumnString.h:49:9
    #1 0x55a30c25f168 in DB::ColumnString::doCompareAt(unsigned long, unsigned long, DB::IColumn const&, int) const ci/tmp/build/./src/Columns/ColumnString.h:261:122
    #2 0x55a30c52adcc in DB::IColumn::compareAt(unsigned long, unsigned long, DB::IColumn const&, int) const ci/tmp/build/./src/Columns/IColumn.h:359:16
    #3 0x55a30c52adcc in COW<DB::IColumn>::mutable_ptr<DB::IColumn> DB::ColumnUnique<DB::ColumnString>::uniqueInsertRangeImpl<char8_t>(DB::IColumn const&, unsigned long, unsigned long, unsigned long, DB::ColumnVector<char8_t>::MutablePtr&&, DB::ReverseIndex<unsigned long, DB::ColumnString>*, unsigned long) ci/tmp/build/./src/Columns/ColumnUnique.h:652:26
    #4 0x55a30c3ced00 in COW<DB::IColumn>::mutable_ptr<DB::IColumn> DB::ColumnUnique<DB::ColumnString>::uniqueInsertRangeFrom(DB::IColumn const&, unsigned long, unsigned long)::'lambda'(auto)::operator()<char8_t>(auto) const ci/tmp/build/./src/Columns/ColumnUnique.h:689:26
    #5 0x55a30c3ce2f3 in DB::ColumnUnique<DB::ColumnString>::uniqueInsertRangeFrom(DB::IColumn const&, unsigned long, unsigned long) ci/tmp/build/./src/Columns/ColumnUnique.h:697:28
    #6 0x55a2f8411e38 in DB::IExecutableFunction::executeWithoutSparseColumns(std::__1::vector<DB::ColumnWithTypeAndName, std::__1::allocator<DB::ColumnWithTypeAndName>> const&, std::__1::shared_ptr<DB::IDataType const> const&, unsigned long, bool) const (/repo/ci/tmp/clickhouse+0x3264ae38) (BuildId: 2763f4f9b197e38fe6de10f920ab077355b8aaeb)
    #7 0x55a2f8415125 in DB::IExecutableFunction::execute(std::__1::vector<DB::ColumnWithTypeAndName, std::__1::allocator<DB::ColumnWithTypeAndName>> const&, std::__1::shared_ptr<DB::IDataType const> const&, unsigned long, bool) const (/repo/ci/tmp/clickhouse+0x3264e125) (BuildId: 2763f4f9b197e38fe6de10f920ab077355b8aaeb)
    #8 0x55a2fcde57c1 in DB::executeActionForPartialResult(DB::ActionsDAG::Node const*, std::__1::vector<DB::ColumnWithTypeAndName, std::__1::allocator<DB::ColumnWithTypeAndName>>, unsigned long) ci/tmp/build/./src/Interpreters/ActionsDAG.cpp:825:53
    #9 0x55a2fcde57c1 in DB::ActionsDAG::evaluatePartialResult(std::__1::unordered_map<DB::ActionsDAG::Node const*, DB::ColumnWithTypeAndName, std::__1::hash<DB::ActionsDAG::Node const*>, std::__1::equal_to<DB::ActionsDAG::Node const*>, std::__1::allocator<std::__1::pair<DB::ActionsDAG::Node const* const, DB::ColumnWithTypeAndName>>>&, std::__1::vector<DB::ActionsDAG::Node const*, std::__1::allocator<DB::ActionsDAG::Node const*>> const&, unsigned long, bool) ci/tmp/build/./src/Interpreters/ActionsDAG.cpp:1023:48
    #10 0x55a2fcde152a in DB::ActionsDAG::updateHeader(DB::Block const&) const ci/tmp/build/./src/Interpreters/ActionsDAG.cpp:923:26
    #11 0x55a310e19216 in DB::ExpressionTransform::transformHeader(DB::Block const&, DB::ActionsDAG const&) ci/tmp/build/./src/Processors/Transforms/ExpressionTransform.cpp:12:23
    #12 0x55a311609742 in DB::ExpressionStep::ExpressionStep(std::__1::shared_ptr<DB::Block const>, DB::ActionsDAG) ci/tmp/build/./src/Processors/QueryPlan/ExpressionStep.cpp:38:39
    #13 0x55a2fde1ca7a in std::__1::__unique_if<DB::ExpressionStep>::__unique_single std::__1::make_unique[abi:ne190107]<DB::ExpressionStep, std::__1::shared_ptr<DB::Block const> const&, DB::ActionsDAG>(std::__1::shared_ptr<DB::Block const> const&, DB::ActionsDAG&&) ci/tmp/build/./contrib/llvm-project/libcxx/include/__memory/unique_ptr.h:634:30
    #14 0x55a2fde1ca7a in DB::(anonymous namespace)::addExpressionStep(std::__1::shared_ptr<DB::PlannerContext> const&, DB::QueryPlan&, std::__1::shared_ptr<DB::ActionsAndProjectInputsFlag>&, DB::CorrelatedSubtrees const&, DB::SelectQueryOptions const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::unordered_set<std::__1::shared_ptr<DB::FutureSet>, std::__1::hash<std::__1::shared_ptr<DB::FutureSet>>, std::__1::equal_to<std::__1::shared_ptr<DB::FutureSet>>, std::__1::allocator<std::__1::shared_ptr<DB::FutureSet>>>&) ci/tmp/build/./src/Planner/Planner.cpp:444:28
    #15 0x55a2fde01d43 in DB::Planner::buildPlanForQueryNode() ci/tmp/build/./src/Planner/Planner.cpp:1742:17
    #16 0x55a2fddf0a7e in DB::Planner::buildQueryPlanIfNeeded() ci/tmp/build/./src/Planner/Planner.cpp:1402:9
    #17 0x55a30025f251 in DB::InterpreterSelectQueryAnalyzer::getQueryPlan() ci/tmp/build/./src/Interpreters/InterpreterSelectQueryAnalyzer.cpp:269:13
    #18 0x55a300db445f in DB::executeQueryImpl(char const*, char const*, std::__1::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum, std::__1::unique_ptr<DB::ReadBuffer, std::__1::default_delete<DB::ReadBuffer>>&, std::__1::shared_ptr<DB::IAST>&, std::__1::shared_ptr<DB::ImplicitTransactionControlExecutor>) ci/tmp/build/./src/Interpreters/executeQuery.cpp:1523:48
    #19 0x55a300da5a81 in DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum) ci/tmp/build/./src/Interpreters/executeQuery.cpp:1782:11
    #20 0x55a3100d2fea in DB::TCPHandler::runImpl() ci/tmp/build/./src/Server/TCPHandler.cpp:739:68
    #21 0x55a31013ed4d in DB::TCPHandler::run() ci/tmp/build/./src/Server/TCPHandler.cpp:2740:9
    #22 0x55a31c98e49f in Poco::Net::TCPServerConnection::start() ci/tmp/build/./base/poco/Net/src/TCPServerConnection.cpp:40:3
    #23 0x55a31c98f491 in Poco::Net::TCPServerDispatcher::run() ci/tmp/build/./base/poco/Net/src/TCPServerDispatcher.cpp:115:38
    #24 0x55a31c861534 in Poco::PooledThread::run() ci/tmp/build/./base/poco/Foundation/src/ThreadPool.cpp:205:14
    #25 0x55a31c85e2ad in Poco::(anonymous namespace)::RunnableHolder::run() ci/tmp/build/./base/poco/Foundation/src/Thread.cpp:45:11
    #26 0x55a31c85ab10 in Poco::ThreadImpl::runnableEntry(void*) ci/tmp/build/./base/poco/Foundation/src/Thread_POSIX.cpp:341:27
    #27 0x7f9319951ac2 in start_thread nptl/pthread_create.c:442:8
    #28 0x7f93199e384f  misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

  Uninitialized value was created by a heap allocation
    #0 0x55a2cf7e6e62 in malloc (/repo/ci/tmp/clickhouse+0x9a1fe62) (BuildId: 2763f4f9b197e38fe6de10f920ab077355b8aaeb)
    #1 0x55a2ea9127b8 in void* (anonymous namespace)::allocNoTrack<false, false>(unsigned long, unsigned long) ci/tmp/build/./src/Common/Allocator.cpp:86:19
    #2 0x55a2ea9127b8 in Allocator<false, false>::alloc(unsigned long, unsigned long) ci/tmp/build/./src/Common/Allocator.cpp:133:18
    #3 0x55a2cf86b47b in void DB::PODArrayBase<8ul, 4096ul, Allocator<false, false>, 63ul, 64ul>::resize<>(unsigned long) (/repo/ci/tmp/clickhouse+0x9aa447b) (BuildId: 2763f4f9b197e38fe6de10f920ab077355b8aaeb)
    #4 0x55a2e4c5a916 in DB::FunctionStringReplace<DB::ReplaceRegexpImpl<DB::(anonymous namespace)::NameReplaceRegexpOne, (DB::ReplaceRegexpTraits)0>, DB::(anonymous namespace)::NameReplaceRegexpOne>::executeImpl(std::__1::vector<DB::ColumnWithTypeAndName, std::__1::allocator<DB::ColumnWithTypeAndName>> const&, std::__1::shared_ptr<DB::IDataType const> const&, unsigned long) const replaceRegexpOne.cpp
    #5 0x55a2cf863461 in DB::IFunction::executeImplDryRun(std::__1::vector<DB::ColumnWithTypeAndName, std::__1::allocator<DB::ColumnWithTypeAndName>> const&, std::__1::shared_ptr<DB::IDataType const> const&, unsigned long) const (/repo/ci/tmp/clickhouse+0x9a9c461) (BuildId: 2763f4f9b197e38fe6de10f920ab077355b8aaeb)
    #6 0x55a2f841ef1a in DB::FunctionToExecutableFunctionAdaptor::executeDryRunImpl(std::__1::vector<DB::ColumnWithTypeAndName, std::__1::allocator<DB::ColumnWithTypeAndName>> const&, std::__1::shared_ptr<DB::IDataType const> const&, unsigned long) const ci/tmp/build/./src/Functions/IFunctionAdaptors.cpp:16:22
    #7 0x55a2f840ad42 in DB::IExecutableFunction::executeWithoutLowCardinalityColumns(std::__1::vector<DB::ColumnWithTypeAndName, std::__1::allocator<DB::ColumnWithTypeAndName>> const&, std::__1::shared_ptr<DB::IDataType const> const&, unsigned long, bool) const (/repo/ci/tmp/clickhouse+0x32643d42) (BuildId: 2763f4f9b197e38fe6de10f920ab077355b8aaeb)
    #8 0x55a2f8411b18 in DB::IExecutableFunction::executeWithoutSparseColumns(std::__1::vector<DB::ColumnWithTypeAndName, std::__1::allocator<DB::ColumnWithTypeAndName>> const&, std::__1::shared_ptr<DB::IDataType const> const&, unsigned long, bool) const (/repo/ci/tmp/clickhouse+0x3264ab18) (BuildId: 2763f4f9b197e38fe6de10f920ab077355b8aaeb)
    #9 0x55a2f8415125 in DB::IExecutableFunction::execute(std::__1::vector<DB::ColumnWithTypeAndName, std::__1::allocator<DB::ColumnWithTypeAndName>> const&, std::__1::shared_ptr<DB::IDataType const> const&, unsigned long, bool) const (/repo/ci/tmp/clickhouse+0x3264e125) (BuildId: 2763f4f9b197e38fe6de10f920ab077355b8aaeb)
    #10 0x55a2fcde57c1 in DB::executeActionForPartialResult(DB::ActionsDAG::Node const*, std::__1::vector<DB::ColumnWithTypeAndName, std::__1::allocator<DB::ColumnWithTypeAndName>>, unsigned long) ci/tmp/build/./src/Interpreters/ActionsDAG.cpp:825:53
    #11 0x55a2fcde57c1 in DB::ActionsDAG::evaluatePartialResult(std::__1::unordered_map<DB::ActionsDAG::Node const*, DB::ColumnWithTypeAndName, std::__1::hash<DB::ActionsDAG::Node const*>, std::__1::equal_to<DB::ActionsDAG::Node const*>, std::__1::allocator<std::__1::pair<DB::ActionsDAG::Node const* const, DB::ColumnWithTypeAndName>>>&, std::__1::vector<DB::ActionsDAG::Node const*, std::__1::allocator<DB::ActionsDAG::Node const*>> const&, unsigned long, bool) ci/tmp/build/./src/Interpreters/ActionsDAG.cpp:1023:48
    #12 0x55a2fcde152a in DB::ActionsDAG::updateHeader(DB::Block const&) const ci/tmp/build/./src/Interpreters/ActionsDAG.cpp:923:26
    #13 0x55a310e19216 in DB::ExpressionTransform::transformHeader(DB::Block const&, DB::ActionsDAG const&) ci/tmp/build/./src/Processors/Transforms/ExpressionTransform.cpp:12:23
    #14 0x55a311609742 in DB::ExpressionStep::ExpressionStep(std::__1::shared_ptr<DB::Block const>, DB::ActionsDAG) ci/tmp/build/./src/Processors/QueryPlan/ExpressionStep.cpp:38:39
    #15 0x55a2fde1ca7a in std::__1::__unique_if<DB::ExpressionStep>::__unique_single std::__1::make_unique[abi:ne190107]<DB::ExpressionStep, std::__1::shared_ptr<DB::Block const> const&, DB::ActionsDAG>(std::__1::shared_ptr<DB::Block const> const&, DB::ActionsDAG&&) ci/tmp/build/./contrib/llvm-project/libcxx/include/__memory/unique_ptr.h:634:30
    #16 0x55a2fde1ca7a in DB::(anonymous namespace)::addExpressionStep(std::__1::shared_ptr<DB::PlannerContext> const&, DB::QueryPlan&, std::__1::shared_ptr<DB::ActionsAndProjectInputsFlag>&, DB::CorrelatedSubtrees const&, DB::SelectQueryOptions const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::unordered_set<std::__1::shared_ptr<DB::FutureSet>, std::__1::hash<std::__1::shared_ptr<DB::FutureSet>>, std::__1::equal_to<std::__1::shared_ptr<DB::FutureSet>>, std::__1::allocator<std::__1::shared_ptr<DB::FutureSet>>>&) ci/tmp/build/./src/Planner/Planner.cpp:444:28
    #17 0x55a2fde01d43 in DB::Planner::buildPlanForQueryNode() ci/tmp/build/./src/Planner/Planner.cpp:1742:17
    #18 0x55a2fddf0a7e in DB::Planner::buildQueryPlanIfNeeded() ci/tmp/build/./src/Planner/Planner.cpp:1402:9
    #19 0x55a30025f251 in DB::InterpreterSelectQueryAnalyzer::getQueryPlan() ci/tmp/build/./src/Interpreters/InterpreterSelectQueryAnalyzer.cpp:269:13
    #20 0x55a300db445f in DB::executeQueryImpl(char const*, char const*, std::__1::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum, std::__1::unique_ptr<DB::ReadBuffer, std::__1::default_delete<DB::ReadBuffer>>&, std::__1::shared_ptr<DB::IAST>&, std::__1::shared_ptr<DB::ImplicitTransactionControlExecutor>) ci/tmp/build/./src/Interpreters/executeQuery.cpp:1523:48
    #21 0x55a300da5a81 in DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum) ci/tmp/build/./src/Interpreters/executeQuery.cpp:1782:11
    #22 0x55a3100d2fea in DB::TCPHandler::runImpl() ci/tmp/build/./src/Server/TCPHandler.cpp:739:68

SUMMARY: MemorySanitizer: use-of-uninitialized-value ci/tmp/build/./src/Columns/ColumnString.h:49:9 in DB::ColumnString::sizeAt(long) const

Metadata

Metadata

Assignees

Labels

fuzzProblem found by one of the fuzzerstestingSpecial issue with list of bugs found by CI

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions