hokein wrote: Heads-up: this patch triggers a MSAN failure in an lldb test (`lldb/test/API/commands/expression/call-function/TestCallStdStringFunction.py`), the stacktrace:
``` ==5633==WARNING: MemorySanitizer: use-of-uninitialized-value #0 in decltype(auto) clang::ASTNodeImporter::CallOverloadedCreateFun<clang::ClassTemplateSpecializationDecl>::operator()<clang::ASTContext&, clang::TagTypeKind, clang::DeclContext*&, clang::SourceLocation&, clang::SourceLocation&, clang::ClassTemplateDecl*&, llvm::SmallVector<clang::TemplateArgument, 2u>&, bool, clang::ClassTemplateSpecializationDecl*&>(clang::ASTContext&, clang::TagTypeKind&&, clang::DeclContext*&, clang::SourceLocation&, clang::SourceLocation&, clang::ClassTemplateDecl*&, llvm::SmallVector<clang::TemplateArgument, 2u>&, bool&&, clang::ClassTemplateSpecializationDecl*&) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:234:16 #1 in bool clang::ASTNodeImporter::GetImportedOrCreateSpecialDecl<clang::ClassTemplateSpecializationDecl, clang::ASTNodeImporter::CallOverloadedCreateFun<clang::ClassTemplateSpecializationDecl>, clang::ClassTemplateSpecializationDecl, clang::ASTContext&, clang::TagTypeKind, clang::DeclContext*&, clang::SourceLocation&, clang::SourceLocation&, clang::ClassTemplateDecl*&, llvm::SmallVector<clang::TemplateArgument, 2u>&, bool, clang::ClassTemplateSpecializationDecl*&>(clang::ClassTemplateSpecializationDecl*&, clang::ASTNodeImporter::CallOverloadedCreateFun<clang::ClassTemplateSpecializationDecl>, clang::ClassTemplateSpecializationDecl*, clang::ASTContext&, clang::TagTypeKind&&, clang::DeclContext*&, clang::SourceLocation&, clang::SourceLocation&, clang::ClassTemplateDecl*&, llvm::SmallVector<clang::TemplateArgument, 2u>&, bool&&, clang::ClassTemplateSpecializationDecl*&) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:281:13 #2 in GetImportedOrCreateDecl<clang::ClassTemplateSpecializationDecl, clang::ClassTemplateSpecializationDecl, clang::ASTContext &, clang::TagTypeKind, clang::DeclContext *&, clang::SourceLocation &, clang::SourceLocation &, clang::ClassTemplateDecl *&, llvm::SmallVector<clang::TemplateArgument, 2U> &, bool, clang::ClassTemplateSpecializationDecl *&> llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:251:14 #3 in clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:6323:9 #4 in clang::declvisitor::Base<std::__msan::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*>>::Visit(clang::Decl*) llvm/llvm-project/clang/include/clang/AST/DeclNodes.inc #5 in clang::ASTImporter::ImportImpl(clang::Decl*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9126:19 #6 in lldb_private::ClangASTImporter::ASTImporterDelegate::ImportImpl(clang::Decl*) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:1134:23 #7 in clang::ASTImporter::Import(clang::Decl*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9521:27 #8 in std::__msan::conditional<std::is_base_of_v<clang::Type, clang::RecordDecl>, llvm::Expected<clang::RecordDecl const*>, llvm::Expected<clang::RecordDecl*>>::type clang::ASTNodeImporter::import<clang::RecordDecl>(clang::RecordDecl*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:203:31 #9 in clang::ASTNodeImporter::VisitRecordType(clang::RecordType const*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:1559:40 #10 in clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType>>::Visit(clang::Type const*) llvm/llvm-project/clang/include/clang/AST/TypeNodes.inc:76:1 #11 in clang::ASTImporter::Import(clang::Type const*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9157:36 #12 in clang::ASTImporter::Import(clang::QualType) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9171:31 #13 in import<clang::QualType> llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:217:23 #14 in llvm::Expected<clang::TemplateArgument> clang::ASTNodeImporter::import<clang::TemplateArgument>(clang::TemplateArgument const&) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:832:32 #15 in clang::ASTNodeImporter::ImportTemplateArguments(llvm::ArrayRef<clang::TemplateArgument>, llvm::SmallVectorImpl<clang::TemplateArgument>&) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:2453:24 #16 in clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:6219:11 #17 in clang::declvisitor::Base<std::__msan::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*>>::Visit(clang::Decl*) llvm/llvm-project/clang/include/clang/AST/DeclNodes.inc #18 in clang::ASTImporter::ImportImpl(clang::Decl*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9126:19 #19 in lldb_private::ClangASTImporter::ASTImporterDelegate::ImportImpl(clang::Decl*) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:1134:23 #20 in clang::ASTImporter::Import(clang::Decl*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9521:27 #21 in std::__msan::conditional<std::is_base_of_v<clang::Type, clang::RecordDecl>, llvm::Expected<clang::RecordDecl const*>, llvm::Expected<clang::RecordDecl*>>::type clang::ASTNodeImporter::import<clang::RecordDecl>(clang::RecordDecl*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:203:31 #22 in clang::ASTNodeImporter::VisitRecordType(clang::RecordType const*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:1559:40 #23 in clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType>>::Visit(clang::Type const*) llvm/llvm-project/clang/include/clang/AST/TypeNodes.inc:76:1 #24 in clang::ASTImporter::Import(clang::Type const*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9157:36 #25 in clang::ASTImporter::Import(clang::QualType) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9171:31 #26 in import<clang::QualType> llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:217:23 #27 in clang::QualType clang::ASTNodeImporter::importChecked<clang::QualType>(llvm::Error&, clang::QualType const&) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:692:30 #28 in clang::ASTNodeImporter::VisitTypedefNameDecl(clang::TypedefNameDecl*, bool) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:2823:27 #29 in VisitTypedefDecl llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:2862:10 #30 in clang::declvisitor::Base<std::__msan::add_pointer, clang::ASTNodeImporter, llvm::Expected<clang::Decl*>>::Visit(clang::Decl*) llvm/llvm-project/clang/include/clang/AST/DeclNodes.inc:466:1 #31 in clang::ASTImporter::ImportImpl(clang::Decl*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9126:19 #32 in lldb_private::ClangASTImporter::ASTImporterDelegate::ImportImpl(clang::Decl*) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:1134:23 #33 in clang::ASTImporter::Import(clang::Decl*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9521:27 #34 in std::__msan::conditional<std::is_base_of_v<clang::Type, clang::TypedefNameDecl>, llvm::Expected<clang::TypedefNameDecl const*>, llvm::Expected<clang::TypedefNameDecl*>>::type clang::ASTNodeImporter::import<clang::TypedefNameDecl>(clang::TypedefNameDecl*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:203:31 #35 in clang::ASTNodeImporter::VisitTypedefType(clang::TypedefType const*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:1441:45 #36 in clang::TypeVisitor<clang::ASTNodeImporter, llvm::Expected<clang::QualType>>::Visit(clang::Type const*) llvm/llvm-project/clang/include/clang/AST/TypeNodes.inc:81:1 #37 in clang::ASTImporter::Import(clang::Type const*) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9157:36 #38 in clang::ASTImporter::Import(clang::QualType) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9171:31 #39 in lldb_private::ClangASTImporter::CopyType(lldb_private::TypeSystemClang&, lldb_private::CompilerType const&) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:54:56 #40 in lldb_private::ClangASTSource::GuardedCopyType(lldb_private::CompilerType const&) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp:1486:26 #41 in lldb_private::ClangExpressionDeclMap::GetVariableValue(std::__msan::shared_ptr<lldb_private::Variable>&, lldb_private::Value&, lldb_private::TaggedASTType<1u>*, lldb_private::TaggedASTType<0u>*) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp:1513:30 #42 in lldb_private::ClangExpressionDeclMap::AddOneVariable(lldb_private::NameSearchContext&, std::__msan::shared_ptr<lldb_private::Variable>, std::__msan::shared_ptr<lldb_private::ValueObject>) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp:1654:8 #43 in lldb_private::ClangExpressionDeclMap::LookupLocalVariable(lldb_private::NameSearchContext&, lldb_private::ConstString, lldb_private::SymbolContext&, lldb_private::CompilerDeclContext const&) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp:1094:7 #44 in lldb_private::ClangExpressionDeclMap::FindExternalVisibleDecls(lldb_private::NameSearchContext&, std::__msan::shared_ptr<lldb_private::Module>, lldb_private::CompilerDeclContext const&) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp:1418:9 #45 in lldb_private::ClangExpressionDeclMap::FindExternalVisibleDecls(lldb_private::NameSearchContext&) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp:721:5 #46 in lldb_private::ClangASTSource::FindExternalVisibleDeclsByName(clang::DeclContext const*, clang::DeclarationName, clang::DeclContext const*) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp:180:3 #47 in lldb_private::ClangASTSource::ClangASTSourceProxy::FindExternalVisibleDeclsByName(clang::DeclContext const*, clang::DeclarationName, clang::DeclContext const*) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h:219:25 #48 in clang::DeclContext::lookupImpl(clang::DeclarationName, clang::DeclContext const*) const llvm/llvm-project/clang/lib/AST/DeclBase.cpp:1913:17 #49 in clang::DeclContext::lookup(clang::DeclarationName) const llvm/llvm-project/clang/lib/AST/DeclBase.cpp:1873:31 #50 in LookupDirect(clang::Sema&, clang::LookupResult&, clang::DeclContext const*) llvm/llvm-project/clang/lib/Sema/SemaLookup.cpp:1127:39 #51 in CppNamespaceLookup(clang::Sema&, clang::LookupResult&, clang::ASTContext&, clang::DeclContext const*, (anonymous namespace)::UnqualUsingDirectiveSet&) llvm/llvm-project/clang/lib/Sema/SemaLookup.cpp:1225:16 #52 in clang::Sema::CppLookupName(clang::LookupResult&, clang::Scope*) llvm/llvm-project/clang/lib/Sema/SemaLookup.cpp:1524:15 #53 in clang::Sema::LookupName(clang::LookupResult&, clang::Scope*, bool, bool) llvm/llvm-project/clang/lib/Sema/SemaLookup.cpp:2280:9 #54 in clang::Sema::BuildUsingDeclaration(clang::Scope*, clang::AccessSpecifier, clang::SourceLocation, bool, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo, clang::SourceLocation, clang::ParsedAttributesView const&, bool, bool) llvm/llvm-project/clang/lib/Sema/SemaDeclCXX.cpp:12832:5 #55 in clang::Sema::ActOnUsingDeclaration(clang::Scope*, clang::AccessSpecifier, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::UnqualifiedId&, clang::SourceLocation, clang::ParsedAttributesView const&) llvm/llvm-project/clang/lib/Sema/SemaDeclCXX.cpp:12367:7 #56 in clang::Parser::ParseUsingDeclaration(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo const&, clang::SourceLocation, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) llvm/llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:899:26 #57 in clang::Parser::ParseUsingDirectiveOrDeclaration(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo const&, clang::SourceLocation&, clang::ParsedAttributes&) llvm/llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:537:10 #58 in clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) llvm/llvm-project/clang/lib/Parse/ParseDecl.cpp:2081:12 #59 in clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) llvm/llvm-project/clang/lib/Parse/ParseStmt.cpp #60 in clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) llvm/llvm-project/clang/lib/Parse/ParseStmt.cpp:125:20 #61 in clang::Parser::ParseCompoundStatementBody(bool) llvm/llvm-project/clang/lib/Parse/ParseStmt.cpp:1267:11 #62 in clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) llvm/llvm-project/clang/lib/Parse/ParseStmt.cpp:2577:21 #63 in clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) llvm/llvm-project/clang/lib/Parse/Parser.cpp:1520:10 #64 in clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) llvm/llvm-project/clang/lib/Parse/ParseDecl.cpp #65 in clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) llvm/llvm-project/clang/lib/Parse/Parser.cpp:1244:10 #66 in clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) llvm/llvm-project/clang/lib/Parse/Parser.cpp:1266:12 #67 in clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) llvm/llvm-project/clang/lib/Parse/Parser.cpp:1069:14 #68 in clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) llvm/llvm-project/clang/lib/Parse/Parser.cpp:758:12 #69 in clang::ParseAST(clang::Sema&, bool, bool) llvm/llvm-project/clang/lib/Parse/ParseAST.cpp:171:20 #70 in lldb_private::ClangExpressionParser::ParseInternal(lldb_private::DiagnosticManager&, clang::CodeCompleteConsumer*, unsigned int, unsigned int) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp:1347:5 #71 in lldb_private::ClangExpressionParser::Parse(lldb_private::DiagnosticManager&) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp:1204:10 #72 in lldb_private::ClangUserExpression::TryParse(lldb_private::DiagnosticManager&, lldb_private::ExecutionContext&, lldb_private::ExecutionPolicy, bool, bool) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangUserExpression.cpp:579:35 #73 in lldb_private::ClangUserExpression::Parse(lldb_private::DiagnosticManager&, lldb_private::ExecutionContext&, lldb_private::ExecutionPolicy, bool, bool) llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangUserExpression.cpp:673:24 #74 in lldb_private::UserExpression::Evaluate(lldb_private::ExecutionContext&, lldb_private::EvaluateExpressionOptions const&, llvm::StringRef, llvm::StringRef, std::__msan::shared_ptr<lldb_private::ValueObject>&, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char>>*, lldb_private::ValueObject*) llvm/llvm-project/lldb/source/Expression/UserExpression.cpp:280:27 #75 in lldb_private::Target::EvaluateExpression(llvm::StringRef, lldb_private::ExecutionContextScope*, std::__msan::shared_ptr<lldb_private::ValueObject>&, lldb_private::EvaluateExpressionOptions const&, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char>>*, lldb_private::ValueObject*) llvm/llvm-project/lldb/source/Target/Target.cpp:2853:9 #76 in lldb_private::CommandObjectExpression::EvaluateExpression(llvm::StringRef, lldb_private::Stream&, lldb_private::Stream&, lldb_private::CommandReturnObject&) llvm/llvm-project/lldb/source/Commands/CommandObjectExpression.cpp:426:38 #77 in lldb_private::CommandObjectExpression::DoExecute(llvm::StringRef, lldb_private::CommandReturnObject&) llvm/llvm-project/lldb/source/Commands/CommandObjectExpression.cpp:667:7 #78 in lldb_private::CommandObjectRaw::Execute(char const*, lldb_private::CommandReturnObject&) llvm/llvm-project/lldb/source/Interpreter/CommandObject.cpp:853:7 #79 in lldb_private::CommandInterpreter::HandleCommand(char const*, lldb_private::LazyBool, lldb_private::CommandReturnObject&, bool) llvm/llvm-project/lldb/source/Interpreter/CommandInterpreter.cpp:2085:14 ``` https://github.com/llvm/llvm-project/pull/125791 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits