teemperor added a comment.

Sure I can take a look, but I don't see the immediate problem when looking at 
the backtrace.

I assume it takes some time to reduce the bug in Chrome? If you could get me 
the `dump()` output for the Decls `D`, `(Decl*)ToDC`, `FromRD`, `ToD`, 
`(Decl*)ToD->getLexicalDeclContext()` and whether the left or the right side of 
the `&&` is true/false then maybe it becomes more obvious what's going wrong 
here.

In D102993#2811325 <https://reviews.llvm.org/D102993#2811325>, @rupprecht wrote:

> This commit seems to be causing an LLDB crash. I'm still working on gathering 
> info and reducing it, but maybe the crash reason is obvious to you given this 
> stack trace:
>
>   $ lldb -b -o "b ChromeMain" -o "r" -o "v" -o "p chrome_main_delegate" 
> ~/src/chromium/src/out/Default/chrome
>   assert.h assertion failed at 
> llvm-project/clang/lib/AST/ASTImporter.cpp:1874 in llvm::Error 
> clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext *, bool): ToDC 
> == ToD->getLexicalDeclContext() && ToDC->containsDecl(ToD)
>   ...
>   Stack dump:
>   0.      Program arguments: lldb -b -o "b ChromeMain" -o r -o v -o "p 
> chrome_main_delegate" /home/rupprecht/src/chromium/src/out/Default/chrome
>   1.      HandleCommand(command = "p chrome_main_delegate")^@
>   2.      <lldb wrapper prefix>:45:51: current parser token ';'
>   3.      <lldb wrapper prefix>:44:1: parsing function body '$__lldb_expr'
>   4.      <lldb wrapper prefix>:44:1: in compound statement ('{}')
>   ...
>    #13 0x000055646a128c66 
> clang::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool) 
> llvm-project/clang/lib/AST/ASTImporter.cpp:1874:9
>    #14 0x000055646a15cc0d clang::ASTImporter::ImportDefinition(clang::Decl*) 
> llvm-project/clang/lib/AST/ASTImporter.cpp:9098:19
>    #15 0x000055646789e47d 
> lldb_private::ClangASTImporter::ASTImporterDelegate::ImportImpl(clang::Decl*) 
> llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:916:25
>    #16 0x000055646a157235 clang::ASTImporter::Import(clang::Decl*) 
> llvm-project/clang/lib/AST/ASTImporter.cpp:8412:8
>    #17 0x000055646789ac8a 
> lldb_private::ClangASTImporter::CopyDecl(clang::ASTContext*, clang::Decl*) 
> llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:79:8
>    #18 0x00005564679c4205 
> lldb_private::ClangASTSource::CopyDecl(clang::Decl*) 
> llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp:1720:3
>    #19 0x00005564679c415e 
> lldb_private::ClangASTSource::FindExternalLexicalDecls(clang::DeclContext 
> const*, llvm::function_ref<bool (clang::Decl::Kind)>, 
> llvm::SmallVectorImpl<clang::Decl*>&) 
> llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp:492:5
>    #20 0x00005564679a6b6a 
> lldb_private::ClangASTSource::ClangASTSourceProxy::FindExternalLexicalDecls(clang::DeclContext
>  const*, llvm::function_ref<bool (clang::Decl::Kind)>, 
> llvm::SmallVectorImpl<clang::Decl*>&) 
> llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h:223:7
>    #21 0x000055646a30d9b2 
> clang::ExternalASTSource::FindExternalLexicalDecls(clang::DeclContext const*, 
> llvm::SmallVectorImpl<clang::Decl*>&) 
> llvm-project/clang/include/clang/AST/ExternalASTSource.h:186:3
>    #22 0x000055646a30ae60 
> clang::DeclContext::LoadLexicalDeclsFromExternalStorage() const 
> llvm-project/clang/lib/AST/DeclBase.cpp:1353:7
>    #23 0x000055646a30bec2 clang::DeclContext::buildLookup() 
> llvm-project/clang/lib/AST/DeclBase.cpp:1582:32
>    #24 0x000055646a30bc4f 
> clang::DeclContext::makeDeclVisibleInContextWithFlags(clang::NamedDecl*, 
> bool, bool) llvm-project/clang/lib/AST/DeclBase.cpp:1859:5
>    #25 0x000055646a30bd99 clang::DeclContext::addDeclInternal(clang::Decl*) 
> llvm-project/clang/lib/AST/DeclBase.cpp:1559:1
>    #26 0x000055646a12c1f0 
> clang::ASTNodeImporter::VisitTypedefNameDecl(clang::TypedefNameDecl*, bool) 
> llvm-project/clang/lib/AST/ASTImporter.cpp:0:16
>    #27 0x000055646a12c4cd 
> clang::ASTNodeImporter::VisitTypedefDecl(clang::TypedefDecl*) 
> llvm-project/clang/lib/AST/ASTImporter.cpp:2552:10
>    #28 0x000055646a171e3a clang::declvisitor::Base<std::__u::add_pointer, 
> clang::ASTNodeImporter, llvm::Expected<clang::Decl*> >::Visit(clang::Decl*) 
> llvm-project/clang/include/clang/AST/DeclNodes.inc:335:1
>    #29 0x000055646a15619d clang::ASTImporter::ImportImpl(clang::Decl*) 
> llvm-project/clang/lib/AST/ASTImporter.cpp:8240:19
>    #30 0x000055646789e55c 
> lldb_private::ClangASTImporter::ASTImporterDelegate::ImportImpl(clang::Decl*) 
> llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:0:23
>    #31 0x000055646a157235 clang::ASTImporter::Import(clang::Decl*) 
> llvm-project/clang/lib/AST/ASTImporter.cpp:8412:8
>
> The class definition for the expression being evaluated can be found here: 
> https://source.chromium.org/chromium/chromium/src/+/master:chrome/app/chrome_main.cc;l=85;drc=83bf8a5bbe7f9af4f4531b65662cfeb0c232b583
>
> (It crashes in the same-ish w/o assertions too; this is just the more helpful 
> stack trace :) )




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D102993/new/

https://reviews.llvm.org/D102993

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to