[clang] [clang][DebugInfo] DWARFv5: static data members declarations are DW_TAG_variable (PR #72235)

David Blaikie via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 3 13:56:58 PST 2024


dwblaikie wrote:

> > Should've mentioned this earlier, but we've been seeing crashes in lldb due to this change (though possibly related to our use of GALA python/gdb interop https://github.com/sivachandra/gala - we haven't isolated the failures from that yet (though we've been using it for years, so it's not the proximal cause, at least)). Might be worth reverting so other people aren't tripping over it too.
> > but working on some repro/isolated/reduced case/something useful to share
> 
> Something reproducible, or a stack trace would be appreciated! The only way I see this change breaking something is in tools that don't expect `DW_TAG_subprogram`s to have `DW_TAG_variable` children. Maybe there's something missing on the LLDB side, though I haven't noticed anything myself yet

Oh, a stack is easy to provide, sure:
```
 #0 0x000055d7fe816b58 llvm::sys::RunSignalHandlers() (/usr/bin/lldb+0xc616b58)
 #1 0x000055d7fe819477 (/usr/bin/lldb+0xc619477)
 #2 0x00007f10c547c1c0 __restore_rt (/usr/grte/v5/lib64/libpthread.so.0+0x151c0)
 #3 0x000055d7fb7d0f76 clang::CXXRecordDecl::addedMember(clang::Decl*) (/usr/bin/lldb+0x95d0f76)
 #4 0x000055d7fb7c8cec clang::DeclContext::addHiddenDecl(clang::Decl*) (/usr/bin/lldb+0x95c8cec)
 #5 0x000055d7fb7c8d6e clang::DeclContext::addDecl(clang::Decl*) (/usr/bin/lldb+0x95c8d6e)
 #6 0x000055d7f9a2d190 lldb_private::TypeSystemClang::CreateVariableDeclaration(clang::DeclContext*, lldb_private::OptionalClangModuleID, char const*, clang::QualType) (/usr/
bin/lldb+0x782d190)
 #7 0x000055d7f99b9667 DWARFASTParserClang::GetClangDeclForDIE(lldb_private::plugin::dwarf::DWARFDIE const&) (/usr/bin/lldb+0x77b9667)
 #8 0x000055d7f99b94a7 DWARFASTParserClang::GetClangDeclForDIE(lldb_private::plugin::dwarf::DWARFDIE const&) (/usr/bin/lldb+0x77b94a7)
 #9 0x000055d7f99b9325 DWARFASTParserClang::EnsureAllDIEsInDeclContextHaveBeenParsed(lldb_private::CompilerDeclContext) (/usr/bin/lldb+0x77b9325)
#10 0x000055d7f9a41e28 lldb_private::TypeSystemClang::DeclContextFindDeclByName(void*, lldb_private::ConstString, bool) (/usr/bin/lldb+0x7841e28)
#11 0x000055d7f9aa25b1 lldb_private::CompilerDeclContext::FindDeclByName(lldb_private::ConstString, bool) (/usr/bin/lldb+0x78a25b1)
#12 0x000055d7f9a72e83 lldb_private::ClangExpressionDeclMap::LookupLocalVariable(lldb_private::NameSearchContext&, lldb_private::ConstString, lldb_private::SymbolContext&, lldb_private::CompilerDeclContext const&) (/usr/bin/lldb+0x7872e83)
#13 0x000055d7f9a70f77 lldb_private::ClangExpressionDeclMap::FindExternalVisibleDecls(lldb_private::NameSearchContext&, std::__u::shared_ptr<lldb_private::Module>, lldb_private::CompilerDeclContext const&) (/usr/bin/lldb+0x7870f77)
#14 0x000055d7f9a707aa lldb_private::ClangExpressionDeclMap::FindExternalVisibleDecls(lldb_private::NameSearchContext&) (/usr/bin/lldb+0x78707aa)
#15 0x000055d7f9a49cbc lldb_private::ClangASTSource::FindExternalVisibleDeclsByName(clang::DeclContext const*, clang::DeclarationName) (/usr/bin/lldb+0x7849cbc)
#16 0x000055d7fb7c9c5e clang::DeclContext::lookup(clang::DeclarationName) const (/usr/bin/lldb+0x95c9c5e)
#17 0x000055d7fb077728 (/usr/bin/lldb+0x8e77728)
#18 0x000055d7fb074400 (/usr/bin/lldb+0x8e74400)
#19 0x000055d7fb0739c0 clang::Sema::CppLookupName(clang::LookupResult&, clang::Scope*) (/usr/bin/lldb+0x8e739c0)
#20 0x000055d7fb077010 clang::Sema::LookupName(clang::LookupResult&, clang::Scope*, bool, bool) (/usr/bin/lldb+0x8e77010)
#21 0x000055d7fa999e06 clang::Sema::BuildCXXNestedNameSpecifier(clang::Scope*, clang::Sema::NestedNameSpecInfo&, bool, clang::CXXScopeSpec&, clang::NamedDecl*, bool, bool*, bool) (/usr/bin/lldb+0x8799e06)
#22 0x000055d7fa99b897 clang::Sema::ActOnCXXNestedNameSpecifier(clang::Scope*, clang::Sema::NestedNameSpecInfo&, bool, clang::CXXScopeSpec&, bool*, bool) (/usr/bin/lldb+0x879b897)
#23 0x000055d7fa579fdd clang::Parser::ParseOptionalCXXScopeSpecifier(clang::CXXScopeSpec&, clang::OpaquePtr<clang::QualType>, bool, bool, bool*, bool, clang::IdentifierInfo**, bool, bool) (/usr/bin/lldb+0x8379fdd)
#24 0x000055d7fa54c5ea clang::Parser::TryAnnotateTypeOrScopeToken(clang::ImplicitTypenameContext) (/usr/bin/lldb+0x834c5ea)
#25 0x000055d7fa5d63df clang::Parser::isCXXDeclarationSpecifier(clang::ImplicitTypenameContext, clang::Parser::TPResult, bool*) (/usr/bin/lldb+0x83d63df)
#26 0x000055d7fa5d5b6b clang::Parser::isCXXSimpleDeclaration(bool) (/usr/bin/lldb+0x83d5b6b)
#27 0x000055d7fa5d5a3b clang::Parser::isCXXDeclarationStatement(bool) (/usr/bin/lldb+0x83d5a3b)
#28 0x000055d7fa5fcd2a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/usr/bin/lldb+0x83fcd2a)
#29 0x000055d7fa5fc7f8 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/usr/bin/lldb+0x83fc7f8)
#30 0x000055d7fa6076d0 clang::Parser::ParseCompoundStatementBody(bool) (/usr/bin/lldb+0x84076d0)
#31 0x000055d7fa608606 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/usr/bin/lldb+0x8408606)
#32 0x000055d7fa5492c8 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/usr/bin/lldb+0x83492c8)
#33 0x000055d7fa5b87da clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/usr/bin/lldb+0x83b87da)
#34 0x000055d7fa547f12 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/usr/bin/lldb+0x8347f12)
#35 0x000055d7fa547918 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/usr/bin/lldb+0x8347918)
#36 0x000055d7fa546b1a clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/usr/bin/lldb+0x8346b1a)
#37 0x000055d7fa544bd7 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/usr/bin/lldb+0x8344bd7)
#38 0x000055d7fa53fbfe clang::ParseAST(clang::Sema&, bool, bool) (/usr/bin/lldb+0x833fbfe)
#39 0x000055d7f9a83577 lldb_private::ClangExpressionParser::ParseInternal(lldb_private::DiagnosticManager&, clang::CodeCompleteConsumer*, unsigned int, unsigned int) (/usr/bin/lldb+0x7883577)
#40 0x000055d7f9a57b9d lldb_private::ClangUserExpression::TryParse(lldb_private::DiagnosticManager&, lldb_private::ExecutionContextScope*, lldb_private::ExecutionContext&, lldb_private::ExecutionPolicy, bool, bool) (/usr/bin/lldb+0x7857b9d)
#41 0x000055d7f9a58425 lldb_private::ClangUserExpression::Parse(lldb_private::DiagnosticManager&, lldb_private::ExecutionContext&, lldb_private::ExecutionPolicy, bool, bool) (/usr/bin/lldb+0x7858425)
#42 0x000055d7f974b5a6 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 0x000055d7f9b66121 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 0x000055d7f8e38b3f lldb::SBTarget::EvaluateExpression(char const*, lldb::SBExpressionOptions const&) (/usr/bin/lldb+0x6c38b3f)
#45 0x000055d7f8f51f14 (/usr/bin/lldb+0x6d51f14)
#46 0x000055d7f92e7411 (/usr/bin/lldb+0x70e7411)
#47 0x000055d7f92a1535 _PyObject_Call (/usr/bin/lldb+0x70a1535)
#48 0x000055d7f938161e _PyEval_EvalFrameDefault (/usr/bin/lldb+0x718161e)
#49 0x000055d7f9376710 _PyEval_Vector (/usr/bin/lldb+0x7176710)
#50 0x000055d7f92a0cdd _PyObject_FastCallDictTstate (/usr/bin/lldb+0x70a0cdd)
#51 0x000055d7f92a194d _PyObject_Call_Prepend (/usr/bin/lldb+0x70a194d)
#52 0x000055d7f930b839 (/usr/bin/lldb+0x710b839)
#53 0x000055d7f93012fe (/usr/bin/lldb+0x71012fe)
#54 0x000055d7f92a0eb4 _PyObject_MakeTpCall (/usr/bin/lldb+0x70a0eb4)
#55 0x000055d7f937f7c8 _PyEval_EvalFrameDefault (/usr/bin/lldb+0x717f7c8)
#56 0x000055d7f9376710 _PyEval_Vector (/usr/bin/lldb+0x7176710)
#57 0x000055d7f8ea512c lldb_private::python::PythonCallable::operator()(std::initializer_list<lldb_private::python::PythonObject>) (/usr/bin/lldb+0x6ca512c)
#58 0x000055d7f8eb9329 lldb_private::python::SWIGBridge::LLDBSwigPythonCallTypeScript(char const*, void const*, std::__u::shared_ptr<lldb_private::ValueObject> const&, void**, std::__u::shared_ptr<lldb_private::TypeSummaryOptions> const&, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char>>&) (/usr/bin/lldb+0x6cb9329)
#59 0x000055d7f8e9b6f3 lldb_private::ScriptInterpreterPythonImpl::GetScriptedSummary(char const*, std::__u::shared_ptr<lldb_private::ValueObject>, std::__u::shared_ptr<lldb_private::StructuredData::Object>&, lldb_private::TypeSummaryOptions const&, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char>>&) (/usr/bin/lldb+0x6c9b6f3)
#60 0x000055d7f972adb7 lldb_private::ScriptSummaryFormat::FormatObject(lldb_private::ValueObject*, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char>>&, lldb_private::TypeSummaryOptions const&) (/usr/bin/lldb+0x752adb7)
#61 0x000055d7f96fa691 lldb_private::ValueObject::GetSummaryAsCString(lldb_private::TypeSummaryImpl*, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char>>&, lldb_private::TypeSummaryOptions const&) (/usr/bin/lldb+0x74fa691)
#62 0x000055d7f96fa560 lldb_private::ValueObject::GetSummaryAsCString(lldb_private::TypeSummaryImpl*, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char>>&, lldb::LanguageType) (/usr/bin/lldb+0x74fa560)
#63 0x000055d7f972e094 lldb_private::ValueObjectPrinter::PrintValueAndSummaryIfNeeded(bool&, bool&) (/usr/bin/lldb+0x752e094)
#64 0x000055d7f972d2fb lldb_private::ValueObjectPrinter::PrintValueObject() (/usr/bin/lldb+0x752d2fb)
#65 0x000055d7f97007cc lldb_private::ValueObject::Dump(lldb_private::Stream&, lldb_private::DumpValueObjectOptions const&) (/usr/bin/lldb+0x75007cc)
#66 0x000055d7f9786d2f lldb_private::CommandObjectDWIMPrint::DoExecute(llvm::StringRef, lldb_private::CommandReturnObject&) (/usr/bin/lldb+0x7586d2f)
#67 0x000055d7f984354a lldb_private::CommandObjectRaw::Execute(char const*, lldb_private::CommandReturnObject&) (/usr/bin/lldb+0x764354a)
#68 0x000055d7f975c10b lldb_private::CommandInterpreter::HandleCommand(char const*, lldb_private::LazyBool, lldb_private::CommandReturnObject&, bool) (/usr/bin/lldb+0x755c10b)
#69 0x000055d7f9760cb5 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)
#70 0x000055d7f96c29a3 lldb_private::IOHandlerEditline::Run() (/usr/bin/lldb+0x74c29a3)
#71 0x000055d7f96a1a96 lldb_private::Debugger::RunIOHandlers() (/usr/bin/lldb+0x74a1a96)
#72 0x000055d7f9762a0a lldb_private::CommandInterpreter::RunCommandInterpreter(lldb_private::CommandInterpreterRunOptions&) (/usr/bin/lldb+0x7562a0a)
#73 0x000055d7f8da176c lldb::SBDebugger::RunCommandInterpreter(lldb::SBCommandInterpreterRunOptions const&) (/usr/bin/lldb+0x6ba176c)
#74 0x000055d7f8d819f5 Driver::MainLoop() (/usr/bin/lldb+0x6b819f5)
#75 0x000055d7f8d829a1 main (/usr/bin/lldb+0x6b829a1)
#76 0x00007f10c52d0633 __libc_start_main (/usr/grte/v5/lib64/libc.so.6+0x61633)
#77 0x000055d7f8d7e02a _start (/usr/bin/lldb+0x6b7e02a)
```

https://github.com/llvm/llvm-project/pull/72235


More information about the cfe-commits mailing list