Skip to content

clang-tidy crash due to readability-static-accessed-through-instance check bug. #53874

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Closed
cloudhan opened this issue Feb 16, 2022 · 3 comments
Closed
Labels
clang-tidy confirmed Verified by a second party crash Prefer [crash-on-valid] or [crash-on-invalid]

Comments

@cloudhan
Copy link

Run with clang-tidy --checks=readability-static-accessed* on the following file,

struct S {
  constexpr static int i = 1;
} s;

int main() {
  s.i;
}

results in the following error:

Stack dump:
0.      Program arguments: ../build/bin/clang-tidy --checks=readability-static-accessed* bug.cpp
1.      <eof> parser at end of file
 #0 0x00007f3f60113034 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/guangyunhan/workspaces/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:0
 #1 0x00007f3f601130eb PrintStackTraceSignalHandler(void*) /home/guangyunhan/workspaces/llvm-project/llvm/lib/Support/Unix/Signals.inc:632:0
 #2 0x00007f3f60110d9a llvm::sys::RunSignalHandlers() /home/guangyunhan/workspaces/llvm-project/llvm/lib/Support/Signals.cpp:97:0
 #3 0x00007f3f601129b5 SignalHandler(int) /home/guangyunhan/workspaces/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:0
 #4 0x00007f3f65b1e040 (/lib/x86_64-linux-gnu/libc.so.6+0x3f040)
 #5 0x00007f3f609f2604 llvm::PointerIntPair<clang::NestedNameSpecifier*, 2u, clang::NestedNameSpecifier::StoredSpecifierKind, llvm::PointerLikeTypeTraits<clang::NestedNameSpecifier*>, llvm::PointerIntPairInfo<clang::NestedNameSpecifier*, 2u, llvm::PointerLikeTypeTraits<clang::NestedNameSpecifier*> > >::getPointer() const /home/guangyunhan/workspaces/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:60:0
 #6 0x00007f3f609e4384 clang::NestedNameSpecifier::getPrefix() const /home/guangyunhan/workspaces/llvm-project/clang/include/clang/AST/NestedNameSpecifier.h:169:0
 #7 0x00007f3f60dac5f6 clang::tidy::readability::getNameSpecifierNestingLevel(clang::QualType const&) /home/guangyunhan/workspaces/llvm-project/clang-tools-extra/clang-tidy/readability/StaticAccessedThroughInstanceCheck.cpp:26:0
 #8 0x00007f3f60dacb88 clang::tidy::readability::StaticAccessedThroughInstanceCheck::check(clang::ast_matchers::MatchFinder::MatchResult const&) /home/guangyunhan/workspaces/llvm-project/clang-tools-extra/clang-tidy/readability/StaticAccessedThroughInstanceCheck.cpp:83:0
 #9 0x00007f3f605d3134 clang::tidy::ClangTidyCheck::run(clang::ast_matchers::MatchFinder::MatchResult const&) /home/guangyunhan/workspaces/llvm-project/clang-tools-extra/clang-tidy/ClangTidyCheck.cpp:46:0
#10 0x00007f3f5f456b16 clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::MatchVisitor::visitMatch(clang::ast_matchers::BoundNodes const&) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1060:0
#11 0x00007f3f5f5cc20d clang::ast_matchers::internal::BoundNodesTreeBuilder::visitMatches(clang::ast_matchers::internal::BoundNodesTreeBuilder::Visitor*) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchersInternal.cpp:105:0
#12 0x00007f3f5f455c06 clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::matchWithFilter(clang::DynTypedNode const&) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:866:0
#13 0x00007f3f5f455e07 clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::matchDispatch(clang::Stmt const*) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:890:0
#14 0x00007f3f5f46325b void clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::match<clang::Stmt>(clang::Stmt const&) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:719:0
#15 0x00007f3f5f457565 clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*> > > >*) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1260:0
#16 0x00007f3f5f497567 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseCompoundStmt(clang::CompoundStmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*> > > >*) /home/guangyunhan/workspaces/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:2268:0
#17 0x00007f3f5f4611b7 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::dataTraverseNode(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*> > > >*) /home/guangyunhan/workspaces/llvm-project/build/tools/clang/include/clang/AST/StmtNodes.inc:73:0
#18 0x00007f3f5f454bfa clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::dataTraverseNode(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*> > > >*) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:590:0
#19 0x00007f3f5f465ed5 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*> > > >*) /home/guangyunhan/workspaces/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:605:0
#20 0x00007f3f5f45757c clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*> > > >*) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1260:0
#21 0x00007f3f5f517025 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseFunctionHelper(clang::FunctionDecl*) /home/guangyunhan/workspaces/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:2100:0
#22 0x00007f3f5f4bc275 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseFunctionDecl(clang::FunctionDecl*) /home/guangyunhan/workspaces/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:2111:0
#23 0x00007f3f5f46551f clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseDecl(clang::Decl*) /home/guangyunhan/workspaces/llvm-project/build/tools/clang/include/clang/AST/DeclNodes.inc:421:0
#24 0x00007f3f5f4574aa clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::TraverseDecl(clang::Decl*) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1248:0
#25 0x00007f3f5f515098 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseDeclContextHelper(clang::DeclContext*) /home/guangyunhan/workspaces/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:1397:0
#26 0x00007f3f5f4c0216 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseTranslationUnitDecl(clang::TranslationUnitDecl*) /home/guangyunhan/workspaces/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:1498:0
#27 0x00007f3f5f465b19 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseDecl(clang::Decl*) /home/guangyunhan/workspaces/llvm-project/build/tools/clang/include/clang/AST/DeclNodes.inc:621:0
#28 0x00007f3f5f4574aa clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::TraverseDecl(clang::Decl*) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1248:0
#29 0x00007f3f5f46b697 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseAST(clang::ASTContext&) /home/guangyunhan/workspaces/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:201:0
#30 0x00007f3f5f458460 clang::ast_matchers::MatchFinder::matchAST(clang::ASTContext&) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1476:0
#31 0x00007f3f5f457915 clang::ast_matchers::internal::(anonymous namespace)::MatchASTConsumer::HandleTranslationUnit(clang::ASTContext&) /home/guangyunhan/workspaces/llvm-project/clang/lib/ASTMatchers/ASTMatchFinder.cpp:1340:0
#32 0x00007f3f5a4088fe clang::MultiplexConsumer::HandleTranslationUnit(clang::ASTContext&) /home/guangyunhan/workspaces/llvm-project/clang/lib/Frontend/MultiplexConsumer.cpp:291:0
#33 0x00007f3f527f6c3c clang::ParseAST(clang::Sema&, bool, bool) /home/guangyunhan/workspaces/llvm-project/clang/lib/Parse/ParseAST.cpp:178:0
#34 0x00007f3f5a3d12df clang::ASTFrontendAction::ExecuteAction() /home/guangyunhan/workspaces/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1074:0
#35 0x00007f3f5a3d0ba8 clang::FrontendAction::Execute() /home/guangyunhan/workspaces/llvm-project/clang/lib/Frontend/FrontendAction.cpp:971:0
#36 0x00007f3f5a2823fd clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /home/guangyunhan/workspaces/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1036:0
#37 0x00007f3f603eeeff clang::tooling::FrontendActionFactory::runInvocation(std::shared_ptr<clang::CompilerInvocation>, clang::FileManager*, std::shared_ptr<clang::PCHContainerOperations>, clang::DiagnosticConsumer*) /home/guangyunhan/workspaces/llvm-project/clang/lib/Tooling/Tooling.cpp:423:0
#38 0x00007f3f60579243 clang::tidy::runClangTidy(clang::tidy::ClangTidyContext&, clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>, bool, bool, llvm::StringRef)::ActionFactory::runInvocation(std::shared_ptr<clang::CompilerInvocation>, clang::FileManager*, std::shared_ptr<clang::PCHContainerOperations>, clang::DiagnosticConsumer*) /home/guangyunhan/workspaces/llvm-project/clang-tools-extra/clang-tidy/ClangTidy.cpp:567:0
#39 0x00007f3f603eed2f clang::tooling::ToolInvocation::runInvocation(char const*, clang::driver::Compilation*, std::shared_ptr<clang::CompilerInvocation>, std::shared_ptr<clang::PCHContainerOperations>) /home/guangyunhan/workspaces/llvm-project/clang/lib/Tooling/Tooling.cpp:399:0
#40 0x00007f3f603eeb44 clang::tooling::ToolInvocation::run() /home/guangyunhan/workspaces/llvm-project/clang/lib/Tooling/Tooling.cpp:384:0
#41 0x00007f3f603f03eb clang::tooling::ClangTool::run(clang::tooling::ToolAction*) /home/guangyunhan/workspaces/llvm-project/clang/lib/Tooling/Tooling.cpp:577:0
#42 0x00007f3f60579682 clang::tidy::runClangTidy(clang::tidy::ClangTidyContext&, clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>, bool, bool, llvm::StringRef) /home/guangyunhan/workspaces/llvm-project/clang-tools-extra/clang-tidy/ClangTidy.cpp:588:0
#43 0x00007f3f660d167e clang::tidy::clangTidyMain(int, char const**) /home/guangyunhan/workspaces/llvm-project/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp:501:0
#44 0x00005649852e88ba main /home/guangyunhan/workspaces/llvm-project/clang-tools-extra/clang-tidy/tool/ClangTidyToolMain.cpp:21:0
#45 0x00007f3f65b00bf7 __libc_start_main /build/glibc-S9d2JN/glibc-2.27/csu/../csu/libc-start.c:344:0
@EugeneZelenko EugeneZelenko added clang-tidy confirmed Verified by a second party crash Prefer [crash-on-valid] or [crash-on-invalid] and removed new issue labels Feb 16, 2022
@llvmbot
Copy link
Member

llvmbot commented Feb 16, 2022

@llvm/issue-subscribers-clang-tidy

@junaire
Copy link
Member

junaire commented Feb 16, 2022

A potential fix: https://reviews.llvm.org/D119949

cloudhan added a commit to cloudhan/onnxruntime that referenced this issue Feb 25, 2022
cloudhan added a commit to microsoft/onnxruntime that referenced this issue Feb 28, 2022
cloudhan added a commit to microsoft/onnxruntime that referenced this issue Mar 1, 2022
junaire added a commit that referenced this issue Mar 1, 2022
The ElaboratedType can have no qualifiers, so we should check it before
use.

Fix #issue53874(#53874)

Differential Revision: https://reviews.llvm.org/D119949
@junaire
Copy link
Member

junaire commented Mar 1, 2022

Close via ac616fb

@junaire junaire closed this as completed Mar 1, 2022
mem-frob pushed a commit to draperlaboratory/hope-llvm-project that referenced this issue Oct 7, 2022
The ElaboratedType can have no qualifiers, so we should check it before
use.

Fix #issue53874(llvm/llvm-project#53874)

Differential Revision: https://reviews.llvm.org/D119949
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
clang-tidy confirmed Verified by a second party crash Prefer [crash-on-valid] or [crash-on-invalid]
Projects
None yet
Development

No branches or pull requests

4 participants