Context
PR #347 added regression E2E tests for 3 bugs:
- Multi-lane CAS single-lane bug (
test_duplicate_lane_same_address_aggregation)
- Wrong-old-value / failed acquire (
test_failed_acquire_no_sw_edge)
- Private sync address / ptr signature (
test_per_block_private_sync_no_spurious_suppress)
Two additional high-risk scenarios lack dedicated E2E coverage:
Gap 1: Same-value ABA concrete E2E
Status: Already covered — test_aba_same_value_no_spurious_suppress_e2e and test_acquire_cas_same_value_poll_still_races_with_third_party_same_value_writer were added in recent commits on #347.
Gap 2: Single-SM symbolic path (SymbolicHBSolver never suppresses)
When num_sms == 1, the race detector takes the symbolic analysis path. SymbolicHBSolver.check_race_possible() always returns True, so it never suppresses — but this behavior isn't pinned by an E2E test.
Without a regression test, a future change to SymbolicHBSolver that incorrectly starts suppressing could go unnoticed. The test should:
- Set up a
num_sms=1 scenario with release/acquire pattern
- Verify that races are still reported (symbolic path cannot prove ordering)
- Serve as a canary for when symbolic suppression is actually implemented (test expectations would flip)
Suggested test
def test_symbolic_path_release_acquire_still_reports_race():
"""num_sms=1 → symbolic path → SymbolicHBSolver returns True → race reported."""
# Producer-consumer pattern via symbolic path
# Assert races > 0 (symbolic HB cannot suppress)
Related
Priority
Test gap — ties into #349 resolution.
Context
PR #347 added regression E2E tests for 3 bugs:
test_duplicate_lane_same_address_aggregation)test_failed_acquire_no_sw_edge)test_per_block_private_sync_no_spurious_suppress)Two additional high-risk scenarios lack dedicated E2E coverage:
Gap 1: Same-value ABA concrete E2E
Status: Already covered —
test_aba_same_value_no_spurious_suppress_e2eandtest_acquire_cas_same_value_poll_still_races_with_third_party_same_value_writerwere added in recent commits on #347.Gap 2: Single-SM symbolic path (SymbolicHBSolver never suppresses)
When
num_sms == 1, the race detector takes the symbolic analysis path.SymbolicHBSolver.check_race_possible()always returnsTrue, so it never suppresses — but this behavior isn't pinned by an E2E test.Without a regression test, a future change to
SymbolicHBSolverthat incorrectly starts suppressing could go unnoticed. The test should:num_sms=1scenario with release/acquire patternSuggested test
Related
Priority
Test gap — ties into #349 resolution.