Michael137 wrote:

> Yeah, that seems to do it:
> 
> ```
> 
> struct t1 {
> 
>   t1();
> 
>   static int i;
> 
> };
> 
> int t1::i = 43;
> 
> int main() {
> 
> }
> 
> ```
> 
> ```
> 
> $ clang++-tot -gsplit-dwarf -g test.cpp
> 
> $ lldb ./a.out -o "b main" -o "run" -o "p t1::i" -batch
> 
> This is google-lldb.
> 
> Help: http://go/lldb. File a bug: http://go/lldb-bug.
> 
> Stop hook #1 added.
> 
> (lldb) target create "./a.out"
> 
> Current executable set to '/usr/local/google/home/blaikie/dev/scratch/a.out' 
> (x86_64).
> 
> (lldb) b main
> 
> Breakpoint 1: where = a.out`main + 4 at test.cpp:7:1, address = 
> 0x0000000000001134
> 
> (lldb) run
> 
> Process 2043063 launched: '/usr/local/google/home/blaikie/dev/scratch/a.out' 
> (x86_64)
> 
> Process 2043063 stopped
> 
> * thread #1, name = 'a.out', stop reason = breakpoint 1.1
> 
>     frame #0: 0x0000555555555134 a.out`main at test.cpp:7:1
> 
>    4    };
> 
>    5    int t1::i = 43;
> 
>    6    int main() {
> 
> -> 7    }
> 
> (lldb) p t1::i
> 
> PLEASE submit a bug report to http://go/llvm-crash-bug and include the crash 
> backtrace.
> 
> Stack dump:
> 
> 0.      Program arguments: lldb ./a.out -o "b main" -o run -o "p t1::i" -batch
> 
> 1.      HandleCommand(command = "p t1::i")
> 
> 2.      <user expression 0>:1:5: current parser token 'i'
> 
> 3.      <lldb wrapper prefix>:44:1: parsing function body '$__lldb_expr'
> 
> 4.      <lldb wrapper prefix>:44:1: in compound statement ('{}')
> 
>  #0 0x00005557cda16b58 llvm::sys::RunSignalHandlers() 
> (/usr/bin/lldb+0xc616b58)
> 
>  #1 0x00005557cda19477 (/usr/bin/lldb+0xc619477)
> 
>  #2 0x00007fb4905861c0 __restore_rt 
> (/usr/grte/v5/lib64/libpthread.so.0+0x151c0)
> 
>  #3 0x00005557ca9d0f76 clang::CXXRecordDecl::addedMember(clang::Decl*) 
> (/usr/bin/lldb+0x95d0f76)
> 
>  #4 0x00005557ca9c8cec clang::DeclContext::addHiddenDecl(clang::Decl*) 
> (/usr/bin/lldb+0x95c8cec)
> 
>  #5 0x00005557ca9c8d6e clang::DeclContext::addDecl(clang::Decl*) 
> (/usr/bin/lldb+0x95c8d6e)
> 
>  #6 0x00005557c8c2d190 
> lldb_private::TypeSystemClang::CreateVariableDeclaration(clang::DeclContext*, 
> lldb_private::OptionalClangModuleID, char const*, clang::QualType) 
> (/usr/bin/lldb+0x782d190)
> 
>  #7 0x00005557c8bb9667 
> DWARFASTParserClang::GetClangDeclForDIE(lldb_private::plugin::dwarf::DWARFDIE 
> const&) (/usr/bin/lldb+0x77b9667)
> 
>  #8 0x00005557c8bb94a7 
> DWARFASTParserClang::GetClangDeclForDIE(lldb_private::plugin::dwarf::DWARFDIE 
> const&) (/usr/bin/lldb+0x77b94a7)
> 
>  #9 0x00005557c8bb976e 
> DWARFASTParserClang::GetDeclForUIDFromDWARF(lldb_private::plugin::dwarf::DWARFDIE
>  const&) (/usr/bin/lldb+0x77b976e)
> 
> #10 0x00005557c8b88fac 
> lldb_private::plugin::dwarf::SymbolFileDWARF::GetDeclForUID(unsigned long) 
> (/usr/bin/lldb+0x7788fac)
> 
> #11 0x00005557c8ceaf2d lldb_private::Variable::GetDecl() 
> (/usr/bin/lldb+0x78eaf2d)
> 
> #12 0x00005557c8c72e26 
> lldb_private::ClangExpressionDeclMap::LookupLocalVariable(lldb_private::NameSearchContext&,
>  lldb_private::ConstString, lldb_private::SymbolContext&, 
> lldb_private::CompilerDeclContext const&) (/usr/bin/lldb+0x7872e26)
> 
> #13 0x00005557c8c70f77 
> lldb_private::ClangExpressionDeclMap::FindExternalVisibleDecls(lldb_private::NameSearchContext&,
>  std::__u::shared_ptr<lldb_private::Module>, 
> lldb_private::CompilerDeclContext const&) (/usr/bin/lldb+0x7870f77)
> 
> #14 0x00005557c8c707aa 
> lldb_private::ClangExpressionDeclMap::FindExternalVisibleDecls(lldb_private::NameSearchContext&)
>  (/usr/bin/lldb+0x78707aa)
> 
> #15 0x00005557c8c49cbc 
> lldb_private::ClangASTSource::FindExternalVisibleDeclsByName(clang::DeclContext
>  const*, clang::DeclarationName) (/usr/bin/lldb+0x7849cbc)
> 
> #16 0x00005557ca9c9c5e clang::DeclContext::lookup(clang::DeclarationName) 
> const (/usr/bin/lldb+0x95c9c5e)
> 
> #17 0x00005557ca277728 (/usr/bin/lldb+0x8e77728)
> 
> #18 0x00005557ca274400 (/usr/bin/lldb+0x8e74400)
> 
> #19 0x00005557ca2739c0 clang::Sema::CppLookupName(clang::LookupResult&, 
> clang::Scope*) (/usr/bin/lldb+0x8e739c0)
> 
> #20 0x00005557ca277010 clang::Sema::LookupName(clang::LookupResult&, 
> clang::Scope*, bool, bool) (/usr/bin/lldb+0x8e77010)
> 
> #21 0x00005557c9b99e06 
> clang::Sema::BuildCXXNestedNameSpecifier(clang::Scope*, 
> clang::Sema::NestedNameSpecInfo&, bool, clang::CXXScopeSpec&, 
> clang::NamedDecl*, bool, bool*, bool) (/usr/bin/lldb+0x8799e06)
> 
> #22 0x00005557c9b9b897 
> clang::Sema::ActOnCXXNestedNameSpecifier(clang::Scope*, 
> clang::Sema::NestedNameSpecInfo&, bool, clang::CXXScopeSpec&, bool*, bool) 
> (/usr/bin/lldb+0x879b897)
> 
> #23 0x00005557c9779fdd 
> clang::Parser::ParseOptionalCXXScopeSpecifier(clang::CXXScopeSpec&, 
> clang::OpaquePtr<clang::QualType>, bool, bool, bool*, bool, 
> clang::IdentifierInfo**, bool, bool) (/usr/bin/lldb+0x8379fdd)
> 
> #24 0x00005557c974c5ea 
> clang::Parser::TryAnnotateTypeOrScopeToken(clang::ImplicitTypenameContext) 
> (/usr/bin/lldb+0x834c5ea)
> 
> #25 0x00005557c97d63df 
> clang::Parser::isCXXDeclarationSpecifier(clang::ImplicitTypenameContext, 
> clang::Parser::TPResult, bool*) (/usr/bin/lldb+0x83d63df)
> 
> #26 0x00005557c97d5b6b clang::Parser::isCXXSimpleDeclaration(bool) 
> (/usr/bin/lldb+0x83d5b6b)
> 
> #27 0x00005557c97d5a3b clang::Parser::isCXXDeclarationStatement(bool) 
> (/usr/bin/lldb+0x83d5a3b)
> 
> #28 0x00005557c97fcd2a 
> clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
>  32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, 
> clang::ParsedAttributes&, clang::ParsedAttributes&) (/usr/bin/lldb+0x83fcd2a)
> 
> #29 0x00005557c97fc7f8 
> clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 
> 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) 
> (/usr/bin/lldb+0x83fc7f8)
> 
> #30 0x00005557c98076d0 clang::Parser::ParseCompoundStatementBody(bool) 
> (/usr/bin/lldb+0x84076d0)
> 
> #31 0x00005557c9808606 
> clang::Parser::ParseFunctionStatementBody(clang::Decl*, 
> clang::Parser::ParseScope&) (/usr/bin/lldb+0x8408606)
> 
> #32 0x00005557c97492c8 
> clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, 
> clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) 
> (/usr/bin/lldb+0x83492c8)
> 
> #33 0x00005557c97b87da clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, 
> clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, 
> clang::Parser::ForRangeInit*) (/usr/bin/lldb+0x83b87da)
> 
> #34 0x00005557c9747f12 
> clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, 
> clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) 
> (/usr/bin/lldb+0x8347f12)
> 
> #35 0x00005557c9747918 
> clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, 
> clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) 
> (/usr/bin/lldb+0x8347918)
> 
> #36 0x00005557c9746b1a 
> clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, 
> clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/usr/bin/lldb+0x8346b1a)
> 
> #37 0x00005557c9744bd7 
> clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, 
> clang::Sema::ModuleImportState&) (/usr/bin/lldb+0x8344bd7)
> 
> #38 0x00005557c973fbfe clang::ParseAST(clang::Sema&, bool, bool) 
> (/usr/bin/lldb+0x833fbfe)
> 
> #39 0x00005557c8c83577 
> lldb_private::ClangExpressionParser::ParseInternal(lldb_private::DiagnosticManager&,
>  clang::CodeCompleteConsumer*, unsigned int, unsigned int) 
> (/usr/bin/lldb+0x7883577)
> 
> #40 0x00005557c8c57b9d 
> lldb_private::ClangUserExpression::TryParse(lldb_private::DiagnosticManager&, 
> lldb_private::ExecutionContextScope*, lldb_private::ExecutionContext&, 
> lldb_private::ExecutionPolicy, bool, bool) (/usr/bin/lldb+0x7857b9d)
> 
> #41 0x00005557c8c58425 
> lldb_private::ClangUserExpression::Parse(lldb_private::DiagnosticManager&, 
> lldb_private::ExecutionContext&, lldb_private::ExecutionPolicy, bool, bool) 
> (/usr/bin/lldb+0x7858425)
> 
> #42 0x00005557c894b5a6 
> lldb_private::UserExpression::Evaluate(lldb_private::ExecutionContext&, 
> lldb_private::EvaluateExpressionOptions const&, llvm::StringRef, 
> llvm::StringRef, std::__u::shared_ptr<lldb_private::ValueObject>&, 
> lldb_private::Status&, std::__u::basic_string<char, 
> std::__u::char_traits<char>, std::__u::allocator<char>>*, 
> lldb_private::ValueObject*) (/usr/bin/lldb+0x754b5a6)
> 
> #43 0x00005557c8d66121 
> lldb_private::Target::EvaluateExpression(llvm::StringRef, 
> lldb_private::ExecutionContextScope*, 
> std::__u::shared_ptr<lldb_private::ValueObject>&, 
> lldb_private::EvaluateExpressionOptions const&, std::__u::basic_string<char, 
> std::__u::char_traits<char>, std::__u::allocator<char>>*, 
> lldb_private::ValueObject*) (/usr/bin/lldb+0x7966121)
> 
> #44 0x00005557c8986beb 
> lldb_private::CommandObjectDWIMPrint::DoExecute(llvm::StringRef, 
> lldb_private::CommandReturnObject&) (/usr/bin/lldb+0x7586beb)
> 
> #45 0x00005557c8a4354a lldb_private::CommandObjectRaw::Execute(char const*, 
> lldb_private::CommandReturnObject&) (/usr/bin/lldb+0x764354a)
> 
> #46 0x00005557c895c10b lldb_private::CommandInterpreter::HandleCommand(char 
> const*, lldb_private::LazyBool, lldb_private::CommandReturnObject&, bool) 
> (/usr/bin/lldb+0x755c10b)
> 
> #47 0x00005557c8960cb5 
> lldb_private::CommandInterpreter::IOHandlerInputComplete(lldb_private::IOHandler&,
>  std::__u::basic_string<char, std::__u::char_traits<char>, 
> std::__u::allocator<char>>&) (/usr/bin/lldb+0x7560cb5)
> 
> #48 0x00005557c88c29a3 lldb_private::IOHandlerEditline::Run() 
> (/usr/bin/lldb+0x74c29a3)
> 
> #49 0x00005557c88a1a96 lldb_private::Debugger::RunIOHandlers() 
> (/usr/bin/lldb+0x74a1a96)
> 
> #50 0x00005557c8962a0a 
> lldb_private::CommandInterpreter::RunCommandInterpreter(lldb_private::CommandInterpreterRunOptions&)
>  (/usr/bin/lldb+0x7562a0a)
> 
> #51 0x00005557c7fa176c 
> lldb::SBDebugger::RunCommandInterpreter(lldb::SBCommandInterpreterRunOptions 
> const&) (/usr/bin/lldb+0x6ba176c)
> 
> #52 0x00005557c7f819f5 Driver::MainLoop() (/usr/bin/lldb+0x6b819f5)
> 
> #53 0x00005557c7f829a1 main (/usr/bin/lldb+0x6b829a1)
> 
> #54 0x00007fb4903da633 __libc_start_main 
> (/usr/grte/v5/lib64/libc.so.6+0x61633)
> 
> #55 0x00005557c7f7e02a _start (/usr/bin/lldb+0x6b7e02a)
> 
> LLDB diagnostics will be written to /tmp/diagnostics-6518ff
> 
> Please include the directory content when filing a bug report
> 
> Segmentation fault
> 
> ```
> 
> (Hmm, maybe our google build of lldb enables something to print the stack 
> trace - I can reproduce this with (in this case with a debug+asserts build) 
> an open source build of lldb too, like this:)
> 
> ```
> 
> $ LD_LIBRARY_PATH=$HOME/dev/llvm/build/default/lib 
> ~/dev/llvm/build/default/bin/lldb ./a.out -o "b main" -o "run" -o "p t1::i" 
> 
> -batch 
> 
> (lldb) target create "./a.out"
> 
> Current executable set to '/usr/local/google/home/blaikie/dev/scratch/a.out' 
> (x86_64).
> 
> (lldb) b main
> 
> Breakpoint 1: where = a.out`main + 4 at test.cpp:7:1, address = 
> 0x0000000000001134
> 
> (lldb) run
> 
> Process 2047004 launched: '/usr/local/google/home/blaikie/dev/scratch/a.out' 
> (x86_64)
> 
> Process 2047004 stopped
> 
> * thread #1, name = 'a.out', stop reason = breakpoint 1.1
> 
>     frame #0: 0x0000555555555134 a.out`main at test.cpp:7:1
> 
>    4    };
> 
>    5    int t1::i = 43;
> 
>    6    int main() {
> 
> -> 7    }
> 
> (lldb) p t1::i
> 
> lldb: 
> /usr/local/google/home/blaikie/dev/llvm/src/llvm/../clang/include/clang/AST/DeclCXX.h:464:
>  struct DefinitionData &clang::CXXRecordDecl::data() const: Assertion `DD && 
> "queried property of class with no definition"' failed.
> 
> LLDB diagnostics will be written to /tmp/diagnostics-12c7ac
> 
> Please include the directory content when filing a bug report
> 
> Aborted
> 
> ```
> 
> 
> 
> 

Awesome thanks for the reproducer! Will look into it asap

https://github.com/llvm/llvm-project/pull/72235
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to