Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICE region_obligations not empty #103573

Closed
ZettaScript opened this issue Oct 26, 2022 · 4 comments · Fixed by #103586
Closed

ICE region_obligations not empty #103573

ZettaScript opened this issue Oct 26, 2022 · 4 comments · Fixed by #103586
Assignees
Labels
C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ P-medium Medium priority regression-from-stable-to-beta Performance or correctness regression from stable to beta. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@ZettaScript
Copy link

ZettaScript commented Oct 26, 2022

Code

https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=13b47c0493188f18b6953bc5760c9d77

trait TraitA {
	type TypeA;
}

trait TraitD {
	type TypeD;
}

pub trait TraitB {
	type TypeB: TraitD;

	fn f(_: &<Self::TypeB as TraitD>::TypeD);
}

pub trait TraitC<E> {
	type TypeC<'a>: TraitB;

	fn g<'a>(_: &<<Self::TypeC<'a> as TraitB>::TypeB as TraitA>::TypeA);
}

Meta

rustc --version --verbose:

rustc 1.66.0-nightly (bed4ad65b 2022-10-25)
binary: rustc
commit-hash: bed4ad65bf7a1cef39e3d66b3670189581b3b073
commit-date: 2022-10-25
host: x86_64-unknown-linux-gnu
release: 1.66.0-nightly
LLVM version: 15.0.2

Fails on nightly 1.66.0 but not on stable 1.64.0.

Error output

thread '<unnamed>' panicked at 'region_obligations not empty: [
    RegionObligation {
        sub_region: ReFree(DefId(0:14 ~ lib[d000]::TraitC::g), BrNamed(DefId(0:17 ~ lib[d000]::TraitC::g::'_), '_)),
        sup_type: _,
        origin: RelateParamBound(
            lib.rs:18:2: 18:70 (#0),
            _,
            None,
        ),
    },
]', compiler/rustc_infer/src/infer/mod.rs:1297:13
stack backtrace:
   0:     0x7f3b66dbf850 - std::backtrace_rs::backtrace::libunwind::trace::hc24175774fcccc98
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   1:     0x7f3b66dbf850 - std::backtrace_rs::backtrace::trace_unsynchronized::hddff1d85f511dc1b
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f3b66dbf850 - std::sys_common::backtrace::_print_fmt::he96e84d8aca849f4
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x7f3b66dbf850 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h8c690aa67f9b9f0b
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7f3b66e1b7ae - core::fmt::write::h9205d5073fda8a0b
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/core/src/fmt/mod.rs:1209:17
   5:     0x7f3b66dafac5 - std::io::Write::write_fmt::h72ccddbdf2befca8
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/io/mod.rs:1682:15
   6:     0x7f3b66dbf615 - std::sys_common::backtrace::_print::h2243d2fa1c5bb008
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x7f3b66dbf615 - std::sys_common::backtrace::print::hf6a50c16875f42b0
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x7f3b66dc241f - std::panicking::default_hook::{{closure}}::h57a3846e717bd3fa
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/panicking.rs:267:22
   9:     0x7f3b66dc215a - std::panicking::default_hook::h1631ff080b8ff770
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/panicking.rs:286:9
  10:     0x7f3b66dc2c28 - std::panicking::rust_panic_with_hook::h483dc93595b087d7
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/panicking.rs:688:13
  11:     0x7f3b66dc29c7 - std::panicking::begin_panic_handler::{{closure}}::h7aec963b30e3fcb8
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/panicking.rs:579:13
  12:     0x7f3b66dbfcfc - std::sys_common::backtrace::__rust_end_short_backtrace::hb169843e253050fb
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/sys_common/backtrace.rs:137:18
  13:     0x7f3b66dc26e2 - rust_begin_unwind
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/panicking.rs:575:5
  14:     0x7f3b66e18193 - core::panicking::panic_fmt::h480607ab04f30057
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/core/src/panicking.rs:65:14
  15:     0x7f3b68109485 - <rustc_infer[8e0743cc678018cd]::infer::InferCtxt>::resolve_regions
  16:     0x7f3b6a011e2b - rustc_hir_analysis[2e9e393b1de5c568]::check::wfcheck::ty_known_to_outlive
  17:     0x7f3b68cdbc85 - rustc_hir_analysis[2e9e393b1de5c568]::check::wfcheck::check_trait
  18:     0x7f3b68cb344c - rustc_hir_analysis[2e9e393b1de5c568]::check::wfcheck::check_well_formed
  19:     0x7f3b6815e2fe - rustc_query_system[e96faf9c245748b3]::query::plumbing::get_query::<rustc_query_impl[e8c6edc993fa4034]::queries::check_well_formed, rustc_query_impl[e8c6edc993fa4034]::plumbing::QueryCtxt>
  20:     0x7f3b6940bdc9 - rustc_data_structures[5434cf185ef65262]::sync::par_for_each_in::<&[rustc_hir[9789e8fc89ac7485]::hir::ItemId], <rustc_middle[c0b7815efd07efec]::hir::ModuleItems>::par_items<rustc_hir_analysis[2e9e393b1de5c568]::check::wfcheck::check_mod_type_wf::{closure#0}>::{closure#0}>
  21:     0x7f3b6983fbc1 - rustc_hir_analysis[2e9e393b1de5c568]::check::wfcheck::check_mod_type_wf
  22:     0x7f3b687d7aa8 - rustc_query_system[e96faf9c245748b3]::query::plumbing::try_execute_query::<rustc_query_impl[e8c6edc993fa4034]::plumbing::QueryCtxt, rustc_query_system[e96faf9c245748b3]::query::caches::DefaultCache<rustc_span[7a2d20772580c7f8]::def_id::LocalDefId, ()>>
  23:     0x7f3b69394a49 - rustc_query_system[e96faf9c245748b3]::query::plumbing::get_query::<rustc_query_impl[e8c6edc993fa4034]::queries::check_mod_type_wf, rustc_query_impl[e8c6edc993fa4034]::plumbing::QueryCtxt>
  24:     0x7f3b68462f98 - rustc_data_structures[5434cf185ef65262]::sync::par_for_each_in::<&[rustc_hir[9789e8fc89ac7485]::hir_id::OwnerId], <rustc_middle[c0b7815efd07efec]::hir::map::Map>::par_for_each_module<rustc_hir_analysis[2e9e393b1de5c568]::check_crate::{closure#5}::{closure#0}::{closure#0}>::{closure#0}>
  25:     0x7f3b68462dc3 - <rustc_session[f004b37ccc5cd57]::session::Session>::track_errors::<rustc_hir_analysis[2e9e393b1de5c568]::check_crate::{closure#5}, ()>
  26:     0x7f3b684624f1 - rustc_hir_analysis[2e9e393b1de5c568]::check_crate
  27:     0x7f3b6846219b - rustc_interface[fd3d32691052b72b]::passes::analysis
  28:     0x7f3b697496e4 - rustc_query_system[e96faf9c245748b3]::query::plumbing::try_execute_query::<rustc_query_impl[e8c6edc993fa4034]::plumbing::QueryCtxt, rustc_query_system[e96faf9c245748b3]::query::caches::DefaultCache<(), core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>>>
  29:     0x7f3b697493e7 - rustc_query_system[e96faf9c245748b3]::query::plumbing::get_query::<rustc_query_impl[e8c6edc993fa4034]::queries::analysis, rustc_query_impl[e8c6edc993fa4034]::plumbing::QueryCtxt>
  30:     0x7f3b69276f7d - <rustc_interface[fd3d32691052b72b]::passes::QueryContext>::enter::<rustc_driver[62b0704af81f9759]::run_compiler::{closure#1}::{closure#2}::{closure#3}, core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>>
  31:     0x7f3b692734df - <rustc_interface[fd3d32691052b72b]::interface::Compiler>::enter::<rustc_driver[62b0704af81f9759]::run_compiler::{closure#1}::{closure#2}, core[69220df7bf4c31ea]::result::Result<core[69220df7bf4c31ea]::option::Option<rustc_interface[fd3d32691052b72b]::queries::Linker>, rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>>
  32:     0x7f3b6926a6d2 - rustc_span[7a2d20772580c7f8]::with_source_map::<core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>, rustc_interface[fd3d32691052b72b]::interface::run_compiler<core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>, rustc_driver[62b0704af81f9759]::run_compiler::{closure#1}>::{closure#0}::{closure#1}>
  33:     0x7f3b6926a1c9 - <scoped_tls[c5a5fd0946957a01]::ScopedKey<rustc_span[7a2d20772580c7f8]::SessionGlobals>>::set::<rustc_interface[fd3d32691052b72b]::interface::run_compiler<core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>, rustc_driver[62b0704af81f9759]::run_compiler::{closure#1}>::{closure#0}, core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>>
  34:     0x7f3b692697d8 - std[e5fb0ad32021ee83]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[fd3d32691052b72b]::util::run_in_thread_pool_with_globals<rustc_interface[fd3d32691052b72b]::interface::run_compiler<core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>, rustc_driver[62b0704af81f9759]::run_compiler::{closure#1}>::{closure#0}, core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>>
  35:     0x7f3b692694fc - <<std[e5fb0ad32021ee83]::thread::Builder>::spawn_unchecked_<rustc_interface[fd3d32691052b72b]::util::run_in_thread_pool_with_globals<rustc_interface[fd3d32691052b72b]::interface::run_compiler<core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>, rustc_driver[62b0704af81f9759]::run_compiler::{closure#1}>::{closure#0}, core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[69220df7bf4c31ea]::result::Result<(), rustc_errors[f55630e1eea6f6be]::ErrorGuaranteed>>::{closure#1} as core[69220df7bf4c31ea]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  36:     0x7f3b6ac35e33 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hab9c0585205bcace
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/alloc/src/boxed.rs:1987:9
  37:     0x7f3b6ac35e33 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hc1b376671ff7f5ba
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/alloc/src/boxed.rs:1987:9
  38:     0x7f3b6ac35e33 - std::sys::unix::thread::Thread::new::thread_start::h1e626d066d8b584f
                               at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/sys/unix/thread.rs:108:17
  39:     0x7f3b66b118fd - <unknown>
  40:     0x7f3b66b93a60 - <unknown>
  41:                0x0 - <unknown>
Backtrace

thread '<unnamed>' panicked at 'region_obligations not empty: [
    RegionObligation {
        sub_region: ReFree(DefId(0:14 ~ lib[d000]::TraitC::g), BrNamed(DefId(0:17 ~ lib[d000]::TraitC::g::'_), '_)),
        sup_type: _,
        origin: RelateParamBound(
            lib.rs:18:2: 18:70 (#0),
            _,
            None,
        ),
    },
]', compiler/rustc_infer/src/infer/mod.rs:1297:13
stack backtrace:
   0: rust_begin_unwind
             at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/std/src/panicking.rs:575:5
   1: core::panicking::panic_fmt
             at /rustc/bed4ad65bf7a1cef39e3d66b3670189581b3b073/library/core/src/panicking.rs:65:14
   2: <rustc_infer::infer::InferCtxt>::resolve_regions
   3: rustc_hir_analysis::check::wfcheck::ty_known_to_outlive
   4: rustc_hir_analysis::check::wfcheck::check_trait
   5: rustc_hir_analysis::check::wfcheck::check_well_formed
   6: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::check_well_formed, rustc_query_impl::plumbing::QueryCtxt>
   7: rustc_data_structures::sync::par_for_each_in::<&[rustc_hir::hir::ItemId], <rustc_middle::hir::ModuleItems>::par_items<rustc_hir_analysis::check::wfcheck::check_mod_type_wf::{closure#0}>::{closure#0}>
   8: rustc_hir_analysis::check::wfcheck::check_mod_type_wf
   9: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<rustc_span::def_id::LocalDefId, ()>>
  10: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::check_mod_type_wf, rustc_query_impl::plumbing::QueryCtxt>
  11: rustc_data_structures::sync::par_for_each_in::<&[rustc_hir::hir_id::OwnerId], <rustc_middle::hir::map::Map>::par_for_each_module<rustc_hir_analysis::check_crate::{closure#5}::{closure#0}::{closure#0}>::{closure#0}>
  12: <rustc_session::session::Session>::track_errors::<rustc_hir_analysis::check_crate::{closure#5}, ()>
  13: rustc_hir_analysis::check_crate
  14: rustc_interface::passes::analysis
  15: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<(), core::result::Result<(), rustc_errors::ErrorGuaranteed>>>
  16: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::analysis, rustc_query_impl::plumbing::QueryCtxt>
  17: <rustc_interface::passes::QueryContext>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}::{closure#3}, core::result::Result<(), rustc_errors::ErrorGuaranteed>>
  18: <rustc_interface::interface::Compiler>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_errors::ErrorGuaranteed>>
  19: rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_driver::run_compiler::{closure#1}>::{closure#0}::{closure#1}>
  20: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorGuaranteed>>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Edited: minified the code

@ZettaScript ZettaScript added C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Oct 26, 2022
@lupd
Copy link
Contributor

lupd commented Oct 26, 2022

Also ICEs on beta

@jackh726
Copy link
Member

stable error -> beta ICE

I tried moving things around so lifetime is on TraitB, but that's fine. This also requires the lifetime 'a.

@jackh726 jackh726 added the regression-from-stable-to-beta Performance or correctness regression from stable to beta. label Oct 26, 2022
@rustbot rustbot added the I-prioritize Issue: Indicates that prioritization has been requested for this issue. label Oct 26, 2022
@jackh726
Copy link
Member

jackh726 commented Oct 26, 2022

Going to preemptively assign P-medium, since this code isn't correct anyways. I think this has something to do with our error recovery here, since this valid code is fine, which only changes the trait: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=e0d39146c6786ef56d9cb8c81ac5946b

@jackh726 jackh726 added P-medium Medium priority and removed I-prioritize Issue: Indicates that prioritization has been requested for this issue. labels Oct 26, 2022
@compiler-errors
Copy link
Member

I got a fix here.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this issue Oct 27, 2022
…ckh726

Process registered region obligation in `resolve_regions_with_wf_tys`

Fixes rust-lang#103573
@bors bors closed this as completed in bf53e71 Oct 27, 2022
@compiler-errors compiler-errors self-assigned this Mar 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ P-medium Medium priority regression-from-stable-to-beta Performance or correctness regression from stable to beta. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants