Skip to content

Run gh-30002647594-1 ​

Trial run

Warning — trial run. This benchmark was executed with fewer than 10 instances per fuzzer and/or a time budget shorter than 24h. Results from trial runs are meant for debugging purposes and are not valid for extracting conclusions across different fuzzers.

Charts ​

Bugs Over TimeTime To KFinal DistributionPlateau And Late ShareInvariant Overlap (UpSet)Corpus Size Over TimeSeq/s Over TimeTx/s Over TimeGas/s Over TimeCPU Usage Over TimeMemory Usage Over Time

Report ​

Fuzzer Benchmark Report (from bug-count CSV) ​

  • Time budget: 4.00h

Warning — trial run. This benchmark was executed with fewer than 10 instances per fuzzer and/or a time budget shorter than 24h. Results from trial runs are meant for debugging purposes and are not valid for extracting conclusions across different fuzzers.

⚠️ Run health ​

The following fuzzer legs show signs of not having run for the full time budget. Their results below are not comparable to healthy legs.

  • ⚠️ echidna: last parsed activity at 0.05h of a 4.00h budget across 2 instance(s) — the leg likely terminated early. Inspect the instance logs.

Executive summary ​

This report is derived solely from cumulative bugs-found over time across repeated runs per fuzzer. It emphasizes robust, distribution-based metrics (median/IQR, success rates, time-to-k) and shape-based behavior (plateau time, late discovery share) instead of single-run time-to-first-bug.

Bugs found at fixed time budgets (median [IQR]) ​

FuzzerRuns1h4h
recon-fuzzer212 [10,13]12 [10,14]
medusa26 [5,6]8 [8,9]
foundry22 [2,2]4 [4,4]
echidna23 [3,3]3 [3,3]

Overall metrics ​

FuzzerAUC (norm)Plateau timeLate discovery shareFinal medianFinal IQR
recon-fuzzer0.6961.10h0.000124.00
medusa0.4521.90h0.00080.50
foundry0.1234.00h0.50040.00
echidna0.1830.10h0.00030.00

Milestones: time-to-k and success rates ​

Fuzzertime-to-1 (p50)time-to-3 (p50)time-to-5 (p50)reach-1 ratereach-3 ratereach-5 rate
recon-fuzzer0.00h0.10h0.10h100.0%100.0%100.0%
medusa0.00h0.10h0.15h100.0%100.0%100.0%
foundry0.00h4.00hinf100.0%100.0%0.0%
echidna0.10h0.10hinf100.0%100.0%0.0%

Throughput metrics (if supported by log format) ​

Values are run-level rates aggregated per fuzzer; n/a indicates the parser could not recover that metric from logs.

FuzzerRunsTx/s runsTx/s p50 [p25,p75]Gas/s runsGas/s p50 [p25,p75]
recon-fuzzer2221901.67 [21755.80,22047.53]22858456735.50 [2800993881.75,2915919589.25]
medusa22975.50 [898.75,1052.25]2354461951.00 [347402733.00,361521169.00]
foundry2248172.60 [42005.17,54340.03]2222987981721169.00 [163609461458523.62,282366501983814.38]
echidna22360.46 [357.87,363.06]23786766843.50 [3675554406.25,3897979280.75]

Progress metrics from logs (fuzzer-specific proxies) ​

Sequence-rate and corpus values are parsed from native progress output and are useful for within-tool trend context.

FuzzerRunsSeq/s runsSeq/s p50 [p25,p75]Corpus runsCorpus p50 [p25,p75]
recon-fuzzer20n/a2643.50 [635.75,651.25]
medusa229.50 [8.25,10.75]2736.00 [733.50,738.50]
foundry20n/a20.00 [0.00,0.00]
echidna20n/a2274.00 [272.50,275.50]

Function selector sanity checks ​

Counts are occurrences in unique saved corpus sequences, not runtime execution frequencies The complete per-instance distribution is in selector_distribution.csv; selector_summary.json preserves statuses and provenance.

  • Expected-set status: available (149 selector(s))
  • Expected-set provenance: peer-consensus heuristic: observed in every available corpus for at least two independent evidence families (Echidna and Recon count as one related typed-corpus family); not benchmark ground truth
FuzzerStatusInstances with telemetrySaved-corpus callsUnique selectors
echidnaavailable2/253452180
foundryunavailable0/200
medusaavailable2/271063171
recon-fuzzeravailable2/2126507180
Most common saved-corpus selectors ​
FuzzerSelectorFunctionCallsShare
echidna0x4a9f284fdoomsday_maxWithdrawResetsAfterFullWithdrawal_ASSERTION_MAX_WITHDRAW_RESETS_AFTER_FULL_WITHDRAWAL(uint256)3990.75%
echidna0x923b5116ECDSAPPSOracle_updatePPS_clamped(uint256)3910.73%
echidna0x5e79ec62superVaultAggregator_createVault_clamped(uint256,uint256,uint256,uint256)3890.73%
echidna0xab2c6ce7yieldSource_setRevertBehavior4626(uint8,uint8)3860.72%
echidna0xdeaf00fesuperGovernor_executeRemoveIncentiveTokens()3860.72%
echidna0x5b5006a4invariant_erc7540_3()3800.71%
echidna0xf1f2a8fbsuperVaultStrategy_executeHooks_clamped(uint256[],uint256[],bool[])3790.71%
echidna0xecac6242superVaultStrategy_handleOperations7540_clamped(uint256,uint256)3740.70%
echidna0x8efa3b2dinvariant_totalSharesDontDecreaseOnRedemptionRequest()3710.69%
echidna0xfa912362superVaultStrategy_manageYieldSource_clamped(uint256)3710.69%
medusa0xe121d831yieldSource_setRevertBehavior5115(uint8)7121.00%
medusa0x69a21b7ayieldSource_requestRedeem(uint256,address,address)6440.91%
medusa0xed652da1superVaultAggregator_slashStake(address,uint256)6310.89%
medusa0x16932562doomsday_maxRedeemResetsAfterFullRedemption_ASSERTION_MAX_REDEEM_RESETS_AFTER_FULL_REDEMPTION(uint256)6200.87%
medusa0xf7f335e9yieldSource_approve(address,uint256)6140.86%
medusa0xbed76c2csuperVault_mint_ASSERTION_PREVIEW_MINT_MATCHES_EXECUTION(uint256)6080.86%
medusa0x64dfafcasuperVaultAggregator_addAuthorizedCaller(address,address)6070.85%
medusa0xf9e20e1bsuperVaultStrategy_handleOperations4626Deposit(address,uint256)6030.85%
medusa0x53b95ac1doomsday_primaryManagerAlwaysChangeable_ASSERTION_PRIMARY_MANAGER_ALWAYS_CHANGEABLE()5960.84%
medusa0xfb48798dyieldSource_mint(uint256,address)5950.84%
recon-fuzzer0xfa912362superVaultStrategy_manageYieldSource_clamped(uint256)9820.78%
recon-fuzzer0x1e78dbc2superVaultAggregator_updatePPSVerificationThresholds(address,uint256,uint256,uint256)8900.70%
recon-fuzzer0xf1f2a8fbsuperVaultStrategy_executeHooks_clamped(uint256[],uint256[],bool[])8670.69%
recon-fuzzer0xfb48798dyieldSource_mint(uint256,address)8580.68%
recon-fuzzer0x98bea562yieldSource_setLossOnWithdraw(uint256)8500.67%
recon-fuzzer0x0012bfcasuperVaultStrategy_handleOperations4626Mint(address,uint256,uint256,uint256)8420.67%
recon-fuzzer0x1a001033superVault_deposit_ASSERTION_PREVIEW_DEPOSIT_MATCHES_EXECUTION(uint256)8410.66%
recon-fuzzer0xa6b7e9a7global_comparePreviewDepositAndConvertToShares_ASSERTION_GLOBAL_CONVERT_TO_SHARES_GTE_PREVIEW_DEPOSIT(uint256)8350.66%
recon-fuzzer0xfe4574acyieldSource_deposit(uint256,address)8230.65%
recon-fuzzer0x5d83e580yieldSource_simulateGain(uint256)8210.65%
Selector telemetry limitations ​
  • i-004bdfd0d17dc687a-foundry-git-02c05d9: Foundry selector distribution is unavailable because no persisted corpus was present; failure-event selectors are intentionally not used as a distribution
  • i-07fee1e9a2fddd68f-foundry-git-02c05d9: Foundry selector distribution is unavailable because no persisted corpus was present; failure-event selectors are intentionally not used as a distribution

Statistical comparison (Mann-Whitney U and Vargha-Delaney A12) ​

Pairwise Mann-Whitney U tests and Vargha-Delaney A12 effect sizes on end-of-budget bug counts. The tests are two-sided, with Bonferroni correction applied for 6 comparison(s). Significance level: alpha = 0.05.

Warnings:

  • One or more fuzzers have fewer than 5 runs. Statistical power may be limited.
Fuzzer AFuzzer BMedian AMedian BU statisticA12 (A over B)Effect magnitudep-valuep (corrected)Significant
recon-fuzzermedusa128.52.50.625small1.00001.0000no
recon-fuzzerfoundry1244.01.000large0.22071.0000no
recon-fuzzerechidna1234.01.000large0.22071.0000no
medusafoundry8.544.01.000large0.22071.0000no
medusaechidna8.534.01.000large0.22071.0000no
foundryechidna434.01.000large0.19391.0000no

No pairwise comparison reached significance after Bonferroni correction.

Note: A12 is the probability that a randomly selected Fuzzer A run has a higher final bug count than a randomly selected Fuzzer B run, counting ties as half. Values above 0.5 favor A, values below 0.5 favor B, and 0.5 means equal tendency. Magnitude thresholds by distance from 0.5 are negligible (<0.06), small (<0.14), medium (<0.21), and large (>=0.21). Small sample sizes (fewer than 5 runs) reduce statistical power. A12 and its magnitude label are descriptive; the thresholds are rules of thumb. Neither the effect size nor statistical significance establishes practical importance, causation, or performance beyond the observed runs.

Shape-based interpretation (rules of thumb) ​

  • Fast-start / early-plateau: high early checkpoint median + early plateau time + low late discovery share.
  • Steady: moderate AUC, later plateau, consistent improvements across checkpoints, moderate variance.
  • Slow-burn / late-surge: low early checkpoints but high late discovery share and later plateau time; often higher final median.

Limitations ​

  • Core count-based charts use normalized event identities stored under the legacy bugs_found column. They do not count crash inputs, but they are not confirmed root-cause bug counts.
  • Use known_bug_report.md, known_bug_summary.csv, and known_bug_findings.csv for evidence-backed known-bug hit rates; use broken_invariants.md / broken_invariants.csv for raw invariant identities.
  • Severity, exploitability, and root-cause uniqueness cannot be measured directly without richer per-bug metadata.
  • Harness design still affects results; mitigate by keeping harness identical across fuzzers and reporting many runs.

Broken invariants ​

  • Budget filter: 4.00h
  • Events considered: 55 / 55
  • Unique invariants: 19

Warning — trial run. This benchmark was executed with fewer than 10 instances per fuzzer and/or a time budget shorter than 24h. Results from trial runs are meant for debugging purposes and are not valid for extracting conclusions across different fuzzers.

Per-fuzzer totals ​

FuzzerInvariants
echidna3
foundry4
medusa12
recon-fuzzer16

High-level overlap ​

  • Shared by all active fuzzers: 2
  • Exclusive to echidna: 0
  • Exclusive to foundry: 0
  • Exclusive to medusa: 2
  • Exclusive to recon-fuzzer: 7

Grouped invariants ​

Exclusive to echidna (0)

None.

Exclusive to foundry (0)

None.

Exclusive to medusa (2)
  • invariant_accumulatorCostBasisIncrease
  • invariant_fulfillOnlyBurnsRequestedAmount
Exclusive to recon-fuzzer (7)
  • doomsday_fulfillDoesntOverRedeemMultipleActors
  • doomsday_maxWithdrawResetsAfterFullWithdrawal
  • global_erc7540_4_redeem
  • global_erc7540_7_redeem
  • global_erc7540_7_withdraw
  • invariant_sumOfClaimable
  • superVaultStrategy_fulfillRedeemRequests_clamped
Shared by all active fuzzers (2)
  • assert_canary
  • invariant_canary

Top shared subsets (top 4 by size):

medusa, recon-fuzzer (5)
  • doomsday_depositWithdrawSymmetrical
  • doomsday_maxRedeemResetsAfterFullRedemption
  • global_comparePreviewMintAndConvertToAssets
  • global_previewEquivalenceFromAssets
  • invariant_accumulatorSharesDecreaseOnFulfill_exact
echidna, medusa, recon-fuzzer (1)
  • global_previewEquivalenceFromShares
foundry, medusa (1)
  • invariant_maxRedeemMaxWithdrawSymmetry
foundry, medusa, recon-fuzzer (1)
  • doomsday_mintRedeemSymmetrical

Ground-truth known-bug mapping ​

  • Target: superform-v2-periphery
  • Evidence-pinned commit: 102eeaf5e2f49963bdd007c7358739b0a0e59e84
  • Resolution: matched run repository and commit
  • Catalog: benchmarks/known_bugs.json

Only the two instrumented health-check canaries are mapped. The target documents historical findings, but their current event aliases are left unmapped until each alias-to-root-cause relationship is independently reviewed.

Canaries are reported separately as harness-health checks and are never included in the known-bug hit-rate denominator.

Per-fuzzer results ​

FuzzerReplicatesKnown-bug replicate hitsCatalog coverageCanary replicate hitsUnmapped event findings
echidna2n/an/a4/4 (100.0%)2
foundry2n/an/a4/4 (100.0%)4
medusa2n/an/a4/4 (100.0%)13
recon-fuzzer2n/an/a4/4 (100.0%)20

Known-bug catalog ​

Ground-truth IDKindTitleEvidence
None cataloged

Unmapped event identities ​

FuzzerEvent identityReplicates observed
echidnaglobal_previewEquivalenceFromShares2
foundrydoomsday_mintRedeemSymmetrical2
foundryinvariant_maxRedeemMaxWithdrawSymmetry2
medusadoomsday_depositWithdrawSymmetrical1
medusadoomsday_maxRedeemResetsAfterFullRedemption1
medusadoomsday_mintRedeemSymmetrical2
medusaglobal_comparePreviewMintAndConvertToAssets1
medusaglobal_previewEquivalenceFromAssets1
medusaglobal_previewEquivalenceFromShares2
medusainvariant_accumulatorCostBasisIncrease1
medusainvariant_accumulatorSharesDecreaseOnFulfill_exact1
medusainvariant_fulfillOnlyBurnsRequestedAmount1
medusainvariant_maxRedeemMaxWithdrawSymmetry2
recon-fuzzerdoomsday_depositWithdrawSymmetrical2
recon-fuzzerdoomsday_fulfillDoesntOverRedeemMultipleActors1
recon-fuzzerdoomsday_maxRedeemResetsAfterFullRedemption1
recon-fuzzerdoomsday_maxWithdrawResetsAfterFullWithdrawal1
recon-fuzzerdoomsday_mintRedeemSymmetrical2
recon-fuzzerglobal_comparePreviewMintAndConvertToAssets2
recon-fuzzerglobal_erc7540_4_redeem1
recon-fuzzerglobal_erc7540_7_redeem1
recon-fuzzerglobal_erc7540_7_withdraw1
recon-fuzzerglobal_previewEquivalenceFromAssets2
recon-fuzzerglobal_previewEquivalenceFromShares2
recon-fuzzerinvariant_accumulatorSharesDecreaseOnFulfill_exact2
recon-fuzzerinvariant_sumOfClaimable1
recon-fuzzersuperVaultStrategy_fulfillRedeemRequests_clamped1

Counting semantics ​

  • A canonical known-bug ID counts at most once per replicate, even when several event aliases or counterexamples reach it.
  • A replicate is identified by (run_id, instance_id, fuzzer).
  • Known-bug hit rate is canonical bug/replicate hits ÷ (cataloged bugs × replicates).
  • Unmapped rows are distinct normalized event identities per replicate. They are triage candidates, not claimed bugs.
  • Crash inputs and corpus files are not used as bug identities.

Runner resource usage ​

  • Budget filter: 4.00h
  • Instances with metrics: 8
  • Total samples: 16952

Per-fuzzer medians (across instances) ​

FuzzerInstancesCPU active avg (%)CPU active peak (%)Memory used avg (GiB)Memory used peak (GiB)Memory used avg (%)Memory used peak (%)
echidna215.5684.215.4911.0917.9236.19
foundry299.05100.001.482.834.819.25
medusa298.2699.862.302.887.499.41
recon-fuzzer297.1499.966.629.3821.5930.60

Instance stats ​

InstanceFuzzerSamplesDuration (h)CPU active avg (%)CPU active peak (%)Memory avg (GiB)Memory peak (GiB)Memory avg (%)Memory peak (%)
i-026e15969fbd760d9-echidna-v2.3.2echidna540.0715.1789.545.0010.9316.3035.66
i-0aad8404a01667ef5-echidna-v2.3.2echidna630.0915.9578.885.9811.2619.5336.73
i-004bdfd0d17dc687a-foundry-git-02c05d9foundry28124.0099.05100.001.462.804.789.14
i-07fee1e9a2fddd68f-foundry-git-02c05d9foundry28104.0099.05100.001.492.874.859.36
i-05a8a88d7d521aabd-medusa-v1.5.1medusa28104.0098.2799.852.292.887.489.40
i-08ebb34134490c698-medusa-v1.5.1medusa28084.0098.2499.872.302.897.509.42
i-024892c856245b58f-recon-v0.4.18recon-fuzzer27964.0097.5499.976.459.7221.0331.71
i-0b938d62f045d4abf-recon-v0.4.18recon-fuzzer27994.0096.7399.956.789.0422.1429.49

Manifest ​

  • scfuzzbench_commit: 82f696d5309a468dc66498f818e55d804a0113ea
  • target_repo_url: https://github.com/scfuzzbench/superform-v2-periphery-scfuzzbench
  • target_commit: 102eeaf5e2f49963bdd007c7358739b0a0e59e84
  • benchmark_type: property
  • instance_type: c6a.4xlarge
  • instances_per_fuzzer: 2
  • timeout_hours: 4
  • aws_region: us-east-1
  • ubuntu_ami_id: ami-052355af2a014bd2c
  • foundry_version: 1.7.2-dev
  • foundry_git_repo: https://github.com/foundry-rs/foundry
  • foundry_git_ref: 02c05d970d2801da0aef8b82486ce84b01ede36d
  • foundry_source_patch: scfuzzbench-throughput-progress-v1@sha256:2ee9e69b77c8007c78c816eb9ca791684aa5ecede0651b63f86cdd2e055eb17e
  • echidna_version: 2.3.2
  • medusa_version: 1.5.1
  • recon_version: 0.4.18
  • fuzzer_keys: echidna, foundry, medusa, recon-fuzzer

Artifacts ​

Fully static. Generated in CI from S3 run artifacts.