Skip to content

[FEAT][RACE DETECTOR] Add symbolic path HB solver#346

Open
mark14wu wants to merge 2 commits intoadd_effect_based_race_classification_and_28bcfrom
add_symbolic_path_hb_solver_for_race_det_e62c
Open

[FEAT][RACE DETECTOR] Add symbolic path HB solver#346
mark14wu wants to merge 2 commits intoadd_effect_based_race_classification_and_28bcfrom
add_symbolic_path_hb_solver_for_race_det_e62c

Conversation

@mark14wu
Copy link
Copy Markdown
Collaborator

@mark14wu mark14wu commented Mar 17, 2026

Add symbolic path HB solver for race detector

Add SymbolicHBSolver that models two copies of the symbolic program
(block A and B) with separate po chains and cross-block sw edges.
Integrate into _check_symbolic_races to suppress races proven ordered
by release/acquire synchronization in the symbolic analysis path.

PR chain

  1. [FEAT][RACE DETECTOR] Add atomic metadata plumbing and return value capture #344
  2. [FEAT][RACE DETECTOR] Add effect-based race classification and concrete HB solver #345
  3. 👉 [FEAT][RACE DETECTOR] Add symbolic path HB solver #346 👈 YOU ARE HERE
  4. [FEAT][RACE DETECTOR] Add atomic sync examples and end-to-end tests #347

⚠️⚠️ Please do not click the green "merge" button unless you know what
you're doing. This PR is part of a chain of PRs, and clicking the merge
button will not merge it into master. ⚠️⚠️

@mark14wu mark14wu changed the title Add symbolic path HB solver for race detector [FEAT][RACE DETECTOR] PR3: Add symbolic path HB solver Mar 17, 2026
@mark14wu mark14wu changed the title [FEAT][RACE DETECTOR] PR3: Add symbolic path HB solver [FEAT][RACE DETECTOR] Add symbolic path HB solver Mar 17, 2026
@mark14wu mark14wu force-pushed the add_effect_based_race_classification_and_28bc branch from 6de4922 to fbb62ce Compare March 18, 2026 20:14
@mark14wu mark14wu force-pushed the add_symbolic_path_hb_solver_for_race_det_e62c branch 3 times, most recently from eb2f289 to 993a5c5 Compare March 19, 2026 01:36
mark14wu and others added 2 commits March 19, 2026 15:53
Add SymbolicHBSolver that models two copies of the symbolic program
(block A and B) with separate po chains and cross-block sw edges.
Integrate into _check_symbolic_races to suppress races proven ordered
by release/acquire synchronization in the symbolic analysis path.

git-pr-chain: add_symbolic_path_hb_solver_for_race_det_e62c
SymbolicHBSolver used string equality of symbolic ptr signatures to
prove same-address and built unconditional sw edges. This is unsound
for flag+pid patterns where signatures match but concrete addresses
differ. Symbolic accesses also lack atomic_old, so reads-from can't
be proven.

Replace with conservative `return True` so all candidate races are
reported and the concrete fallback handles suppression.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant