[llvm-bugs] [Bug 51152] New: Analyzer crashes with cplusplus.SmartPtrModeling

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Jul 21 05:11:03 PDT 2021


https://bugs.llvm.org/show_bug.cgi?id=51152

            Bug ID: 51152
           Summary: Analyzer crashes with cplusplus.SmartPtrModeling
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Static Analyzer
          Assignee: dcoughlin at apple.com
          Reporter: v.reichelt at netcologne.de
                CC: dcoughlin at apple.com, llvm-bugs at lists.llvm.org

Running clang's analyzer with
"clang++ --analyze -Xclang -analyzer-checker -Xclang cplusplus.SmartPtrModeling
-c"
on the following valid code snippet triggers a crash:

================================
void foo(void (*f)(int, int))
{
  f(0, 0);
}
================================

This regression was introduced last week.

Stack dump:
0.      Program arguments: /LLVM/LLVM-trunk/bin/clang++ --analyze -Xclang
-analyzer-checker -Xclang cplusplus.SmartPtrModeling -c CLbug.cc
1.      <eof> parser at end of file
2.      While analyzing stack: 
        #0 Calling foo(void (*)(int, int))
3.      CLbug.cc:3:3: Error evaluating statement
4.      CLbug.cc:3:3: Error evaluating statement
 #0 0x000000000307f660 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x000000000307d4f4 llvm::sys::CleanupOnSignal(unsigned long)
(/LLVM/LLVM-trunk/bin/clang+++0x307d4f4)
 #2 0x0000000002fccee8 CrashRecoverySignalHandler(int)
CrashRecoveryContext.cpp:0:0
 #3 0x00007f9f4360c680 __restore_rt sigaction.c:0:0
 #4 0x00000000049c4aca (anonymous
namespace)::SmartPtrModeling::evalCall(clang::ento::CallEvent const&,
clang::ento::CheckerContext&) const SmartPtrModeling.cpp:0:0
 #5 0x0000000004b32117
clang::ento::CheckerManager::runCheckersForEvalCall(clang::ento::ExplodedNodeSet&,
clang::ento::ExplodedNodeSet const&, clang::ento::CallEvent const&,
clang::ento::ExprEngine&, clang::ento::EvalCallOptions const&)
(/LLVM/LLVM-trunk/bin/clang+++0x4b32117)
 #6 0x0000000004b9e58b
clang::ento::ExprEngine::evalCall(clang::ento::ExplodedNodeSet&,
clang::ento::ExplodedNode*, clang::ento::CallEvent const&)
(/LLVM/LLVM-trunk/bin/clang+++0x4b9e58b)
 #7 0x0000000004b9f487 clang::ento::ExprEngine::VisitCallExpr(clang::CallExpr
const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)
(/LLVM/LLVM-trunk/bin/clang+++0x4b9f487)
 #8 0x0000000004b7b5aa clang::ento::ExprEngine::Visit(clang::Stmt const*,
clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)
(/LLVM/LLVM-trunk/bin/clang+++0x4b7b5aa)
 #9 0x0000000004b7c422 clang::ento::ExprEngine::ProcessStmt(clang::Stmt const*,
clang::ento::ExplodedNode*) (/LLVM/LLVM-trunk/bin/clang+++0x4b7c422)
#10 0x0000000004b7c607
clang::ento::ExprEngine::processCFGElement(clang::CFGElement,
clang::ento::ExplodedNode*, unsigned int, clang::ento::NodeBuilderContext*)
(/LLVM/LLVM-trunk/bin/clang+++0x4b7c607)
#11 0x0000000004b3911d clang::ento::CoreEngine::HandlePostStmt(clang::CFGBlock
const*, unsigned int, clang::ento::ExplodedNode*)
(/LLVM/LLVM-trunk/bin/clang+++0x4b3911d)
#12 0x0000000004b39602
clang::ento::CoreEngine::ExecuteWorkList(clang::LocationContext const*,
unsigned int, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>)
(/LLVM/LLVM-trunk/bin/clang+++0x4b39602)
#13 0x00000000046a436f (anonymous
namespace)::AnalysisConsumer::HandleCode(clang::Decl*, unsigned int,
clang::ento::ExprEngine::InliningModes, llvm::DenseSet<clang::Decl const*,
llvm::DenseMapInfo<clang::Decl const*> >*) AnalysisConsumer.cpp:0:0
#14 0x00000000046ba758 (anonymous
namespace)::AnalysisConsumer::HandleDeclsCallGraph(unsigned int)
AnalysisConsumer.cpp:0:0
#15 0x00000000046bb872 (anonymous
namespace)::AnalysisConsumer::HandleTranslationUnit(clang::ASTContext&)
AnalysisConsumer.cpp:0:0
#16 0x0000000004c77739 clang::ParseAST(clang::Sema&, bool, bool)
(/LLVM/LLVM-trunk/bin/clang+++0x4c77739)
#17 0x0000000003a4a379 clang::FrontendAction::Execute()
(/LLVM/LLVM-trunk/bin/clang+++0x3a4a379)
#18 0x00000000039dd896
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
(/LLVM/LLVM-trunk/bin/clang+++0x39dd896)
#19 0x0000000003b0be5c
clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
(/LLVM/LLVM-trunk/bin/clang+++0x3b0be5c)
#20 0x000000000099fda1 cc1_main(llvm::ArrayRef<char const*>, char const*,
void*) (/LLVM/LLVM-trunk/bin/clang+++0x99fda1)
#21 0x000000000099b611 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&)
driver.cpp:0:0
#22 0x000000000386d635 void llvm::function_ref<void
()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>
>, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#23 0x0000000002fcd054
llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>)
(/LLVM/LLVM-trunk/bin/clang+++0x2fcd054)
#24 0x000000000386deac
clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>
>, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >*, bool*) const (.part.0) Job.cpp:0:0
#25 0x0000000003840d07
clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&,
clang::driver::Command const*&) const (/LLVM/LLVM-trunk/bin/clang+++0x3840d07)
#26 0x00000000038417f9
clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&,
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const
(/LLVM/LLVM-trunk/bin/clang+++0x38417f9)
#27 0x000000000384e151
clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&,
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&)
(/LLVM/LLVM-trunk/bin/clang+++0x384e151)
#28 0x00000000008d8235 main (/LLVM/LLVM-trunk/bin/clang+++0x8d8235)
#29 0x00007f9f423483d5 __libc_start_main (/lib64/libc.so.6+0x223d5)
#30 0x000000000099afc9 _start (/LLVM/LLVM-trunk/bin/clang+++0x99afc9)
clang-13: error: clang frontend command failed with exit code 139 (use -v to
see invocation)
clang version 13.0.0 (https://github.com/llvm/llvm-project.git
21401a72629cc591bab7ec6816f03e6c550f3fb3)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /LLVM/LLVM-trunk/bin

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210721/f6464316/attachment-0001.html>


More information about the llvm-bugs mailing list