Description
version : llvmorg-17.0.3
Recently, when using clangd in vscode remote, once a certain file is encountered, the memory will explode, eventually causing the entire machine to go out of memory (clangd consumes more than 64G of memory). Below is the stack (using the release version, compiled with -g)
#0 0x00007f4d2d1a8233 in _int_malloc () from /lib64/libc.so.6
#1 0x00007f4d2d1ab10c in malloc () from /lib64/libc.so.6
#2 0x0000000000a2b2d8 in llvm::SmallVectorBase<unsigned int>::grow_pod(void*, unsigned long, unsigned long) ()
#3 0x0000000000f35070 in llvm::SmallVectorTemplateCommon<std::pair<clang::DiagnosticsEngine::ArgumentKind, long>, void>::grow_pod (TSize=16, MinSize=<optimized out>, this=0x7f4d25fe3710) at /llvmorg-17.0.3/llvm/include/llvm/ADT/SmallVector.h:140
#4 llvm::SmallVectorTemplateBase<std::pair<clang::DiagnosticsEngine::ArgumentKind, long>, true>::grow (MinSize=<optimized out>, this=0x7f4d25fe3710) at /llvmorg-17.0.3/llvm/include/llvm/ADT/SmallVector.h:529
#5 llvm::SmallVectorTemplateCommon<std::pair<clang::DiagnosticsEngine::ArgumentKind, long>, void>::reserveForParamAndGetAddressImpl<llvm::SmallVectorTemplateBase<std::pair<clang::DiagnosticsEngine::ArgumentKind, long>, true> > (N=1, Elt=<synthetic pointer>..., This=0x7f4d25fe3710)
at /llvmorg-17.0.3/llvm/include/llvm/ADT/SmallVector.h:246
#6 llvm::SmallVectorTemplateBase<std::pair<clang::DiagnosticsEngine::ArgumentKind, long>, true>::reserveForParamAndGetAddress (N=1, Elt=<synthetic pointer>..., this=0x7f4d25fe3710) at /llvmorg-17.0.3/llvm/include/llvm/ADT/SmallVector.h:541
#7 llvm::SmallVectorTemplateBase<std::pair<clang::DiagnosticsEngine::ArgumentKind, long>, true>::push_back (Elt=..., this=0x7f4d25fe3710) at /llvmorg-17.0.3/llvm/include/llvm/ADT/SmallVector.h:566
#8 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x6a4068 <(anonymous namespace)::StaticDiagInfoDescriptions+249544> "'", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1142
#9 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#10 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x6a3d23 <(anonymous namespace)::StaticDiagInfoDescriptions+248707> ")' clause%select{s|}1", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#11 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#12 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x6a3cf0 <(anonymous namespace)::StaticDiagInfoDescriptions+248656> " cannot be mixed with '%0(%select{sink:vec|source}1)' clause%select{s|}1", DiagEnd=<optimized out>, OutStr=...)
at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#13 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#14 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x6a3cdb <(anonymous namespace)::StaticDiagInfoDescriptions+248635> ")' clause%select{|s}1 cannot be mixed with '%0(%select{sink:vec|source}1)' clause%select{s|}1", DiagEnd=<optimized out>, OutStr=...)
at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#15 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#16 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x6a2e66 <(anonymous namespace)::StaticDiagInfoDescriptions+244934> "", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#17 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#18 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x6a138a <(anonymous namespace)::StaticDiagInfoDescriptions+238058> "", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#19 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#20 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x6a08f0 <(anonymous namespace)::StaticDiagInfoDescriptions+235344> " type", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#21 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#22 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69fb28 <(anonymous namespace)::StaticDiagInfoDescriptions+231816> ", not %0", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#23 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#24 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69f1b4 <(anonymous namespace)::StaticDiagInfoDescriptions+229396> " because assigning method's 2nd parameter of type %0 is not an Objective-C pointer type", DiagEnd=<optimized out>, OutStr=...)
at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#25 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#26 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69ea67 <(anonymous namespace)::StaticDiagInfoDescriptions+227527> " element must have Objective-C object return type instead of %0", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#27 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#28 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69e6bf <(anonymous namespace)::StaticDiagInfoDescriptions+226591> " %3", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#29 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#30 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69e660 <(anonymous namespace)::StaticDiagInfoDescriptions+226496> " declaration conflicts with previous %select{|direct }2declaration of %select{method|property}1 %3", DiagEnd=<optimized out>, OutStr=...)
at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#31 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#32 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69e3eb <(anonymous namespace)::StaticDiagInfoDescriptions+225867> "", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#33 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#34 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69c9ab <(anonymous namespace)::StaticDiagInfoDescriptions+219147> "", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#35 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#36 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69bde6 <(anonymous namespace)::StaticDiagInfoDescriptions+216134> "", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#37 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#38 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69b4bd <(anonymous namespace)::StaticDiagInfoDescriptions+213789> " follows declaration in %select{the global module|module %4}3", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#39 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#40 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69b239 <(anonymous namespace)::StaticDiagInfoDescriptions+213145> " method %0 not found ; did you mean %2?", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#41 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#42 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69ad1b <(anonymous namespace)::StaticDiagInfoDescriptions+211835> ", but function has %select{non-const lvalue|rvalue}2 ref-qualifier", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#43 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#44 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69aa5c <(anonymous namespace)::StaticDiagInfoDescriptions+211132> " %2?", DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#45 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#46 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x69a6ec <(anonymous namespace)::StaticDiagInfoDescriptions+210252> " integers and enum types, but was given %2%select{| whose underlying type is %4}3", DiagEnd=<optimized out>, OutStr=...)
at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
.......
.......
....... something like FormatDiagnostic
.......
.......
.......
.......
#224 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930, DiagStr=0x67f46c <(anonymous namespace)::StaticDiagInfoDescriptions+99020> " found %select{%select{no super class|super class with type %5}4|instance variable '%4' access control is %select{|@private|@protected|@public|@package}5}3",
DiagEnd=<optimized out>, OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#225 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#226 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930,
DiagStr=0x67f30c <(anonymous namespace)::StaticDiagInfoDescriptions+98668> " has different definitions in different modules; first difference is this %select{||||static assert|field|method|type alias|typedef|data member|friend declaration|function template|method|instance var"..., DiagEnd=<optimized out>,
OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#227 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#228 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930,
DiagStr=0x67f1e8 <(anonymous namespace)::StaticDiagInfoDescriptions+98376> " found %select{end of class|public access specifier|private access specifier|protected access specifier|static assert|field|method|type alias|typedef|data member|friend declaration|function template|m"..., DiagEnd=<optimized out>,
OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#229 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#230 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930,
DiagStr=0x67f064 <(anonymous namespace)::StaticDiagInfoDescriptions+97988> " found %select{%select{method %5|constructor|destructor}4 that has %6 parameter%s6|%select{method %5|constructor|destructor}4 with %ordinal6 parameter of type %7%select{| decayed from %9}8|%select{met"..., DiagEnd=<optimized out>,
OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#231 0x0000000000f35375 in HandleSelectModifier (OutStr=..., ArgumentLen=<optimized out>, Argument=<optimized out>, ValNo=<optimized out>, DInfo=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:628
#232 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930,
DiagStr=0x67eeea <(anonymous namespace)::StaticDiagInfoDescriptions+97610> " first difference is %select{return type is %4|%ordinal4 parameter with name %5|%ordinal4 parameter with type %5%select{| decayed from %7}6|%ordinal4 parameter with%select{out|}5 a default argument|%o"..., DiagEnd=<optimized out>,
OutStr=...) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:1001
#233 0x0000000001de8f76 in clang::clangd::fillNonLocationData (DiagLevel=clang::DiagnosticsEngine::Error, Info=..., D=...) at /llvmorg-17.0.3/clang-tools-extra/clangd/Diagnostics.cpp:664
#234 0x0000000001dea974 in operator() (__closure=__closure@entry=0x7f4d25ff66e0, D=...) at /llvmorg-17.0.3/clang-tools-extra/clangd/Diagnostics.cpp:720
#235 0x0000000001df8222 in clang::clangd::StoreDiags::HandleDiagnostic (this=0x7f4d25ff9be0, DiagLevel=<optimized out>, Info=...) at /opt/gcc-11.1.0/include/c++/11.1.0/optional:440
#236 0x0000000000f3a572 in clang::DiagnosticIDs::EmitDiag (DiagLevel=clang::DiagnosticIDs::Error, Diag=..., this=0x7f4d1c01e1f0) at /llvmorg-17.0.3/clang/lib/Basic/DiagnosticIDs.cpp:823
#237 clang::DiagnosticIDs::ProcessDiag (this=this@entry=0x7f4d1c01e1f0, Diag=...) at /llvmorg-17.0.3/clang/lib/Basic/DiagnosticIDs.cpp:815
#238 0x0000000000f33f1b in clang::DiagnosticsEngine::ProcessDiag (this=0x7f4d1c001990) at /llvmorg-17.0.3/clang/include/clang/Basic/Diagnostic.h:1037
#239 clang::DiagnosticsEngine::EmitCurrentDiagnostic (this=0x7f4d1c001990, Force=<optimized out>) at /llvmorg-17.0.3/clang/lib/Basic/Diagnostic.cpp:545
#240 0x0000000000b61590 in clang::DiagnosticBuilder::~DiagnosticBuilder() ()
#241 0x0000000000e0f1f4 in clang::ODRDiagsEmitter::diagnoseMismatch(clang::FunctionDecl const*, clang::FunctionDecl const*) const ()
#242 0x0000000002b5b877 in clang::ASTReader::diagnoseOdrViolations() [clone .localalias] ()
#243 0x0000000002b5e761 in clang::ASTReader::FinishedDeserializing() [clone .part.0] ()
#244 0x0000000002bbac65 in clang::ASTReader::ReadDeclRecord(unsigned int) ()
#245 0x0000000002b4d6c9 in clang::ASTReader::GetDecl(unsigned int) [clone .localalias] ()
#246 0x0000000002b665c3 in clang::ASTReader::completeVisibleDeclsMap(clang::DeclContext const*) [clone .part.0] ()
#247 0x00000000018c2e1e in (anonymous namespace)::LookupVisibleHelper::lookupInDeclContext(clang::DeclContext*, clang::LookupResult&, bool, bool) ()
#248 0x00000000018c5282 in clang::Sema::LookupVisibleDecls(clang::DeclContext*, clang::Sema::LookupNameKind, clang::VisibleDeclConsumer&, bool, bool, bool) [clone .localalias] ()
#249 0x00000000018cf4f4 in clang::Sema::makeTypoCorrectionConsumer(clang::DeclarationNameInfo const&, clang::Sema::LookupNameKind, clang::Scope*, clang::CXXScopeSpec*, clang::CorrectionCandidateCallback&, clang::DeclContext*, bool, clang::ObjCObjectPointerType const*, bool) [clone .localalias] ()
#250 0x00000000018d0c1d in clang::Sema::CorrectTypo(clang::DeclarationNameInfo const&, clang::Sema::LookupNameKind, clang::Scope*, clang::CXXScopeSpec*, clang::CorrectionCandidateCallback&, clang::Sema::CorrectTypoKind, clang::DeclContext*, bool, clang::ObjCObjectPointerType const*, bool) ()
#251 0x0000000001536b02 in clang::Sema::DiagnoseUnknownTypeName(clang::IdentifierInfo*&, clang::SourceLocation, clang::Scope*, clang::CXXScopeSpec*, clang::OpaquePtr<clang::QualType>&, bool) ()
#252 0x0000000002a1a27d in clang::Parser::ParseImplicitInt(clang::DeclSpec&, clang::CXXScopeSpec*, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) [clone .localalias] ()
#253 0x0000000002a1e49c in clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) [clone .localalias] ()
#254 0x0000000002af8dad in clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) [clone .localalias] ()
#255 0x0000000002af9e9f in clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) [clone .part.0] ()
#256 0x0000000002b00676 in clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) [clone .localalias] ()
#257 0x0000000002b018da in clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) [clone .localalias] ()
#258 0x00000000029fe3ca in clang::ParseAST(clang::Sema&, bool, bool) [clone .localalias] ()
#259 0x000000000116f5f9 in clang::FrontendAction::Execute() ()
#260 0x0000000001ee75fd in clang::clangd::ParsedAST::build (Filename=..., Inputs=..., CI=..., CompilerInvocationDiags=..., Preamble=...) at /llvmorg-17.0.3/clang-tools-extra/clangd/ParsedAST.cpp:669
#261 0x0000000001f5d462 in clang::clangd::(anonymous namespace)::ASTWorker::generateDiagnostics (this=0x3946950, Invocation=..., Inputs=..., CIDiags=...) at /opt/gcc-11.1.0/include/c++/11.1.0/bits/basic_string.h:912
#262 0x0000000001f5dd83 in operator() (__closure=0x7f4cf80022d0) at /opt/gcc-11.1.0/include/c++/11.1.0/bits/unique_ptr.h:172
#263 0x0000000001f56965 in llvm::unique_function<void ()>::operator()() (this=0x3946bb0) at /llvmorg-17.0.3/llvm/include/llvm/ADT/FunctionExtras.h:382
#264 llvm::function_ref<void ()>::callback_fn<llvm::unique_function<void ()> >(long) (callable=60058544) at /llvmorg-17.0.3/llvm/include/llvm/ADT/STLFunctionalExtras.h:45
#265 llvm::function_ref<void ()>::operator()() const (this=<synthetic pointer>) at /llvmorg-17.0.3/llvm/include/llvm/ADT/STLFunctionalExtras.h:68
#266 clang::clangd::(anonymous namespace)::ASTWorker::runTask(llvm::StringRef, llvm::function_ref<void()>) (this=this@entry=0x3946950, Name=..., Task=...) at /llvmorg-17.0.3/clang-tools-extra/clangd/TUScheduler.cpp:1324
#267 0x0000000001f58439 in clang::clangd::(anonymous namespace)::ASTWorker::run (this=0x3946950) at /llvmorg-17.0.3/clang-tools-extra/clangd/TUScheduler.cpp:1458
#268 0x0000000002106f25 in llvm::unique_function<void ()>::operator()() (this=0x392abc0) at /llvmorg-17.0.3/llvm/include/llvm/ADT/FunctionExtras.h:382
#269 operator() (__closure=0x392aba0) at /llvmorg-17.0.3/clang-tools-extra/clangd/support/Threading.cpp:101
#270 operator()<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()>&> (F=..., __closure=<optimized out>) at /llvmorg-17.0.3/llvm/include/llvm/Support/thread.h:43
#271 std::__invoke_impl<void, llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()>&> (__f=...) at /opt/gcc-11.1.0/include/c++/11.1.0/bits/invoke.h:61
#272 std::__invoke<llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()>&> (__fn=...) at /opt/gcc-11.1.0/include/c++/11.1.0/bits/invoke.h:96
#273 std::__apply_impl<llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> >&, 0> (__t=..., __f=...) at /opt/gcc-11.1.0/include/c++/11.1.0/tuple:1806
#274 std::apply<llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> >&> (__t=..., __f=...) at /opt/gcc-11.1.0/include/c++/11.1.0/tuple:1817
#275 llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > > (Ptr=0x392aba0) at /llvmorg-17.0.3/llvm/include/llvm/Support/thread.h:41
#276 llvm::thread::ThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(const llvm::Twine&, llvm::unique_function<void()>)::<lambda()> > >(void *) (Ptr=0x392aba0) at /llvmorg-17.0.3/llvm/include/llvm/Support/thread.h:55
#277 0x00007f4d2e258e25 in start_thread () from /lib64/libpthread.so.0
#278 0x00007f4d2d22335d in clone () from /lib64/libc.so.6
the input to clang::Diagnostic::FormatDiagnostic
look like this:
f 232
#232 clang::Diagnostic::FormatDiagnostic (this=0x7f4d25ff6930,
DiagStr=0x67eeea <(anonymous namespace)::StaticDiagInfoDescriptions+97610> " first difference is %select{return type is %4|%ordinal4 parameter with name %5|%ordinal4 parameter with type %5%select{| decayed from %7}6|%ordinal4 parameter with%select{out|}5 a default argument|%o"..., DiagEnd=<optimized out>,
OutStr=...) at /source/install/llvm/llvm.git/clang/lib/Basic/Diagnostic.cpp:1001
1001 HandleSelectModifier(*this, Val, Argument, ArgumentLen, OutStr);
(gdb) p DiagStr
$5 = 0x67eeea <(anonymous namespace)::StaticDiagInfoDescriptions+97610> " first difference is %select{return type is %4|%ordinal4 parameter with name %5|%ordinal4 parameter with type %5%select{| decayed from %7}6|%ordinal4 parameter with%select{out|}5 a default argument|%o"...
(gdb) printf "%s\n", DiagStr
first difference is %select{return type is %4|%ordinal4 parameter with name %5|%ordinal4 parameter with type %5%select{| decayed from %7}6|%ordinal4 parameter with%select{out|}5 a default argument|%ordinal4 parameter with a default argument|function body}3
(gdb)
and the OutStr
contains the hugh memory
(gdb) p OutStr
$24 = (llvm::SmallVectorImpl<char> &) @0x7f4d25ff6500: {
<llvm::SmallVectorTemplateBase<char, true>> = {
<llvm::SmallVectorTemplateCommon<char, void>> = {
<llvm::SmallVectorBase<unsigned long>> = {
BeginX = 0x7f48d43fa010,
Size = 4511505832,
Capacity = 8724152319
}, <No data fields>},
members of llvm::SmallVectorTemplateBase<char, true>:
static TakesParamByValue = true
}, <No data fields>}
(gdb)
the content of OutStr
(gdb) x /20xs (0x7f48d43fa010)
0x7f48d43fa010: "'std::midpoint' has different definitions in different modules; 1 first difference is '_Tp'"
0x7f48d43fa06c: " has different definitions in different modules; first difference is 1 found '_Tp'"
0x7f48d43fa0bf: " has different definitions in different modules; first difference is 1 found '_Tp'"
0x7f48d43fa112: " 1 has different definitions in different modules; first difference is this '_Tp'"
0x7f48d43fa164: " has different definitions in different modules; first difference is 1 found '_Tp'"
0x7f48d43fa1b7: " has different definitions in different modules; first difference is 1 found '_Tp'"
0x7f48d43fa20a: " has different definitions in different modules; first difference is 1 found '_Tp'"
0x7f48d43fa25d: " has different definitions in different modules; first difference is 1 found '_Tp'"
0x7f48d43fa2b0: " has different definitions in different modules; first difference is 1 found '_Tp'"
0x7f48d43fa303: " has different definitions in different modules; first difference is 1 found '_Tp'"
0x7f48d43fa356: " has different definitions in different modules; first difference is 1 found '_Tp'"
0x7f48d43fa3a9: " has different definitions in different modules; first difference is 1 found '_Tp'"
0x7f48d43fa3fc: "template parameter lists have a different number of parameters ( vs 2)"
0x7f48d43fa443: "template parameter has different kinds in different translation units"
0x7f48d43fa489: "field declared with incompatible types in different translation units (2 vs. 1)"
0x7f48d43fa4da: "external function declared with incompatible types in different translation units (2 vs. 1)"
0x7f48d43fa537: "instance variable declared with incompatible types in different translation units (2 vs. 1)"
0x7f48d43fa594: "non-type template parameter declared with incompatible types in different translation units ( vs. 2)"
0x7f48d43fa5f9: " method 2 has a different number of parameters in different translation units (1 vs. '_Tp')"
0x7f48d43fa655: " method 2 has a parameter with a different types in different translation units (1 vs. '_Tp')"
(gdb) x /20xs (0x7f48d43fa010 + 4511505832 - 200)
0x7f49e127bcf0: "ncurrent"
0x7f49e127bcf9: "expected in OpenMP clause '2'"
0x7f49e127bd18: "modifier '' cannot be used along with modifier '2'"
0x7f49e127bd4b: "mapping of union members is not allowed"
0x7f49e127bd73: "incorrect reduction identifier, expected one of '+', '-', '*', '&', '"
0x7f49e127bdb9: ""
0x7f49e127bdba: ""
0x7f49e127bdbb: ""
0x7f49e127bdbc: ""
0x7f49e127bdbd: ""
0x7f49e127bdbe: ""