Skip to content

Kill running SMT solvers on early abort - #1096

Open
msooseth wants to merge 11 commits into
mainfrom
early-abort-kill-solvers
Open

msooseth wants to merge 11 commits into
mainfrom
early-abort-kill-solvers

Conversation

@msooseth

@msooseth msooseth commented Sep 22, 2026 •

Copy link
Copy Markdown
Collaborator

Description

With --early-abort, SMT solvers that are still running are now killed once a counterexample is found, instead of running to completion. Fixes #938.

Also fixes a deadlock ("thread blocked indefinitely in an STM transaction") when paths are still queued at abort time, and a spurious "all branches reverted" warning after an early abort.

The tests now have a "hanging solver" fixture to be able to test early abort. This solver always hangs, so we can properly check without using hacks like a very complicated query.

Checklist

  • tested locally
  • added automated tests
  • updated the docs
  • updated the changelog

Also fix the orchestrator deadlock when queued work is dropped on abort,
and the spurious "all branches reverted" warning after an early abort.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@msooseth
msooseth marked this pull request as draft September 22, 2026 10:05
msooseth and others added 9 commits September 22, 2026 12:24
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Replace the slow mulmod CLI test with deterministic solver-level tests
and a verify-level test that catches the orchestrator deadlock.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@msooseth
msooseth marked this pull request as ready for review September 22, 2026 10:57
A shell-script fixture cannot be spawned on Windows; the test binary
works everywhere and is never installed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@msooseth
msooseth added this pull request to stack #1097 September 22, 2026 12:53

@gustavo-grieco gustavo-grieco left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason not to have this as default? Maybe we could even remove the flag and always use it?

@msooseth

Copy link
Copy Markdown
Collaborator Author

I was going to ask you if you are interested to have this as default :) Yes, I think that would be great. We can make it as default for the CLI. Not for API, I think, users can choose it? What do you think? And then we can have the --no-early-abort in CLI. What do you think?

@gustavo-grieco

Copy link
Copy Markdown
Collaborator

I think making this the default makes a lot of sense, but allowing to use --no-early-abort mostly for regression testing.

This branch has not been deployed

No deployments
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.

Stop exploration as soon as a CEX is found, as per comment in #934 and as a follow-up to it

2 participants