- 
                Notifications
    You must be signed in to change notification settings 
- Fork 13.9k
Closed
Labels
A-incr-compArea: Incremental compilationArea: Incremental compilationC-bugCategory: This is a bug.Category: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.glacierICE tracked in rust-lang/glacier.ICE tracked in rust-lang/glacier.regression-from-stable-to-betaPerformance or correctness regression from stable to beta.Performance or correctness regression from stable to beta.
Description
When trying to compile this incorrect code using cargo, nightly rustc panics.
When compiling using rustc directly without further arguments (or using the same command cargo calls with -C incremental=... removed), it outputs an error message instead.
Code
trait XTrait<A> {}
struct X<T: XTrait<A>, A> (T, A);
trait Y<'t> {
    type M;
    type N: 't;
}
impl<'t, T: XTrait<A>, A> Y<'t> for X<T, A> {
    type M = X<T, Self::N>;
    type N = &'t ();
}
fn main() {
    println!("Hello, world!");
}I also noticed that changing type N = &'t (); to type N = (); will also result in an error message instead of a panic.
Meta
rustc --version --verbose:
rustc 1.56.0-nightly (2faabf579 2021-07-27)
binary: rustc
commit-hash: 2faabf579323f5252329264cc53ba9ff803429a3
commit-date: 2021-07-27
host: x86_64-unknown-linux-gnu
release: 1.56.0-nightly
LLVM version: 12.0.1
Error output
cargo +nightly --verbose run
   Compiling crash v0.1.0 (/home/dinky/code/rust/tmp/crash)
     Running `rustc --crate-name crash --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=d474572ba93d44de -C extra-filename=-d474572ba93d44de --out-dir /home/dinky/code/rust/tmp/crash/target/debug/deps -C incremental=/home/dinky/code/rust/tmp/crash/target/debug/incremental -L dependency=/home/dinky/code/rust/tmp/crash/target/debug/deps`
error: internal compiler error: compiler/rustc_middle/src/ich/impls_ty.rs:94:17: StableHasher: unexpected region '_#0r
thread 'rustc' panicked at 'Box<dyn Any>', compiler/rustc_errors/src/lib.rs:1034:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: rustc 1.56.0-nightly (2faabf579 2021-07-27) running on x86_64-unknown-linux-gnu
note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental --crate-type bin
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
#0 [check_impl_item_well_formed] checking that `<impl at src/main.rs:10:1: 13:2>::M` is well-formed
#1 [analysis] running analysis passes on this crate
end of query stack
error: could not compile `crash`
Caused by:
  process didn't exit successfully: `rustc --crate-name crash --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=d474572ba93d44de -C extra-filename=-d474572ba93d44de --out-dir /home/dinky/code/rust/tmp/crash/target/debug/deps -C incremental=/home/dinky/code/rust/tmp/crash/target/debug/incremental -L dependency=/home/dinky/code/rust/tmp/crash/target/debug/deps` (exit status: 101)
Backtrace
RUST_BACKTRACE=1 cargo +nightly --verbose run
   Compiling crash v0.1.0 (/home/dinky/code/rust/tmp/crash)
     Running `rustc --crate-name crash --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=d474572ba93d44de -C extra-filename=-d474572ba93d44de --out-dir /home/dinky/code/rust/tmp/crash/target/debug/deps -C incremental=/home/dinky/code/rust/tmp/crash/target/debug/incremental -L dependency=/home/dinky/code/rust/tmp/crash/target/debug/deps`
error: internal compiler error: compiler/rustc_middle/src/ich/impls_ty.rs:94:17: StableHasher: unexpected region '_#0r
thread 'rustc' panicked at 'Box<dyn Any>', compiler/rustc_errors/src/lib.rs:1034:9
stack backtrace:
   0: std::panicking::begin_panic
   1: std::panic::panic_any
   2: rustc_errors::HandlerInner::bug
   3: rustc_errors::Handler::bug
   4: rustc_middle::ty::context::tls::with_opt
   5: rustc_middle::util::bug::opt_span_bug_fmt
   6: rustc_middle::util::bug::bug_fmt
   7: rustc_middle::ich::impls_ty::<impl rustc_data_structures::stable_hasher::HashStable<rustc_middle::ich::hcx::StableHashingContext> for rustc_middle::ty::sty::RegionKind>::hash_stable
   8: <rustc_middle::ty::TyS as rustc_data_structures::stable_hasher::HashStable<rustc_middle::ich::hcx::StableHashingContext>>::hash_stable
   9: std::thread::local::LocalKey<T>::with
  10: rustc_middle::ich::impls_ty::<impl rustc_data_structures::stable_hasher::HashStable<rustc_middle::ich::hcx::StableHashingContext> for rustc_middle::ty::sty::Binder<T>>::hash_stable
  11: rustc_query_system::dep_graph::dep_node::DepNode<K>::construct
  12: rustc_query_system::query::plumbing::get_query_impl
  13: rustc_query_system::query::plumbing::get_query
  14: <rustc_infer::infer::InferCtxt as rustc_trait_selection::traits::error_reporting::InferCtxtExt>::report_selection_error
  15: <rustc_infer::infer::InferCtxt as rustc_trait_selection::traits::error_reporting::InferCtxtPrivExt>::report_fulfillment_error
  16: <rustc_infer::infer::InferCtxt as rustc_trait_selection::traits::error_reporting::InferCtxtExt>::report_fulfillment_errors
  17: rustc_typeck::check::fn_ctxt::_impl::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::select_all_obligations_or_error
  18: rustc_infer::infer::InferCtxtBuilder::enter
  19: rustc_typeck::check::wfcheck::check_associated_item
  20: rustc_typeck::check::check::check_impl_item_well_formed
  21: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
  22: rustc_data_structures::stack::ensure_sufficient_stack
  23: rustc_query_system::query::plumbing::force_query_with_job
  24: rustc_query_system::query::plumbing::get_query_impl
  25: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::check_impl_item_well_formed
  26: <rustc_typeck::check::wfcheck::CheckTypeWellFormedVisitor as rustc_hir::intravisit::Visitor>::visit_impl_item
  27: std::panicking::try
  28: rustc_data_structures::sync::par_for_each_in
  29: rustc_session::session::Session::track_errors
  30: rustc_typeck::check_crate
  31: rustc_interface::passes::analysis
  32: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps
  33: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
  34: rustc_query_system::dep_graph::graph::DepGraph<K>::with_eval_always_task
  35: rustc_data_structures::stack::ensure_sufficient_stack
  36: rustc_query_system::query::plumbing::force_query_with_job
  37: rustc_query_system::query::plumbing::get_query_impl
  38: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::analysis
  39: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
  40: rustc_span::with_source_map
  41: rustc_interface::interface::create_compiler_and_run
  42: scoped_tls::ScopedKey<T>::set
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: rustc 1.56.0-nightly (2faabf579 2021-07-27) running on x86_64-unknown-linux-gnu
note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental --crate-type bin
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
#0 [check_impl_item_well_formed] checking that `<impl at src/main.rs:10:1: 13:2>::M` is well-formed
#1 [analysis] running analysis passes on this crate
end of query stack
error: could not compile `crash`
Caused by:
  process didn't exit successfully: `rustc --crate-name crash --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=d474572ba93d44de -C extra-filename=-d474572ba93d44de --out-dir /home/dinky/code/rust/tmp/crash/target/debug/deps -C incremental=/home/dinky/code/rust/tmp/crash/target/debug/incremental -L dependency=/home/dinky/code/rust/tmp/crash/target/debug/deps` (exit status: 101)
Metadata
Metadata
Assignees
Labels
A-incr-compArea: Incremental compilationArea: Incremental compilationC-bugCategory: This is a bug.Category: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.glacierICE tracked in rust-lang/glacier.ICE tracked in rust-lang/glacier.regression-from-stable-to-betaPerformance or correctness regression from stable to beta.Performance or correctness regression from stable to beta.