• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

vbpf / prevail / 26218991840
86%

Build:
DEFAULT BRANCH: main
Ran 21 May 2026 10:07AM UTC
Jobs 2
Files 77
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 May 2026 09:56AM UTC coverage: 86.646% (+0.006%) from 86.64%
26218991840

push

github

web-flow
Thread stack cell registry through AnalysisContext (#1116)

The array-domain cell map -- per-DataKind tracking of which stack cells
the analysis currently maintains a symbolic variable for -- previously
lived in a thread-local LazyAllocator and was cleared between analyses
via clear_thread_local_state(). That was fragile: if anything built an
ArrayDomain (e.g. an entry invariant) and then re-cleared the map, the
domain's cells became orphaned and subsequent stack ops silently saw an
empty map.

Move the registry to AnalysisContext as a unique_ptr-owned
StackCellRegistry (with a custom deleter so the header only needs a
forward declaration). All ArrayDomain methods that touch the cell map
now take StackCellRegistry& explicitly; the call sites in
ebpf_transformer.cpp and ebpf_domain.cpp pass context.cells(). The
registry dies with the context, so no global clear is required and
nested or sequenced analyses can no longer interfere.

ebpf_verifier_clear_thread_local_state() now only clears SplitDBM's
transient scratch buffer; the array map is no longer thread-local.

Reusing an AnalysisContext across analyze() calls would carry
stale stack-cell entries from the previous run, since the registry now
lives on the context rather than in thread-local state. clear it at the
top of both analyze(context) overloads (the StringInvariant-entry one
and the default-entry one); each then re-populates the registry as part
of building the entry domain.

The caller-supplied EbpfDomain overload still skips the clear -- by the
time it runs the caller has already populated the registry through the
entry's stack initialization. 

Signed-off-by: Elazar Gershuni <elazarg@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

83 of 84 new or added lines in 5 files covered. (98.81%)

9337 of 10776 relevant lines covered (86.65%)

6270935.12 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
92.25
0.03% src/crab/ebpf_transformer.cpp
Jobs
ID Job ID Ran Files Coverage
1 run-Debug - 26218991840.1 21 May 2026 11:00AM UTC 77
84.67
GitHub Action Run
2 run-Release - 26218991840.2 21 May 2026 10:07AM UTC 77
85.72
GitHub Action Run
Source Files on build 26218991840
  • Tree
  • List 77
  • Changed 5
  • Source Changed 0
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • b8f23ffe on github
  • Prev Build on main (#26179926435)
  • Next Build on main (#26368619075)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc