Update CBMC dependency to 6.10.0#4619
Open
tautschnig wants to merge 6 commits into
Open
Conversation
Upgrading to 6.9.0 requires changes as described below. Upgrading from 6.9.0 to 6.10.0 does not require any further changes. Changes in CBMC's set of static objects require retuning shadow-memory object-count test: The `unsupported_num_objects` test depends on CBMC's internal object-ID numbering: it creates N objects and expects the (N+k)-th object's ID to cross Kani's 1024-object shadow-memory limit. Newer CBMC allocates one fewer auxiliary object, so the previous N values (1019 pass / 1020 fail) no longer straddle the limit -- the fail harness verified successfully instead of failing. Bump the thresholds by one (1020 pass / 1021 fail) to restore the boundary, update the explanatory comment, and note that these counts are sensitive to CBMC's object numbering and may need adjusting on future CBMC upgrades. Resolves: model-checking#4605 Resolves: model-checking#4617 Co-authored-by: Kiro <kiro-agent@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates Kani’s pinned CBMC version to 6.10.0 and adjusts a shadow-memory boundary test whose expected behavior depends on CBMC’s internal object-ID numbering (static object count changed in newer CBMC).
Changes:
- Bump CBMC dependency metadata from 6.8.0 to 6.10.0.
- Retune
unsupported_num_objectsthresholds to re-establish a pass/fail boundary at Kani’s 1024-object shadow-memory limit. - Improve the test’s explanatory comments to warn that the thresholds may need future adjustment on CBMC upgrades.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
tests/expected/shadow/unsupported_num_objects/test.rs |
Updates object-ID accounting comments and shifts the pass/fail N thresholds by +1 to match CBMC’s new auxiliary-object behavior. |
kani-dependencies |
Pins CBMC to version 6.10.0 (minor 10). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Member
Author
|
We need to investigate why CBMC's brew releases are no longer fully working. |
CBMC 6.10 makes the `slow` harness's Display/`to_string` formatting path far
more memory-heavy: the original `"foo"`/unwind(6) version peaks at ~26 GB with
Kani's default Cadical solver and deterministically OOM-kills the 16 GB
GitHub-hosted `perf` runner ("runner has received a shutdown signal"). No
solver is both under 16 GB and fast enough (minisat2/kissat stay ~8 GB but do
not finish in >15 min), so the harness itself must shrink.
Use an empty payload (formatted result `"A."`) and unwind(3) -- the smallest
bound that still fully unrolls the formatting loops. This keeps peak memory to
~11 GB while still exercising the trait/formatting path the test guards. Both
harnesses verify successfully.
Co-authored-by: Kiro <kiro-agent@users.noreply.github.com>
feliperodri
approved these changes
Jul 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Upgrading to 6.9.0 requires changes as described below. Upgrading from 6.9.0 to 6.10.0 does not require any further changes.
Changes in CBMC's set of static objects require retuning shadow-memory object-count test: The
unsupported_num_objectstest depends on CBMC's internal object-ID numbering: it creates N objects and expects the (N+k)-th object's ID to cross Kani's 1024-object shadow-memory limit. Newer CBMC allocates one fewer auxiliary object, so the previous N values (1019 pass / 1020 fail) no longer straddle the limit -- the fail harness verified successfully instead of failing.Bump the thresholds by one (1020 pass / 1021 fail) to restore the boundary, update the explanatory comment, and note that these counts are sensitive to CBMC's object numbering and may need adjusting on future CBMC upgrades.
CBMC 6.10 makes the
slowharness's Display/to_stringformatting path far more memory-heavy: the original"foo"/unwind(6) version peaks at ~26 GB with Kani's default Cadical solver and deterministically OOM-kills the 16 GB GitHub-hostedperfrunner ("runner has received a shutdown signal"). No solver is both under 16 GB and fast enough (minisat2/kissat stay ~8 GB but do not finish in >15 min), so the harness itself must shrink.Use an empty payload (formatted result
"A.") and unwind(3) -- the smallest bound that still fully unrolls the formatting loops. This keeps peak memory to ~11 GB while still exercising the trait/formatting path the test guards. Both harnesses verify successfully.Resolves: #4605
Resolves: #4617
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.