Skip to content

Update CBMC dependency to 6.10.0#4619

Open
tautschnig wants to merge 6 commits into
model-checking:mainfrom
tautschnig:cbmc-update
Open

Update CBMC dependency to 6.10.0#4619
tautschnig wants to merge 6 commits into
model-checking:mainfrom
tautschnig:cbmc-update

Conversation

@tautschnig

@tautschnig tautschnig commented Jul 2, 2026

Copy link
Copy Markdown
Member

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.

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.

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.

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>
@tautschnig tautschnig requested a review from a team as a code owner July 2, 2026 11:20
Copilot AI review requested due to automatic review settings July 2, 2026 11:20
@github-actions github-actions Bot added the Z-EndToEndBenchCI Tag a PR to run benchmark CI label Jul 2, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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_objects thresholds 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.

Comment thread tests/expected/shadow/unsupported_num_objects/test.rs Outdated
@tautschnig tautschnig self-assigned this Jul 2, 2026
@tautschnig

Copy link
Copy Markdown
Member Author

We need to investigate why CBMC's brew releases are no longer fully working.

tautschnig and others added 5 commits July 7, 2026 09:25
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 feliperodri enabled auto-merge July 8, 2026 07:57
@feliperodri feliperodri added this pull request to the merge queue Jul 8, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Z-EndToEndBenchCI Tag a PR to run benchmark CI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CBMC upgrade to 6.10.0 failed CBMC upgrade to 6.9.0 failed

3 participants