Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[analyzer] Remove overzealous "No dispatcher registered" assertion #107294

Merged
merged 1 commit into from
Sep 9, 2024

Commits on Sep 5, 2024

  1. [analyzer] Remove overzealous "No dispatcher registered" assertion

    Random testing revealed it's possible to crash the analyzer with the
    command line invocation:
    
    clang -cc1 -analyze -analyzer-checker=nullability empty.c
    
    The assert in CheckerManager.cpp was deemed to be too strict so is removed.
    
    clang: <root>/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp:56:
       void clang::ento::CheckerManager::finishedCheckerRegistration():
         Assertion `Event.second.HasDispatcher && "No dispatcher registered for an event"' failed.
    
    PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/
    
    Stack dump:
    0.      Program arguments: clang -cc1 -analyze -analyzer-checker=nullability nullability-nocrash.c
     #0 ...
     ...
     llvm#7 <addr> clang::ento::CheckerManager::finishedCheckerRegistration()
     llvm#8 <addr> clang::ento::CheckerManager::CheckerManager(clang::ASTContext&,
                 clang::AnalyzerOptions&, clang::Preprocessor const&,
                 llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>,
                 std::allocator<char>>>, llvm::ArrayRef<std::function<void (clang::ento::CheckerRegistry&)>>)
    
    This commit removes the assertion which failed here, because it was
    logically incorrect: it required that if an Event is handled by some
    (enabled) checker, then there must be an enabled checker which can
    emit that kind of Event. It should be OK to disable the event-producing
    checkers but enable an event-consuming checker which has different
    responsibilities in addition to handling the events.
    
    Note that this assertion was in an #ifndef NDEBUG block, so this
    change does not impact the non-debug builds.
    Vince Bridgers committed Sep 5, 2024
    Configuration menu
    Copy the full SHA
    d83ef8d View commit details
    Browse the repository at this point in the history