rust-lang / rust-lang/rust-clippy
ICE: unstable fingerprints for evaluate_obligation during incremental compilation
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 13.5k
- Forks
- 2.2k
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 32
Description
Summary
Clippy panics with an internal compiler error due to unstable fingerprints in incremental compilation when checking code that uses futures_util stream combinators (filter_map + buffer_unordered + collect) with async closures.
Version
rustc 1.95.0 (59807616e 2026-04-14)
clippy 0.1.95 (59807616e1 2026-04-14)
x86_64-unknown-linux-gnu
Error output
error: internal compiler error: encountered incremental compilation error with evaluate_obligation(756fcc40b4fb2203-2f9389f8417c9990)
|
= note: please follow the instructions below to create a bug report with the provided information
= note: for incremental compilation bugs, having a reproduction is vital
thread 'rustc' panicked at compiler/rustc_middle/src/verify_ich.rs:80:9:
Found unstable fingerprints for evaluate_obligation(756fcc40b4fb2203-2f9389f8417c9990): Ok(EvaluatedToOk)
Query stack during panic
#0 [evaluate_obligation] evaluating trait selection obligation `{async closure@src/fs/watcher.rs:712:17: 712:34}: futures_util::fns::FnMut1<core::option::Option<(String, PathBuf, u64, SystemTime)>>`
#1 [type_op_ascribe_user_type] evaluating `type_op_ascribe_user_type` (StreamExt::collect with FilterMap<BufferUnordered<Iter<Map<IntoIter<String>, CoroutineClosure>>>, CoroutineClosure>)
... and 13 other queries
Dep node stack (try_mark_green)
#0 check_match(backend_rs::create_app_from_endpoint)
#1 mir_built(backend_rs::create_app_from_endpoint)
#2 has_ffi_unwind_calls(backend_rs::create_app_from_endpoint)
#3 mir_promoted(backend_rs::create_app_from_endpoint)
#4 mir_borrowck(backend_rs::create_app_from_endpoint)
Reproduction notes
- Occurs during incremental compilation only. A clean build (
cargo clean -p backend-rs) succeeds. - The code uses
futures_utilstream combinators:buffer_unordered→filter_map(with an async closure) →collect::<Vec<_>>(). - Compiler flags:
--crate-type lib -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED] - Triggered by
cargo clippy -- -D warningson a subsequent build after source changes.
Workaround
cargo clean -p backend-rs clears the corrupted incremental cache and allows compilation to succeed.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at compiler/rustc_middle/src/verify_ich.rs:80 and trace the evaluate_obligation query described in the query and dep-node stacks. Reproduce with cargo clippy -- -D warnings after a source change and incremental rebuild, then verify that the futures_util stream-combinator case no longer produces an unstable-fingerprint ICE without requiring cargo clean.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- build-system, compilers, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100