Skip to content

ci: pin the bare-metal nightly lane past a clippy ICE - #152

Merged
JustinKovacich merged 1 commit into
mainfrom
ci/pin-bare-metal-nightly
Aug 24, 2026
Merged

ci: pin the bare-metal nightly lane past a clippy ICE#152
JustinKovacich merged 1 commit into
mainfrom
ci/pin-bare-metal-nightly

Conversation

@JustinKovacich

Copy link
Copy Markdown
Contributor

Bare-metal runtime (nightly) has been red on main since 2026-08-22 with no code change behind it.

What breaks

Every nightly from nightly-2026-08-22 onward ICEs the job:

error: internal compiler error: unexpected rigid alias in layout_of after normalization:
  Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:2189 ~ simple_someip[64f0]::bare_metal_tasks::run_someip::{opaque#0}) }, ... })

It is the toolchain, not us

  • Plain cargo +nightly check -p simple-someip --no-default-features --features bare-metal-runtime,client is clean on the same nightly — only cargo clippy fails.
  • Reproduces on unmodified main; re-running the job on main's last green commit (6369f1c, green 08-21) fails today.
  • Bisected locally: nightly-2026-08-21 (rustc 8925ea358) is good, nightly-2026-08-22 (rustc c656540d6) is the first bad one, and -23 / -24 stay bad.

The trigger is clippy::pedantic enabling large_futures, which switches to Codegen mode to read a coroutine layout while the opaque aliases are still marked rigid from type checking. Reported upstream several times over (rust-lang/rust#161542, rust-lang/rust-clippy#17622, #17617) and fixed by rust-lang/rust-clippy#17601, merged 2026-08-23 — but that fix has to ride a clippy subtree sync into rustc before it reaches a nightly, so the lane stays red until then.

Why pin rather than -A clippy::large_futures

Pinning keeps the lint running. It is worth more on this lane than anywhere else in the tree: a fat future on the bare-metal runtime is a static pool sized to hold it. Allowing the lint would silence it everywhere the runtime is linted, for however long the sync takes.

Verification

All four steps of the job pass locally on nightly-2026-08-21:

Step Result
clippy … bare-metal-runtime,client pass
clippy … bare-metal-runtime,server pass
build -Z build-std=core --target thumbv7em-none-eabihf (client, server) pass
cargo doc under RUSTDOCFLAGS=-D warnings pass

The other nightly job (build-std core gate) runs no clippy, is unaffected, and is left floating deliberately.

Unpinning

The comment on the step says to restore @nightly and delete it once a nightly carries the clippy fix. Worth checking back in a week or so.

@JustinKovacich JustinKovacich added the simple_someip Issue related to the simple_someip crate label Aug 24, 2026
@JustinKovacich JustinKovacich self-assigned this Aug 24, 2026
@codecov-commenter

codecov-commenter commented Aug 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

Impacted file tree graph

@@           Coverage Diff           @@
##             main     #152   +/-   ##
=======================================
  Coverage   81.30%   81.30%           
=======================================
  Files          47       47           
  Lines       15514    15514           
=======================================
  Hits        12613    12613           
  Misses       2901     2901           

@JustinKovacich
JustinKovacich marked this pull request as ready for review August 24, 2026 14:43
@JustinKovacich
JustinKovacich added this pull request to the merge queue Aug 24, 2026
@zheylmun
zheylmun removed this pull request from the merge queue due to a manual request Aug 24, 2026
Every nightly from 2026-08-22 onward ICEs on this job with `unexpected rigid
alias in layout_of after normalization`, on the opaque returned by
`bare_metal_tasks::run_someip`. `main` has been red since 08-22 with no code
change.

The trigger is `clippy::pedantic` enabling `large_futures`, which switches to
Codegen mode to read a coroutine layout while the opaque aliases are still
marked rigid from type checking. Confirmed as a toolchain bug, not ours: plain
`cargo check` on the same nightly is clean, only `cargo clippy` fails, and it
reproduces on unmodified `main`. Bisected to the nightly-2026-08-21 →
nightly-2026-08-22 window.

rust-lang/rust-clippy#17601 fixed it on 2026-08-23, but the fix has to ride a
clippy subtree sync into rustc before any nightly carries it, so the lane
stays red until then.

Pinning to the last known-good nightly rather than allowing the lint keeps
`large_futures` running — it is worth more here than anywhere else in the tree,
since a fat future on the bare-metal runtime is a static pool sized to hold it.
All four steps of the job pass on the pinned toolchain.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@zheylmun
zheylmun force-pushed the ci/pin-bare-metal-nightly branch from 623599d to 4c05286 Compare August 24, 2026 14:51
@JustinKovacich
JustinKovacich added this pull request to the merge queue Aug 24, 2026
Merged via the queue into main with commit 2c91f83 Aug 24, 2026
8 checks passed
@JustinKovacich
JustinKovacich deleted the ci/pin-bare-metal-nightly branch August 24, 2026 14:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

simple_someip Issue related to the simple_someip crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants