[llvm-bugs] [Bug 51352] New: LookupVisibleHelper::lookupInDeclContext crashes when lookups Map got modified
via llvm-bugs
llvm-bugs at lists.llvm.org
Wed Aug 4 23:40:37 PDT 2021
https://bugs.llvm.org/show_bug.cgi?id=51352
Bug ID: 51352
Summary: LookupVisibleHelper::lookupInDeclContext crashes when
lookups Map got modified
Product: clang
Version: 12.0
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: C++
Assignee: unassignedclangbugs at nondot.org
Reporter: manjian2006 at gmail.com
CC: blitzrakete at gmail.com, dgregor at apple.com,
erik.pilkington at gmail.com, llvm-bugs at lists.llvm.org,
richard-llvm at metafoo.co.uk
tag: llvmorg-12.0.1
map modified bt:
Thread 1 "lldb" hit Hardware watchpoint 6: *$18
Old value = 330
New value = 332
llvm::SmallDenseMap<clang::DeclarationName, clang::StoredDeclsList, 4u,
llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList>
>::setNumEntries (this=0x2893480, Num=166) at
/home/linzj/ssdsrc/llvm-project2/llvm/include/llvm/ADT/DenseMap.h:1121
1121 }
(gdb) bt
#0 llvm::SmallDenseMap<clang::DeclarationName, clang::StoredDeclsList, 4u,
llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList>
>::setNumEntries (this=0x2893480, Num=166) at
/home/linzj/ssdsrc/llvm-project2/llvm/include/llvm/ADT/DenseMap.h:1121
#1 0x00007f28300b2a3e in
llvm::DenseMapBase<llvm::SmallDenseMap<clang::DeclarationName,
clang::StoredDeclsList, 4u, llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList> >,
clang::DeclarationName, clang::StoredDeclsList,
llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList>
>::setNumEntries (this=0x2893480, Num=166) at
/home/linzj/ssdsrc/llvm-project2/llvm/include/llvm/ADT/DenseMap.h:489
#2 0x00007f28300b4b4a in
llvm::DenseMapBase<llvm::SmallDenseMap<clang::DeclarationName,
clang::StoredDeclsList, 4u, llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList> >,
clang::DeclarationName, clang::StoredDeclsList,
llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList>
>::incrementNumEntries (this=0x2893480) at
/home/linzj/ssdsrc/llvm-project2/llvm/include/llvm/ADT/DenseMap.h:493
#3 0x00007f28300b4a77 in
llvm::DenseMapBase<llvm::SmallDenseMap<clang::DeclarationName,
clang::StoredDeclsList, 4u, llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList> >,
clang::DeclarationName, clang::StoredDeclsList,
llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList>
>::InsertIntoBucketImpl<clang::DeclarationName> (this=0x2893480, Key=...,
Lookup=..., TheBucket=0xde0a0e0)
at /home/linzj/ssdsrc/llvm-project2/llvm/include/llvm/ADT/DenseMap.h:593
#4 0x00007f28300b54c9 in
llvm::DenseMapBase<llvm::SmallDenseMap<clang::DeclarationName,
clang::StoredDeclsList, 4u, llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList> >,
clang::DeclarationName, clang::StoredDeclsList,
llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList>
>::InsertIntoBucket<clang::DeclarationName> (this=0x2893480,
TheBucket=0xde0a0e0, Key=...) at
/home/linzj/ssdsrc/llvm-project2/llvm/include/llvm/ADT/DenseMap.h:547
#5 0x00007f28300b5483 in
llvm::DenseMapBase<llvm::SmallDenseMap<clang::DeclarationName,
clang::StoredDeclsList, 4u, llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList> >,
clang::DeclarationName, clang::StoredDeclsList,
llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList>
>::FindAndConstruct (this=0x2893480, Key=...) at
/home/linzj/ssdsrc/llvm-project2/llvm/include/llvm/ADT/DenseMap.h:338
#6 0x00007f28300b1480 in
llvm::DenseMapBase<llvm::SmallDenseMap<clang::DeclarationName,
clang::StoredDeclsList, 4u, llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList> >,
clang::DeclarationName, clang::StoredDeclsList,
llvm::DenseMapInfo<clang::DeclarationName>,
llvm::detail::DenseMapPair<clang::DeclarationName, clang::StoredDeclsList>
>::operator[] (this=0x2893480, Key=...) at
/home/linzj/ssdsrc/llvm-project2/llvm/include/llvm/ADT/DenseMap.h:342
#7 0x00007f28300aea45 in clang::DeclContext::makeDeclVisibleInContextImpl
(this=0x9657d30, D=0xf91eec8, Internal=true)
at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/DeclBase.cpp:1930
#8 0x00007f28300ae346 in clang::DeclContext::makeDeclVisibleInContextWithFlags
(this=0x9657d30, D=0xf91eec8, Internal=true, Recoverable=true)
at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/DeclBase.cpp:1893
#9 0x00007f28300ae49c in clang::DeclContext::addDeclInternal (this=0x9657d30,
D=0xf91eec8) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/DeclBase.cpp:1589
#10 0x00007f282fef9fba in clang::ASTNodeImporter::addDeclToContexts
(this=0x7ffe093a4250, FromD=0x8987400, ToD=0xf91eec8)
at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:290
#11 0x00007f282fec33b9 in clang::ASTNodeImporter::VisitRecordDecl
(this=0x7ffe093a4250, D=0x8987400) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:2875
#12 0x00007f282ff3b8ce in clang::declvisitor::Base<std::add_pointer,
clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::VisitCXXRecordDecl
(this=0x7ffe093a4250, D=0x8987400)
at tools/clang/include/clang/AST/DeclNodes.inc:263
#13 0x00007f282ff09e7d in clang::declvisitor::Base<std::add_pointer,
clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit
(this=0x7ffe093a4250, D=0x8987400)
at tools/clang/include/clang/AST/DeclNodes.inc:263
#14 0x00007f282feeb386 in clang::ASTImporter::ImportImpl (this=0xcdd71c0,
FromD=0x8987400) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:8131
#15 0x00007f282c4e2e07 in
lldb_private::ClangASTImporter::ASTImporterDelegate::ImportImpl
(this=0xcdd71c0, From=0x8987400)
at
/home/linzj/ssdsrc/llvm-project2/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:892
#16 0x00007f282feec492 in clang::ASTImporter::Import (this=0xcdd71c0,
FromD=0x8987400) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:8293
#17 0x00007f282fef650c in clang::ASTNodeImporter::import<clang::RecordDecl>
(this=0x7ffe093a4b00, From=0x8987400) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:164
#18 0x00007f282feb87b6 in clang::ASTNodeImporter::VisitRecordType
(this=0x7ffe093a4b00, T=0x89874b0) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:1397
#19 0x00007f282ff0ac59 in clang::TypeVisitor<clang::ASTNodeImporter,
llvm::Expected<clang::QualType> >::Visit (this=0x7ffe093a4b00, T=0x89874b0) at
tools/clang/include/clang/AST/TypeNodes.inc:69
#20 0x00007f282feeb71e in clang::ASTImporter::Import (this=0xcdd71c0,
FromT=...) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:8164
#21 0x00007f282fef4209 in clang::ASTNodeImporter::import<clang::QualType>
(this=0x7ffe093a4d20, From=...) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:178
#22 0x00007f282feb662b in clang::ASTNodeImporter::VisitPointerType
(this=0x7ffe093a4d20, T=0x8987540) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:1096
#23 0x00007f282ff0abb1 in clang::TypeVisitor<clang::ASTNodeImporter,
llvm::Expected<clang::QualType> >::Visit (this=0x7ffe093a4d20, T=0x8987540) at
tools/clang/include/clang/AST/TypeNodes.inc:61
#24 0x00007f282feeb71e in clang::ASTImporter::Import (this=0xcdd71c0,
FromT=...) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:8164
#25 0x00007f282fef4209 in clang::ASTNodeImporter::import<clang::QualType>
(this=0x7ffe093a5130, From=...) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:178
--Type <RET> for more, q to quit, c to continue without paging--
#26 0x00007f282feb74fa in clang::ASTNodeImporter::VisitFunctionProtoType
(this=0x7ffe093a5130, T=0x8987570) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:1233
#27 0x00007f282ff0aa45 in clang::TypeVisitor<clang::ASTNodeImporter,
llvm::Expected<clang::QualType> >::Visit (this=0x7ffe093a5130, T=0x8987570) at
tools/clang/include/clang/AST/TypeNodes.inc:47
#28 0x00007f282feeb71e in clang::ASTImporter::Import (this=0xcdd71c0,
FromT=...) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:8164
#29 0x00007f282fef4209 in clang::ASTNodeImporter::import<clang::QualType>
(this=0x7ffe093a5c20, From=...) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:178
#30 0x00007f282fef584b in
clang::ASTNodeImporter::importChecked<clang::QualType> (this=0x7ffe093a5c20,
Err=..., From=...)
at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:197
#31 0x00007f282fec624f in clang::ASTNodeImporter::VisitFunctionDecl
(this=0x7ffe093a5c20, D=0x89875a0) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:3353
#32 0x00007f282fec7e0e in clang::ASTNodeImporter::VisitCXXMethodDecl
(this=0x7ffe093a5c20, D=0x89875a0) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:3546
#33 0x00007f282ff0a091 in clang::declvisitor::Base<std::add_pointer,
clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit
(this=0x7ffe093a5c20, D=0x89875a0)
at tools/clang/include/clang/AST/DeclNodes.inc:411
#34 0x00007f282feeb386 in clang::ASTImporter::ImportImpl (this=0xcdd71c0,
FromD=0x89875a0) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:8131
#35 0x00007f282c4e2e07 in
lldb_private::ClangASTImporter::ASTImporterDelegate::ImportImpl
(this=0xcdd71c0, From=0x89875a0)
at
/home/linzj/ssdsrc/llvm-project2/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:892
#36 0x00007f282feec492 in clang::ASTImporter::Import (this=0xcdd71c0,
FromD=0x89875a0) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/ASTImporter.cpp:8293
#37 0x00007f282c4df556 in lldb_private::ClangASTImporter::CopyDecl
(this=0x567d980, dst_ast=0x2214970, decl=0x89875a0)
at
/home/linzj/ssdsrc/llvm-project2/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:78
#38 0x00007f282c50477e in lldb_private::ClangASTSource::CopyDecl
(this=0x9dce630, src_decl=0x89875a0)
at
/home/linzj/ssdsrc/llvm-project2/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp:1729
#39 0x00007f282c504659 in
lldb_private::ClangASTSource::FindExternalLexicalDecls(clang::DeclContext
const*, llvm::function_ref<bool (clang::Decl::Kind)>,
llvm::SmallVectorImpl<clang::Decl*>&) (
this=0x9dce630, decl_context=0xae21e60, predicate=..., decls=...) at
/home/linzj/ssdsrc/llvm-project2/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp:482
#40 0x00007f282a020c55 in
lldb_private::ClangASTSource::ClangASTSourceProxy::FindExternalLexicalDecls(clang::DeclContext
const*, llvm::function_ref<bool (clang::Decl::Kind)>,
llvm::SmallVectorImpl<clang::Decl*>&) (this=0x1f3a430, DC=0xae21e60,
IsKindWeWant=..., Decls=...) at
/home/linzj/ssdsrc/llvm-project2/lldb/source/./Plugins/ExpressionParser/Clang/ClangASTSource.h:223
#41 0x00007f28300b0471 in clang::ExternalASTSource::FindExternalLexicalDecls
(this=0x1f3a430, DC=0xae21e60, Result=...)
at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/include/clang/AST/ExternalASTSource.h:187
#42 0x00007f28300ad157 in
clang::DeclContext::LoadLexicalDeclsFromExternalStorage (this=0xae21e60) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/DeclBase.cpp:1347
#43 0x00007f28300ae5f4 in clang::DeclContext::buildLookup (this=0xae21e60) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/DeclBase.cpp:1613
#44 0x00007f28300aef03 in clang::DeclContext::lookup (this=0xae21e60, Name=...)
at /home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/AST/DeclBase.cpp:1716
#45 0x00007f282ec57fd1 in getConstructors (Context=..., Record=0xae21e20) at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp:1018
#46 0x00007f282ec5720c in (anonymous
namespace)::ResultBuilder::MaybeAddConstructorResults (this=0x7ffe093a8260,
R=...)
at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp:1043
#47 0x00007f282ec38c9c in (anonymous namespace)::ResultBuilder::AddResult
(this=0x7ffe093a8260, R=..., CurContext=0xde9b270, Hiding=0x0,
InBaseClass=false)
at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp:1350
#48 0x00007f282ec52322 in (anonymous
namespace)::CodeCompletionDeclConsumer::FoundDecl (this=0x7ffe093a8110,
ND=0xae21e20, Hiding=0x0, Ctx=0x9657d30, InBaseClass=false)
at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp:1618
#49 0x00007f282f44e387 in (anonymous
namespace)::LookupVisibleHelper::lookupInDeclContext (this=0x7ffe093a7ed8,
Ctx=0x9657d30, Result=..., QualifiedNameLookup=false, InBaseClass=false)
at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/Sema/SemaLookup.cpp:3805
#50 0x00007f282f44d7a9 in (anonymous
namespace)::LookupVisibleHelper::lookupInScope (this=0x7ffe093a7ed8,
S=0x28bb2c0, Result=..., UDirs=...)
at
/home/linzj/ssdsrc/llvm-project2/llvm/tools/clang/lib/Sema/SemaLookup.cpp:3987
After the map got modified, the iterator of this map will not by sync.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210805/1b773303/attachment-0001.html>
More information about the llvm-bugs
mailing list