Conversation
|
| Branch | vopr-loom-audit |
| Testbed | ubuntu-latest |
⚠️ WARNING: No Threshold found!Without a Threshold, no Alerts will ever be generated.
Click here to create a new Threshold
For more information, see the Threshold documentation.
To only post results if a Threshold exists, set the--ci-only-thresholdsflag.
Click to view all benchmark results
| Benchmark | leak-build-ms | Measure (units) x 1e3 | leak-count | Measure (units) | leak-run-ms | Measure (units) |
|---|---|---|---|---|---|---|
| benchmarks/concurrent/04_fanout_fanin/bench | 📈 view plot | 5.31 units x 1e3 | 📈 view plot | 0.00 units | 📈 view plot | 2,999.17 units |
| benchmarks/concurrent/09_kvstore/bench | 📈 view plot | 5.63 units x 1e3 | 📈 view plot | 0.00 units | 📈 view plot | 60,004.25 units |
| benchmarks/concurrent/14_nested_lock/bench | 📈 view plot | 5.17 units x 1e3 | 📈 view plot | 0.00 units | 📈 view plot | 386.31 units |
| benchmarks/inter-clear/02_concurrent_fsm_vs_stackful/bench_fsm | 📈 view plot | 5.11 units x 1e3 | 📈 view plot | 0.00 units | 📈 view plot | 153.89 units |
| benchmarks/inter-clear/02_concurrent_fsm_vs_stackful/bench_stackful | 📈 view plot | 5.23 units x 1e3 | 📈 view plot | 0.00 units | 📈 view plot | 350.96 units |
| benchmarks/sequential/11_pipeline_overhead/bench | 📈 view plot | 5.18 units x 1e3 | 📈 view plot | 0.00 units | 📈 view plot | 12,289.28 units |
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #25 +/- ##
==========================================
- Coverage 89.81% 88.96% -0.86%
==========================================
Files 183 178 -5
Lines 47963 47340 -623
Branches 11622 11622
==========================================
- Hits 43080 42115 -965
- Misses 4883 5225 +342
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Builds the VOPR coverage tooling system, drives loom coverage on
scheduler.zig from 36% to 77%, and adds VOPR scenarios across the
runtime.
Main pieces:
src/tools/loom_atomic_coverage.rb
src/tools/vopr_coverage.rb
Categorized coverage scanners (loom + VOPR). VOPR scanner has
six categories: time, random, net_io, fs_io, ring_io, retry,
retry_body. Each correlates a source-pattern scan against
cobertura XML from kcov.
zig/build.zig
`coverage-loom -Dcoverage-loom` and `coverage-vopr -Dcoverage-vopr`
build steps. Six VOPR test executables wired into a `vopr_exes`
table: scheduler-timeout-vopr, atomic-ptr-vopr, versioned-vopr,
fsm-lock-vopr, fsm-vopr, vopr-runqueue, data-structures-vopr.
Built as `b.addExecutable` (NOT `b.addTest`) so `@import("root")`
in lib/compat.zig + runtime/queues.zig resolves to the entry
file -- needed for the comptime SimClock / SimRandom / SimAtomic
seams to activate. Same GAP-B fix parking-lot-loom went through.
zig/runtime/vopr-clock.zig SimClock virtual clock
zig/runtime/vopr-random.zig SimRandom seeded PRNG
zig/runtime/vopr-gate.zig GAP-B regression gate (every
VOPR exe runs it as the first
scenario; fails fast if SimClock
or SimRandom seam falls through)
zig/runtime/vopr-atomic.zig Adds inject_cas_fault / rate +
inject_swap_busy_fault / rate +
inject_load_tagged_count_remaining
knobs. Off by default. SimAtomic
methods record the fault counter
and synthesize the configured
failure mode under VOPR scenarios.
disable_fiber_yield_point flag
lets fiber-bearing VOPR scenarios
drive REAL production code without
yielding on every atomic op.
zig/lib/compat.zig Comptime SimClock / SimRandom seams
in milliTimestamp / nanoTimestamp /
randomBytes. Comptime-deadcoded
under non-VOPR builds (zero overhead).
zig/runtime/scheduler.zig Helper extracts (`wakeExpiredSleepers`,
`wakeExpiredFsmSleepers`, `idleStealFrom`,
`earliestLockWaiterDeadlineMsUntil`,
`scanLockWaitersPub`) so VOPR / loom
tests can drive run-loop blocks without
entering the full scheduler loop. Same
logic, hoisted into pub fns.
29 retry markers (`// VOPR-START-RETRY:` ... `// VOPR-END-RETRY` and
`// VOPR-RETRY` single-line) across versioned.zig, atomic_ptr.zig,
scheduler.zig, observable.zig, queues.zig, data-structures.zig.
zig/runtime/parking-lot-loom.zig
13 new loom scenarios for the scheduler.zig coverage push (S1-S11
+ N1 batch 1-3): cross-scheduler resume flow, FSM resume flow,
coopYield, sleep wake, pickTwo, registry pin paths, WaitGroup +
Semaphore primitives, IO submit fns, SchedulerRegistry methods.
Brought scheduler.zig kcov coverage from 36% (59/163 sites) to
77% (126/163 + 2 elided).
Six VOPR fiber-aware scenarios: fiber harness minimal +
Runtime.sleep end-to-end + scanLockWaiters timeout-fire +
wakeExpiredSleepers + scanFsmLockWaiters + WaiterList spinlock fault.
docs/agents/vopr-coverage-audit.md
Single source of truth for the VOPR system + production-change
audit + TSan baseline measurement (3/20 master == 3/20 branch on
TSan 3/5 stream-test SplitStream pubsub hammer).
What's NOT in this commit:
- Production atomic-alias migrations were tried and reverted.
Routing widely-used types (WaitGroup/Semaphore counter+lock,
Arc.Inner counts, Stream/InfStream Inner head/tail/lock,
observable.SpinLock, profile-lock.SpinLock) through the comptime
Atomic alias amplified TSan flake rates -- the migration is
semantically a no-op (alias resolves to std.atomic.Value under
TSan) but timing-perturbing enough (struct padding / compile-cache
hash differences) to expose pre-existing races more often.
VOPR fault-injection scenarios that depended on those migrations
were dropped along with the migrations.
Branch result: 18 VOPR-test fault-injection / fiber-bearing scenarios
land + 13 new loom scheduler scenarios + the coverage tooling +
audit doc. Production code adds: SimClock/SimRandom comptime seams
(dead-coded in production), scheduler.zig pub-fn extracts of inline
run-loop blocks, retry markers, and dead-code removal in queues.zig.
No production behavior change; TSan flake rate matches master baseline.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.