[CSA] CSA Weekly Report 2026-02-27 — 124 findings (↓6 from last run) #8796
Closed
Replies: 1 comment
-
|
This discussion was automatically closed because it expired on 2026-03-06T12:48:25.474Z.
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Date: 2026-02-27
Commit:
ea87367(ea87367)Build type: Debug (CMake + Ninja,
-DCMAKE_BUILD_TYPE=Debug)Analyzer: scan-build / clang-analyzer (Ubuntu clang 18.1.3)
Previous run: 2026-02-24 @
c282ece— 130 findingsSummary
Changes Since Last Run
Previous run (2026-02-24, commit
c282ece): 130 findingsThis run (2026-02-27, commit
ea87367): 124 findingsNet change: −6 findings (improvement)
Resolved since last run:
util/util.hand related arithmetic codeNew or unchanged findings:
High-Priority Findings
These findings are most likely to represent real bugs (not false positives):
core.NullDereferenceutil/debug.cppxcore.NullDereferencemath/realclosure/realclosure.cppascore.NullDereferencemath/polynomial/polynomial.cppm_next— null ptr from fieldm_del_ehcore.NullDereferencemath/polynomial/polynomial.cppm_next— null ptr from fieldm_nextcore.NullDereferenceast/rewriter/enum2bv_rewriter.cppargs— null pointer dereferencecore.NullDereferenceast/rewriter/enum2bv_rewriter.cppargs— null pointer dereferencecore.NullDereferenceutil/obj_mark.hcore.NullDereferenceutil/parray.hvs— null pointer dereferencecore.NullDereferencenlsat/nlsat_solver.cppcore.NullDereferencesmt/mam.cppcore.NullDereferencecmd_context/cmd_context.cppdomain— null pointer dereferencecore.NullDereferencesat/sat_npn3_finder.cppuse_list(3 locations)core.NullDereferenceast/euf/euf_mam.cppm_opcode/ forming referencecore.UndefinedBinaryOperatorResultast/act_cache.cpp&is a garbage valuecore.uninitialized.Branchmuz/spacer/spacer_context.cppcore.DivideZeroutil/util.hcore.BitwiseShiftutil/sorting_network.h4294967295— extreme overflowFindings by Category
Core Checkers — Null Pointer Issues (73 total)
Called C++ object pointer is null (55 findings)
Most are in AST/SMT infrastructure where
to_app(),to_quantifier()etc. return potentially null casts, then methods are immediately called on the result. Many of these may be false positives due to guarded control flow not visible to the analyzer.Top affected areas:
src/ast/ast.h— lines 947, 950, 1399, 1400, 1401 (5 findings — same inline helper functions)src/ast/euf/euf_mam.cpp— lines 1167, 1405, 2160 (3 findings)src/smt/mam.cpp— lines 1120, 1363, 2144 (3 findings)src/ast/sls/sls_arith_base.cpp— lines 1072, 1093 (2 findings)src/ast/sls/sls_euf_plugin.cpp— lines 292, 299 (2 findings)src/ast/sls/sls_seq_plugin.cpp— lines 264, 302, 340 (3 findings)src/ast/rewriter/seq_axioms.cpp— lines 81, 299, 1088 (3 findings)src/smt/theory_seq.cpp— lines 1628, 1628, 1631 (3 findings)src/math/realclosure/realclosure.cpp— lines 3461, 3477, 3494 (3 findings)src/ast/bv_decl_plugin.h— lines 313, 469, 471 (3 findings)src/opt/totalizer.cpp— line 40 (2 findings — duplicate path)Dereference of null pointer (18 findings)
src/sat/sat_npn3_finder.cpp— lines 219, 250, 292 (3 findings —use_listfield)src/math/polynomial/polynomial.cpp— lines 2581, 2587 (2 findings — linked-list traversal)src/ast/rewriter/enum2bv_rewriter.cpp— lines 92, 100 (2 findings —argsarray)src/ast/euf/euf_mam.cpp— lines 1708, 3413 (2 findings)src/cmd_context/cmd_context.cpp— lines 237, 1335 (2 findings)src/math/realclosure/realclosure.cpp— line 1118src/nlsat/nlsat_solver.cpp— line 1256src/smt/mam.cpp— line 3330src/sat/sat_aig_finder.cpp— line 198src/util/debug.cpp— line 163 (intentional — debugger trap)src/util/obj_mark.h— line 38src/util/parray.h— line 155C++ Specific — Returning Null Reference (5 findings)
src/ast/euf/euf_ac_plugin.cpp:805—backward_iteratorreturns null refsrc/util/util.h:259—operator*returns null refsrc/sat/sat_extension.h:76—s()returns null ref (path length 59 — likely complex control flow)src/util/ref.h:80—operator*returns null refsrc/cmd_context/cmd_context.h:428—pm()returns null refSuspicious Operations — Bitwise Shift (9 findings)
All are genuine undefined behavior in C++:
src/util/sorting_network.h:415— shift by4294967295(wraps around, very suspicious)src/util/bit_util.cpp:222— right shift by 32 ofunsigned int(UB)src/util/bit_util.cpp:286,338— left shift overflow ofunsigned intsrc/util/mpff.cpp:164,178— right shift by negative value (UB)src/math/simplex/bit_matrix.cpp:128— left shift by 32 ofint(UB)src/ast/rewriter/enum2bv_rewriter.cpp:67— left shift overflow ofintsrc/muz/rel/dl_sparse_table.h:331— left shift by ≥65 ofuint64_tLogic Errors — Uninitialized / Garbage Values (9 findings)
src/muz/spacer/spacer_context.cpp:3347,3596— 2 branch-on-garbage findingssrc/ast/rewriter/bit2int.cpp:362— branch-on-garbage (path length 60 — complex)src/math/lp/nla_core.cpp:309,567,569— 3 uninitialized argument valuessrc/ast/act_cache.cpp:175,197— garbage value in binary&operationsrc/math/lp/nla_core.cpp:556— garbage value in!=comparisonDivision by Zero (1 finding)
src/util/util.h:356—operator()— division by zero (path length 31)Dead Code (27 findings)
These are lower severity; most represent missed assignments or unused temporaries:
Dead assignments (18):
datalog_parser.cpp:1329,sls_bv_engine.cpp:454,spacer_quant_generalizer.cpp:535,user_solver.cpp:363,model_based_opt.cpp:76,mbp_term_graph.cpp:222,hilbert_basis.cpp:1013,1014,realclosure.cpp:4109,dl_compiler.cpp:390,bv_rewriter.cpp:2169,ho_matcher.cpp:560,horn_tactic.cpp:271,clp_context.cpp:187,pb_sls.cpp:651,optsmt.cpp:184,euf_model.cpp:372,dl_bound_relation.cpp:473Dead increments (3):
util.cpp:79,108,udoc_relation.cpp:721Dead initializations (6):
sat_local_search.cpp:569,lackr_model_constructor.cpp:314,opt_context.cpp:1273,polynomial.cpp:1740,theory_finite_set_size.cpp:204,theory_finite_set.cpp:174Top Affected Files
src/ast/ast.hsrc/ast/euf/euf_mam.cppsrc/math/realclosure/realclosure.cppsrc/ast/sls/sls_seq_plugin.cppsrc/smt/mam.cppsrc/ast/rewriter/seq_axioms.cppsrc/smt/theory_seq.cppsrc/math/lp/nla_core.cppsrc/sat/sat_npn3_finder.cppsrc/ast/bv_decl_plugin.hsrc/ast/rewriter/enum2bv_rewriter.cppsrc/util/bit_util.cppFull CSA Report Content
Complete findings extracted from the CSA HTML report (click to expand)
(162 total warning lines in build log)
Notes
ea87367.to_app(),to_quantifier()etc. are only called when safe. These are guarded byis_app(),is_quantifier()etc. checks elsewhere.util/debug.cpp:163null dereference is intentional — it's a debugger trap that intentionally dereferences null to trigger a breakpoint/crash for debugging.bit_util.cppandbit_matrix.cpprepresent real undefined behavior in C++ (though they may work correctly in practice on typical platforms with clang/gcc).scan-build -o /tmp/csa-report cmake -DCMAKE_BUILD_TYPE=Debug -G Ninja . && scan-build ninjaBeta Was this translation helpful? Give feedback.
All reactions