[CSA] CSA Weekly Report — 2026-03-01 — 124 findings (↓6 vs last run) #8822
Closed
Replies: 1 comment
-
|
This discussion was automatically closed because it expired on 2026-03-08T22:06:45.899Z.
|
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.
-
Build Information
dcb888d(HEAD → master)Summary
core.CallAndMessage)core.NullDereference)deadcode.DeadStores)core.BitwiseShift)core.uninitialized.UndefReturn)core.UndefinedBinaryOperatorResult, etc.)core.DivideZero)Changes Since Last Run (vs 2026-02-24, commit
c282ece)called_cpp_object_nullnull_dereferencedead_storesbitwise_shiftdivide_zeroreturning_null_referenceuninitialized_branchundefined_binary_opuninitialized_argstack_address_escaperesult_garbageNet improvement: −6 findings. The division-by-zero findings dropped from 5 to 1, and the stack address escape is gone. Three new "result of operation is garbage" findings appeared in
act_cache.cppandnla_core.cpp.High-Priority Findings
These are the most likely to represent real bugs (high path length or critical checker):
sat/sat_extension.hsast/rewriter/bit2int.cppvisitast/euf/euf_mam.cppinsertast/sls/sls_arith_base.cppmk_termast/rewriter/enum2bv_rewriter.cppreduce_appsmt/mam.cppinsertast/euf/euf_mam.cpplinearise_multi_patternutil/parray.hexpandast/bv_decl_plugin.hget_bv_sizeutil/util.hoperator()Findings by Category
Core Checkers — Null Pointer Issues (73 total)
Called C++ Object Pointer is Null (55)
These represent cases where a method is called on a pointer that CSA determined could be null. Many are in Z3's type-check helper functions (e.g.,
is_app,is_quantifier,is_bv) where the pattern is intentional (returning false when ptr is null). Nevertheless, a few longer-path entries may warrant review.Top affected subsystems:
ast/ast.h(5 findings) —is_app,is_quantifier,is_app_of,is_sort_ofast/euf/euf_mam.cpp(5 findings) — MAM e-matching enginemath/realclosure/realclosure.cpp(5 findings) — Real-closure arithmeticsmt/mam.cpp(4 findings) — Legacy MAM e-matchingast/sls/sls_seq_plugin.cpp(3 findings) — SLS sequence pluginast/rewriter/seq_axioms.cpp(3 findings) — Sequence axioms rewriterast/bv_decl_plugin.h(3 findings) — Bit-vector declarationssmt/theory_seq.cpp(3 findings) — Sequence theorySelected notable findings:
smt/mam.cpp:1363—is_semi_compatible(path 23): null C++ object ptrast/euf/euf_mam.cpp:1167—linearise_multi_pattern(path 32): null C++ object ptrsat/smt/pb_solver.h:274—inconsistent(path 29): null C++ object ptrparsers/smt2/smt2parser.cpp:588—parse_sort_name(path 26): null C++ object ptrsmt/theory_seq.cpp:1628,1631—add_ubv_string(paths 23/26/27): null C++ object ptrDereference of Null Pointer (18)
use_listsat/sat_npn3_finder.cppnlsat/nlsat_solver.cppdomaincmd_context/cmd_context.cppsmt/mam.cpputil/obj_mark.hasmath/realclosure/realclosure.cppm_nextvia nullm_del_ehmath/polynomial/polynomial.cppargsast/rewriter/enum2bv_rewriter.cppuse_listsat/sat_aig_finder.cppxutil/debug.cppvsutil/parray.hargscmd_context/cmd_context.cppast/euf/euf_mam.cppC++ Undefined Behavior / Bitwise Shift (9)
util/sorting_network.hintast/rewriter/enum2bv_rewriter.cppunsigned int(×2)util/bit_util.cpputil/mpff.cppunsigned intutil/bit_util.cppintmath/simplex/bit_matrix.cppuint64_tmuz/rel/dl_sparse_table.hReturning Null Reference (5)
ast/euf/euf_ac_plugin.cppbackward_iteratorutil/util.hoperator*sat/sat_extension.hsutil/ref.hoperator*cmd_context/cmd_context.hpmLogic / Garbage Value Errors (9)
Branch condition evaluates to garbage (3):
muz/spacer/spacer_context.cpp:3596—expand_pob(path 36)ast/rewriter/bit2int.cpp:362—visit(path 60)muz/spacer/spacer_context.cpp:3347—is_reachable(path 25)Result of operation is garbage or undefined (3) — NEW since last run:
ast/act_cache.cpp:175—insert: left operand of&is garbageast/act_cache.cpp:197—find: left operand of&is garbagemath/lp/nla_core.cpp:556—is_octagon_term: left operand of!=is garbageUninitialized argument (3):
math/lp/nla_core.cpp:567,569—add_equivalence_maybe: 2nd arg uninitializedmath/lp/nla_core.cpp:309—explain_by_equiv: 1st arg uninitializedDivision by Zero (1) — reduced from 5 ✅
util/util.h:356—operator()(path 31)Dead Code / Unused Variables (27)
18 dead assignments, 3 dead increments, 6 dead initializations. These are low severity but indicate cleanup opportunities.
Complete dead code findings
Dead assignments:
datalog_parser.cpp:1329—tokstored, never readsls_bv_engine.cpp:454—scorespacer_quant_generalizer.cpp:535—ubuser_solver.cpp:363—nmodel_based_opt.cpp:76—signmbp_term_graph.cpp:222—ahilbert_basis.cpp:1013,1014—prod,non_zerosdl_bound_relation.cpp:473—col1realclosure.cpp:4109—signdl_compiler.cpp:390—curr_sigbv_rewriter.cpp:2169—bv_sizeho_matcher.cpp:560—p1horn_tactic.cpp:271—is_reachableclp_context.cpp:187—statuspb_sls.cpp:651—argsoptsmt.cpp:184—num_scopeseuf_model.cpp:372—firstDead increments:
util.cpp:79,108—v(inlog2,uint64_log2)udoc_relation.cpp:721—hi2Dead initializations:
sat_local_search.cpp:569—is_corelackr_model_constructor.cpp:314—fidopt_context.cpp:1273—namepolynomial.cpp:1740—mtheory_finite_set_size.cpp:204—dtheory_finite_set.cpp:174—set1Top Affected Files
ast/ast.hast/euf/euf_mam.cppmath/realclosure/realclosure.cppmath/lp/nla_core.cppsmt/mam.cppsat/sat_npn3_finder.cppast/rewriter/enum2bv_rewriter.cppast/rewriter/seq_axioms.cppast/bv_decl_plugin.hutil/bit_util.cppast/sls/sls_seq_plugin.cppsmt/theory_seq.cppmath/polynomial/polynomial.cppFull CSA Report Content
Complete findings extracted from the CSA HTML report — click to expand
Notes
core.CallAndMessagefindings in inline helper functions likeis_app(),is_quantifier()etc. inast.h— these patterns are intentional in Z3's type-checking API.bit2int.cpp:362and warrants human review.core.UndefinedBinaryOperatorResultfindings inact_cache.cppare worth investigating.scan-build -o /tmp/csa-report cmake -DCMAKE_BUILD_TYPE=Debug -G Ninja . && scan-build ninjaBeta Was this translation helpful? Give feedback.
All reactions