rust-lang / rust-lang/rust

[ICE]: Crash with clippy (looking up a lint level for a module)

Open
#157,495 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

C-bug I-ICE needs-triage T-compiler
Dominant language
Rust
Stars
119k
Forks
16.1k
PR merge metrics
PR metrics pending

Description

Code

See mathstuf/devtodo@adbe499809a48da01f49552857d2ee8f3ea0212f (tagged as rust-crash). Its parent commit is OK. Have not tried to minimize as it might be a duplicate given that nightly is OK.

Meta

rustc --version --verbose:

rustc 1.95.0 (59807616e 2026-04-14)
binary: rustc
commit-hash: 59807616e1fa2540724bfbac14d7976d7e4a3860
commit-date: 2026-04-14
host: x86_64-unknown-linux-gnu
release: 1.95.0
LLVM version: 22.1.2

Does not happen with cargo 1.97.0-nightly (eb94155a9 2026-04-09) (though the incremental cache is almost certainly not shared).

Error output
error: internal compiler error: encountered incremental compilation error with shallow_lint_levels_on(devtodo[10cf]::account::prelude)
  |
  = 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
  = note: an ideal reproduction consists of the code before and some patch that then triggers the bug when applied and compiled again
  = note: as a workaround, you can run `cargo clean -p devtodo` or `cargo clean` to allow your project to compile


thread 'rustc' (1869253) panicked at /rustc-dev/59807616e1fa2540724bfbac14d7976d7e4a3860/compiler/rustc_middle/src/verify_ich.rs:80:9:
Found unstable fingerprints for shallow_lint_levels_on(devtodo[10cf]::account::prelude): ShallowLintLevelMap { expectations: [(Stable { hir_id: HirId(DefId(0:27 ~ devtodo[10cf]::account::prelude).0), attr_index: 1, lint_index: Some(0) }, LintExpectation { reason: Some("Construct a prelude module"), emission_span: src/account/prelude.rs:7:11: 7:26 (#0), is_unfulfilled_lint_expectations: false, lint_tool: Some("clippy") })], specs: {0: {LintId { lint: Lint { name: "clippy::PUB_USE", default_level: Allow, desc: "restricts the usage of `pub use`", edition_lint_opts: None, report_in_external_macro: true, future_incompatible: None, is_externally_loaded: true, feature_gate: None, crate_level_only: false, eval_always: false } }: LevelAndSource { level: Expect, lint_id: Some(Stable { hir_id: HirId(DefId(0:27 ~ devtodo[10cf]::account::prelude).0), attr_index: 1, lint_index: Some(0) }), src: Node { name: "clippy::pub_use", span: src/account/prelude.rs:7:11: 7:26 (#0), reason: Some("Construct a prelude module") } }}} }
stack backtrace:
   0:     0x7f520c39314b - <<std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt
   1:     0x7f520ca1f408 - core[c1f1a4ba060b9bfa]::fmt::write
   2:     0x7f520df683b6 - <std[e28293b1aa0f68bd]::sys::stdio::unix::Stderr as std[e28293b1aa0f68bd]::io::Write>::write_fmt
   3:     0x7f520c369238 - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0}
   4:     0x7f520c3865b3 - std[e28293b1aa0f68bd]::panicking::default_hook
   5:     0x7f520b35cc30 - std[e28293b1aa0f68bd]::panicking::update_hook::<alloc[fdfd2bd8633a6659]::boxed::Box<rustc_driver_impl[e4ca9dd5dd6cf2a8]::install_ice_hook::{closure#1}>>::{closure#0}
   6:     0x7f520c386892 - std[e28293b1aa0f68bd]::panicking::panic_with_hook
   7:     0x7f520c3692f8 - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}
   8:     0x7f520c360029 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace::<std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}, !>
   9:     0x7f520c36ad5d - __rustc[b7974e8690430dd9]::rust_begin_unwind
  10:     0x7f52090de82c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt
  11:     0x7f520b9987d8 - rustc_middle[9956b31dc9b62104]::verify_ich::incremental_verify_ich_failed
  12:     0x7f520cb2d9d5 - rustc_query_impl[b21371cac9e22a84]::execution::try_execute_query::<rustc_data_structures[2c167692117eb14d]::vec_cache::VecCache<rustc_hir_id[8623c9f51ef46e37]::OwnerId, rustc_middle[9956b31dc9b62104]::query::erase::ErasedData<[u8; 8usize]>, rustc_middle[9956b31dc9b62104]::dep_graph::graph::DepNodeIndex>, true>
  13:     0x7f520cb2c672 - rustc_query_impl[b21371cac9e22a84]::query_impl::shallow_lint_levels_on::execute_query_incr::__rust_end_short_backtrace
  14:     0x7f520cb28e71 - rustc_lint[754bcbf59f34f28d]::levels::lints_that_dont_need_to_run
  15:     0x7f520dc43f5c - rustc_query_impl[b21371cac9e22a84]::query_impl::lints_that_dont_need_to_run::invoke_provider_fn::__rust_begin_short_backtrace
  16:     0x7f520dc46fdd - rustc_query_impl[b21371cac9e22a84]::execution::try_execute_query::<rustc_middle[9956b31dc9b62104]::query::caches::SingleCache<rustc_middle[9956b31dc9b62104]::query::erase::ErasedData<[u8; 8usize]>>, true>
  17:     0x7f520dc46b15 - rustc_query_impl[b21371cac9e22a84]::plumbing::force_from_dep_node_inner::<rustc_middle[9956b31dc9b62104]::query::caches::SingleCache<rustc_middle[9956b31dc9b62104]::query::erase::ErasedData<[u8; 8usize]>>>
  18:     0x7f520e0e93f9 - <rustc_query_impl[b21371cac9e22a84]::dep_kind_vtables::make_dep_kind_vtable_for_query<rustc_query_impl[b21371cac9e22a84]::query_impl::lints_that_dont_need_to_run::VTableGetter>::{closure#0} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<(rustc_middle[9956b31dc9b62104]::ty::context::TyCtxt, rustc_middle[9956b31dc9b62104]::dep_graph::dep_node::DepNode, rustc_middle[9956b31dc9b62104]::dep_graph::serialized::SerializedDepNodeIndex)>>::call_once
  19:     0x7f520cb40969 - <rustc_middle[9956b31dc9b62104]::dep_graph::graph::DepGraphData>::try_mark_previous_green
  20:     0x7f520cb408ce - <rustc_middle[9956b31dc9b62104]::dep_graph::graph::DepGraphData>::try_mark_previous_green
  21:     0x7f520cb408ce - <rustc_middle[9956b31dc9b62104]::dep_graph::graph::DepGraphData>::try_mark_previous_green
  22:     0x7f520cb408ce - <rustc_middle[9956b31dc9b62104]::dep_graph::graph::DepGraphData>::try_mark_previous_green
  23:     0x7f520cb408ce - <rustc_middle[9956b31dc9b62104]::dep_graph::graph::DepGraphData>::try_mark_previous_green
  24:     0x7f520cb408ce - <rustc_middle[9956b31dc9b62104]::dep_graph::graph::DepGraphData>::try_mark_previous_green
  25:     0x7f520d85493f - <rustc_middle[9956b31dc9b62104]::dep_graph::graph::DepGraph>::try_mark_green
  26:     0x7f520d6ea352 - rustc_query_impl[b21371cac9e22a84]::execution::check_if_ensure_can_skip_execution::<rustc_middle[9956b31dc9b62104]::query::caches::DefaultCache<rustc_middle[9956b31dc9b62104]::ty::PseudoCanonicalInput<rustc_middle[9956b31dc9b62104]::mir::interpret::GlobalId>, rustc_middle[9956b31dc9b62104]::query::erase::ErasedData<[u8; 24usize]>>>
  27:     0x7f520d6ea6a0 - rustc_query_impl[b21371cac9e22a84]::query_impl::eval_to_const_value_raw::execute_query_incr::__rust_end_short_backtrace
  28:     0x7f520cf68f75 - <rustc_middle[9956b31dc9b62104]::ty::context::TyCtxt>::par_hir_body_owners::<rustc_hir_analysis[1442f5e3e8e9992f]::check_crate::{closure#2}>::{closure#0}
  29:     0x7f520cf685a9 - rustc_hir_analysis[1442f5e3e8e9992f]::check_crate
  30:     0x7f520cb367d3 - rustc_interface[c8170c4b7b680ee8]::passes::analysis
  31:     0x7f520dfec447 - rustc_query_impl[b21371cac9e22a84]::execution::try_execute_query::<rustc_middle[9956b31dc9b62104]::query::caches::SingleCache<rustc_middle[9956b31dc9b62104]::query::erase::ErasedData<[u8; 0usize]>>, true>
  32:     0x7f520dfebdb4 - rustc_query_impl[b21371cac9e22a84]::query_impl::analysis::execute_query_incr::__rust_end_short_backtrace
  33:     0x7f520dc5632d - rustc_interface[c8170c4b7b680ee8]::interface::run_compiler::<(), rustc_driver_impl[e4ca9dd5dd6cf2a8]::run_compiler::{closure#0}>::{closure#1}
  34:     0x7f520dc2663e - std[e28293b1aa0f68bd]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[c8170c4b7b680ee8]::util::run_in_thread_with_globals<rustc_interface[c8170c4b7b680ee8]::util::run_in_thread_pool_with_globals<rustc_interface[c8170c4b7b680ee8]::interface::run_compiler<(), rustc_driver_impl[e4ca9dd5dd6cf2a8]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  35:     0x7f520dc26ca0 - <std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<rustc_interface[c8170c4b7b680ee8]::util::run_in_thread_with_globals<rustc_interface[c8170c4b7b680ee8]::util::run_in_thread_pool_with_globals<rustc_interface[c8170c4b7b680ee8]::interface::run_compiler<(), rustc_driver_impl[e4ca9dd5dd6cf2a8]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  36:     0x7f520dc27b2c - <std[e28293b1aa0f68bd]::sys::thread::unix::Thread>::new::thread_start
  37:     0x7f5207644d19 - start_thread
  38:     0x7f52076c864c - __clone3
  39:                0x0 - <unknown>

error: the compiler unexpectedly panicked. This is a bug

note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new?template=ice.yml

note: rustc 1.95.0 (59807616e 2026-04-14) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED]

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [shallow_lint_levels_on] looking up lint levels for `account::prelude`
#1 [lints_that_dont_need_to_run] Computing all lints that are explicitly enabled or with a default level greater than Allow
... and 1 other queries... use `env RUST_BACKTRACE=1` to see the full query stack
note: Clippy version: clippy 0.1.95 (59807616e1 2026-04-14)

there was a panic while trying to force a dep node
try_mark_green dep node stack:
#0 mir_promoted(devtodo[10cf]::account::github::client::BACKOFF_START)
#1 mir_borrowck(devtodo[10cf]::account::github::client::BACKOFF_START)
#2 mir_drops_elaborated_and_const_checked(devtodo[10cf]::account::github::client::BACKOFF_START)
#3 mir_for_ctfe(devtodo[10cf]::account::github::client::BACKOFF_START)
#4 eval_to_allocation_raw(a7bfd86a5df2ade4-c300e6a36a4c697c)
#5 eval_to_const_value_raw(a7bfd86a5df2ade4-c300e6a36a4c697c)
end of try_mark_green dep node stack
error: could not compile `devtodo` (bin "devtodo" test) due to 1 previous error
Backtrace

error: internal compiler error: encountered incremental compilation error with shallow_lint_levels_on(devtodo[10cf]::account::prelude)
  |
  = 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
  = note: an ideal reproduction consists of the code before and some patch that then triggers the bug when applied and compiled again
  = note: as a workaround, you can run `cargo clean -p devtodo` or `cargo clean` to allow your project to compile


thread 'rustc' (15479) panicked at /rustc-dev/59807616e1fa2540724bfbac14d7976d7e4a3860/compiler/rustc_middle/src/verify_ich.rs:80:9:
Found unstable fingerprints for shallow_lint_levels_on(devtodo[10cf]::account::prelude): ShallowLintLevelMap { expectations: [(Stable { hir_id: HirId(DefId(0:27 ~ devtodo[10cf]::account::prelude).0), attr_index: 1, lint_index: Some(0) }, LintExpectation { reason: Some("Construct a prelude module"), emission_span: src/account/prelude.rs:7:11: 7:26 (#0), is_unfulfilled_lint_expectations: false, lint_tool: Some("clippy") })], specs: {0: {LintId { lint: Lint { name: "clippy::PUB_USE", default_level: Allow, desc: "restricts the usage of `pub use`", edition_lint_opts: None, report_in_external_macro: true, future_incompatible: None, is_externally_loaded: true, feature_gate: None, crate_level_only: false, eval_always: false } }: LevelAndSource { level: Expect, lint_id: Some(Stable { hir_id: HirId(DefId(0:27 ~ devtodo[10cf]::account::prelude).0), attr_index: 1, lint_index: Some(0) }), src: Node { name: "clippy::pub_use", span: src/account/prelude.rs:7:11: 7:26 (#0), reason: Some("Construct a prelude module") } }}} }
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: rustc_middle::verify_ich::incremental_verify_ich_failed
   3: rustc_query_impl::execution::try_execute_query::<rustc_data_structures::vec_cache::VecCache<rustc_hir_id::OwnerId, rustc_middle::query::erase::ErasedData<[u8; 8]>, rustc_middle::dep_graph::graph::DepNodeIndex>, true>
   4: rustc_lint::levels::lints_that_dont_need_to_run
      [... omitted 11 frames ...]
   5: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_hir_analysis::check_crate::{closure#2}>::{closure#0}
   6: rustc_hir_analysis::check_crate
   7: rustc_interface::passes::analysis
   8: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, true>
   9: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: the compiler unexpectedly panicked. This is a bug

note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new?template=ice.yml

note: rustc 1.95.0 (59807616e 2026-04-14) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED]

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [shallow_lint_levels_on] looking up lint levels for `account::prelude`
#1 [lints_that_dont_need_to_run] Computing all lints that are explicitly enabled or with a default level greater than Allow
#2 [analysis] running analysis passes on crate `devtodo`
end of query stack
note: Clippy version: clippy 0.1.95 (59807616e1 2026-04-14)

there was a panic while trying to force a dep node
try_mark_green dep node stack:
#0 mir_promoted(devtodo[10cf]::account::github::client::BACKOFF_START)
#1 mir_borrowck(devtodo[10cf]::account::github::client::BACKOFF_START)
#2 mir_drops_elaborated_and_const_checked(devtodo[10cf]::account::github::client::BACKOFF_START)
#3 mir_for_ctfe(devtodo[10cf]::account::github::client::BACKOFF_START)
#4 eval_to_allocation_raw(a7bfd86a5df2ade4-c300e6a36a4c697c)
#5 eval_to_const_value_raw(a7bfd86a5df2ade4-c300e6a36a4c697c)
end of try_mark_green dep node stack
error: could not compile `devtodo` (bin "devtodo" test) due to 1 previous error

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by checking mathstuf/devtodo commit adbe499809a48da01f49552857d2ee8f3ea0212 with rustc 1.95.0 and incremental compilation, using src/account/prelude.rs and the reported clippy::PUB_USE expectation. Then inspect rustc_middle/src/verify_ich.rs and the shallow_lint_levels_on query. Done means a minimized reproduction and a confirmed resolution of the incremental compilation ICE.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.