Skip to content

Check contracts with ESBMC's native CBMC goto reader - #710

Open
lucasccordeiro wants to merge 3 commits into
model-checking:mainfrom
lucasccordeiro:fix/708-esbmc-native-reader
Open

lucasccordeiro wants to merge 3 commits into
model-checking:mainfrom
lucasccordeiro:fix/708-esbmc-native-reader

Conversation

@lucasccordeiro

Copy link
Copy Markdown

ESBMC 7.10 segfaults reading goto-transcoder's output for contracts built by Kani main. ESBMC v8.5 reads Kani's .out files directly, so run-goto-transcoder.sh now runs esbmc --binary <x>.out --function <harness> and no longer needs the transcoder or library.goto. It also finds the .out files under both debug/deps and debug/build/PKG/HASH/out (#707), and fails if no contract was checked.

Tested on the checked_unchecked_mul_{i8,u8,i16,u16} contracts from Kani main with --keep-temps --only-codegen: ESBMC v8.5 verifies all four, matching Kani, while 7.10 segfaults on each.

Resolves #708

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.

ESBMC 7.10 segfaults reading goto-transcoder's output for contracts built
by Kani main (CBMC 6.11). ESBMC v8.5 reads Kani's .out files directly, so
drop the transcoder and library.goto, and find the .out files under either
Cargo layout (debug/deps or debug/build/PKG/HASH/out).

Fixes model-checking#708
If no listed file has an _RNv entry point, or all of them are excluded,
the loop never runs ESBMC and the job used to exit 0. Count the checked
contracts and exit 1 when there are none.
ESBMC runs inside a loop that reads the contract list from stdin. A
release that read stdin would consume the rest of the list after the
first contract, and the job would pass with only one contract checked.
@lucasccordeiro
lucasccordeiro requested a review from a team as a code owner October 3, 2026 08:22
@lucasccordeiro
lucasccordeiro marked this pull request as draft October 3, 2026 08:23
@lucasccordeiro
lucasccordeiro marked this pull request as ready for review October 3, 2026 16:17

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.

goto-transcoder: ESBMC 7.10 segfaults reading contracts generated by Kani main (CBMC 6.11)

1 participant