Skip to content

Clang-tidy crash #53177

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
jan-revay opened this issue Jan 13, 2022 · 7 comments
Closed

Clang-tidy crash #53177

jan-revay opened this issue Jan 13, 2022 · 7 comments
Labels
bug Indicates an unexpected problem or unintended behavior clang-tidy duplicate Resolved as duplicate

Comments

@jan-revay
Copy link

jan-revay commented Jan 13, 2022

$ clang-tidy-12 ProblematicFile.cpp 
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.    Program arguments: clang-tidy-12 LogicPowerup.cpp
1.    <eof> parser at end of file
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
/lib/x86_64-linux-gnu/libLLVM-12.so.1(_ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamEi+0x23)[0x7fdfc65bdef3]
/lib/x86_64-linux-gnu/libLLVM-12.so.1(_ZN4llvm3sys17RunSignalHandlersEv+0x50)[0x7fdfc65bc210]
/lib/x86_64-linux-gnu/libLLVM-12.so.1(+0xbd955f)[0x7fdfc65be55f]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x153c0)[0x7fdfcddf43c0]
clang-tidy-12[0x7e1d83]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(+0xee0141)[0x7fdfcc07b141]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(_ZN5clang12ast_matchers8internal21BoundNodesTreeBuilder12visitMatchesEPNS2_7VisitorE+0x9c)[0x7fdfcc09e8ac]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(+0xedf84d)[0x7fdfcc07a84d]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(+0xef5d1f)[0x7fdfcc090d1f]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(+0xee812f)[0x7fdfcc08312f]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(+0xee75d3)[0x7fdfcc0825d3]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(+0xf03527)[0x7fdfcc09e527]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(+0xee3e1a)[0x7fdfcc07ee1a]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(+0xee13f2)[0x7fdfcc07c3f2]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(+0xee67bb)[0x7fdfcc0817bb]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(+0xee3b98)[0x7fdfcc07eb98]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(+0xee13f2)[0x7fdfcc07c3f2]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(_ZN5clang12ast_matchers11MatchFinder8matchASTERNS_10ASTContextE+0x2ec)[0x7fdfcc05ea7c]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(_ZN5clang17MultiplexConsumer21HandleTranslationUnitERNS_10ASTContextE+0x2c)[0x7fdfcd09ac3c]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(_ZN5clang8ParseASTERNS_4SemaEbb+0x244)[0x7fdfcbad3d94]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(_ZN5clang14FrontendAction7ExecuteEv+0x48)[0x7fdfcd069118]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(_ZN5clang16CompilerInstance13ExecuteActionERNS_14FrontendActionE+0x8a1)[0x7fdfccff6dd1]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(_ZN5clang7tooling21FrontendActionFactory13runInvocationESt10shared_ptrINS_18CompilerInvocationEEPNS_11FileManagerES2_INS_22PCHContainerOperationsEEPNS_18DiagnosticConsumerE+0x1ad)[0x7fdfcd1da8ed]
clang-tidy-12[0x87f646]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(_ZN5clang7tooling14ToolInvocation13runInvocationEPKcPNS_6driver11CompilationESt10shared_ptrINS_18CompilerInvocationEES7_INS_22PCHContainerOperationsEE+0x11a)[0x7fdfcd1da64a]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(_ZN5clang7tooling14ToolInvocation3runEv+0x9d4)[0x7fdfcd1d9a74]
/lib/x86_64-linux-gnu/libclang-cpp.so.12(_ZN5clang7tooling9ClangTool3runEPNS0_10ToolActionE+0xba8)[0x7fdfcd1dbb28]
clang-tidy-12[0x87c377]
clang-tidy-12[0x45833d]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7fdfc54940b3]
clang-tidy-12[0x45612e]
Segmentation fault (core dumped)

Unfortunately I cannot include the code files as they are propertialy. I found a exact line that causes the problem.

Crash is caused by a line in a file "ProblematicFile.cpp" (I obfuscated the names because the code is propertialy):

if(some_namespace::class1_instance.class2_instance.X)  /// THIS LINE CAUSES THE CRASH
{
    ....
}

class1 is defined in an included header file "Header.h" that as a standalone file was parsed by clang-tidy successfully:

....

namespace some_namespace {
extern const class class1 : public base_class1 {
public:
    class class2 : public base_class2 {
    public:
        class2();
        static const unsigned X;
        static const unsigned Y;
        static const unsigned Z;
    } class2_instance;
} class1_instance;
};
  
....

However I was unable to reproduce the crash just from the code I provided here... base_class1 and base_class2 are quite large classes.

P.S.: It crashes with clang-tidy-13 as well... (tested via clangd)

@EugeneZelenko EugeneZelenko added bug Indicates an unexpected problem or unintended behavior clang-tidy and removed new issue labels Jan 14, 2022
@llvmbot
Copy link
Member

llvmbot commented Jan 14, 2022

@llvm/issue-subscribers-clang-tidy

@llvmbot
Copy link
Member

llvmbot commented Jan 14, 2022

@llvm/issue-subscribers-bug

@jan-revay
Copy link
Author

Update:

Running:
$ clang-tidy-13 -checks=-readability-static-accessed-through-instance ProblematicFile.cpp
resp.
$ clang-tidy-12 -checks=-readability-static-accessed-through-instance ProblematicFile.cpp

Does not fail, hence it seems that readability-static-accessed-through-instance causes the issue.

@njames93
Copy link
Member

Using that check would it be possible to create a minimal reproducer. If you can't would you be able to build a debug clang-tidy potentially with sanatizers and provide a stack trace when it crashes

@jan-revay
Copy link
Author

jan-revay commented Jan 21, 2022

Ok, I will try if I will have some free time.

Hmm... after running

cmake -DLLVM_ENABLE_PROJECTS=clang-tools-extra -DLLVM_ENABLE_ASSERTIONS=On ../llvm
make

where will I find the clang-tidy binary? Can't find it anywhere... :D


Btw. The aforementioned file also crashes clang-tidy-14 and adding

// NOLINTBEGIN(*)
....
// NOLINTEND(*)

at beginning and the end of the problematic file does not solve the issue either. (the crash report is exactly the same)

@LegalizeAdulthood
Copy link
Contributor

Related to #53359 and #53285 ?

@PiotrZSL
Copy link
Member

PiotrZSL commented Aug 6, 2023

Duplicate of #53874
Crash happen in StaticAccessedThroughInstanceCheck, fixed in Clang 15
Fixed by ac616fb

@PiotrZSL PiotrZSL added the duplicate Resolved as duplicate label Aug 6, 2023
@PiotrZSL PiotrZSL closed this as not planned Won't fix, can't repro, duplicate, stale Aug 6, 2023
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bug Indicates an unexpected problem or unintended behavior clang-tidy duplicate Resolved as duplicate
Projects
None yet
Development

No branches or pull requests

6 participants