Skip to content

ICE: self.resolver.get_partial_res(*id) == None #138415

New issue

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

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

Already on GitHub? # to your account

Closed
matthiaskrgr opened this issue Mar 12, 2025 · 1 comment · Fixed by #138854
Closed

ICE: self.resolver.get_partial_res(*id) == None #138415

matthiaskrgr opened this issue Mar 12, 2025 · 1 comment · Fixed by #138854
Assignees
Labels
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.

Comments

@matthiaskrgr
Copy link
Member

auto-reduced (treereduce-rust):

extern "C" {
    fn r() {
        impl Terminator {
            #[define_opaque(Successors, Tait)]
            fn successors(&self) -> Successors<'_> {
                f = g;
            }
        }
    }
}

original:

extern {
    fn r() {
        impl Terminator {
    #[define_opaque(Successors, Tait)]
    fn successors(&self, mut f: for<'x> fn(&'x ()) -> <&'x A as B>::C) -> Successors<'_> {
        f = g;
        //~^ ERROR mismatched types
    }
}
    }
}

pub fn main() {}

Version information

rustc 1.87.0-nightly (0998d4095 2025-03-12)
binary: rustc
commit-hash: 0998d4095b0f11061f78a3f9c77a87838a4c1cb7
commit-date: 2025-03-12
host: x86_64-unknown-linux-gnu
release: 1.87.0-nightly
LLVM version: 20.1.0

Possibly related line of code:

assert_eq!(self.define_opaque, None);
assert!(hir_id.is_owner());
let Some(define_opaque) = define_opaque.as_ref() else {
return;
};
let define_opaque = define_opaque.iter().filter_map(|(id, path)| {
let res = self.resolver.get_partial_res(*id).unwrap();
let Some(did) = res.expect_full_res().opt_def_id() else {
self.dcx().span_delayed_bug(path.span, "should have errored in resolve");
return None;
};
let Some(did) = did.as_local() else {
self.dcx().span_err(

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc

Program output

error[E0658]: use of unstable library feature `type_alias_impl_trait`: `type_alias_impl_trait` has open design concerns
 --> /tmp/icemaker_global_tempdir.UEyFCyjtM1oB/rustc_testrunner_tmpdir_reporting.AGp9gpnRTRbF/mvce.rs:4:15
  |
4 |             #[define_opaque(Successors, Tait)]
  |               ^^^^^^^^^^^^^
  |
  = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
  = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
  = note: this compiler was built on 2025-03-12; consider upgrading it if it is out of date

error: incorrect function inside `extern` block
 --> /tmp/icemaker_global_tempdir.UEyFCyjtM1oB/rustc_testrunner_tmpdir_reporting.AGp9gpnRTRbF/mvce.rs:2:8
  |
1 |   extern "C" {
  |   ---------- `extern` blocks define existing foreign functions and functions inside of them cannot have a body
2 |       fn r() {
  |  ________^___-
  | |        |
  | |        cannot have a body
3 | |         impl Terminator {
4 | |             #[define_opaque(Successors, Tait)]
5 | |             fn successors(&self) -> Successors<'_> {
... |
9 | |     }
  | |_____- help: remove the invalid body: `;`
  |
  = help: you might have meant to write a function accessible through FFI, which can be done by writing `extern fn` outside of the `extern` block
  = note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html


thread 'rustc' panicked at compiler/rustc_ast_lowering/src/item.rs:1687:58:
called `Option::unwrap()` on a `None` value
stack backtrace:
   0:     0x71372c029c43 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h8c0339b76e23c7c6
   1:     0x71372c8059d8 - core::fmt::write::hf17964c7d2e18bd0
   2:     0x71372d8de851 - std::io::Write::write_fmt::h7cfcd5f93f9dc567
   3:     0x71372c029aa2 - std::sys::backtrace::BacktraceLock::print::hd716d5039d269fbe
   4:     0x71372c02c3c8 - std::panicking::default_hook::{{closure}}::h96df64858d5cb010
   5:     0x71372c02bee7 - std::panicking::default_hook::ha39f1f5bbf927117
   6:     0x71372b0941cf - std[6f9921491eb9fe4a]::panicking::update_hook::<alloc[303c6c98e6c278b0]::boxed::Box<rustc_driver_impl[35e6f6d4a4e145a]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x71372c02cc33 - std::panicking::rust_panic_with_hook::hcc277abd3042fb25
   8:     0x71372c02c8f6 - std::panicking::begin_panic_handler::{{closure}}::h1b674a2aca508a35
   9:     0x71372c02a119 - std::sys::backtrace::__rust_end_short_backtrace::hec5520c4d6d8ef49
  10:     0x71372c02c5ed - rust_begin_unwind
  11:     0x713728a73ee0 - core::panicking::panic_fmt::hb6733266874462c8
  12:     0x7137296d1a1c - core::panicking::panic::h1b023ea0b391ac3c
  13:     0x713729ffb959 - core::option::unwrap_failed::h566a1e041658cf50
  14:     0x71372ac62771 - <core[84375964ba27b281]::iter::adapters::filter_map::FilterMap<core[84375964ba27b281]::slice::iter::Iter<(rustc_ast[e9ff90c955529bae]::node_id::NodeId, rustc_ast[e9ff90c955529bae]::ast::Path)>, <rustc_ast_lowering[26433d4c5baf590c]::LoweringContext>::lower_define_opaque::{closure#0}> as core[84375964ba27b281]::iter::traits::iterator::Iterator>::next
  15:     0x71372ac4a745 - rustc_arena[b786825a1a0b9400]::outline::<<rustc_arena[b786825a1a0b9400]::DroplessArena>::alloc_from_iter<(rustc_span[4eecbe2951797329]::span_encoding::Span, rustc_span[4eecbe2951797329]::def_id::LocalDefId), core[84375964ba27b281]::iter::adapters::filter_map::FilterMap<core[84375964ba27b281]::slice::iter::Iter<(rustc_ast[e9ff90c955529bae]::node_id::NodeId, rustc_ast[e9ff90c955529bae]::ast::Path)>, <rustc_ast_lowering[26433d4c5baf590c]::LoweringContext>::lower_define_opaque::{closure#0}>>::{closure#0}, &mut [(rustc_span[4eecbe2951797329]::span_encoding::Span, rustc_span[4eecbe2951797329]::def_id::LocalDefId)]>
  16:     0x71372cfc950e - <rustc_ast_lowering[26433d4c5baf590c]::LoweringContext>::lower_assoc_item
  17:     0x71372cc027d0 - <rustc_ast_lowering[26433d4c5baf590c]::item::ItemLowerer>::lower_node
  18:     0x71372cc00731 - rustc_ast_lowering[26433d4c5baf590c]::lower_to_hir
  19:     0x71372d92cba2 - rustc_query_impl[1036bb4ccce99203]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[1036bb4ccce99203]::query_impl::hir_crate::dynamic_query::{closure#2}::{closure#0}, rustc_middle[3cb3dc4375a289d]::query::erase::Erased<[u8; 8usize]>>
  20:     0x71372d92adc7 - rustc_query_system[3e09a18ca21cb4c7]::query::plumbing::try_execute_query::<rustc_query_impl[1036bb4ccce99203]::DynamicConfig<rustc_query_system[3e09a18ca21cb4c7]::query::caches::SingleCache<rustc_middle[3cb3dc4375a289d]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[1036bb4ccce99203]::plumbing::QueryCtxt, false>
  21:     0x71372d92aa41 - rustc_query_impl[1036bb4ccce99203]::query_impl::hir_crate::get_query_non_incr::__rust_end_short_backtrace
  22:     0x71372cd3a91e - rustc_query_impl[1036bb4ccce99203]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[1036bb4ccce99203]::query_impl::hir_attrs::dynamic_query::{closure#2}::{closure#0}, rustc_middle[3cb3dc4375a289d]::query::erase::Erased<[u8; 8usize]>>
  23:     0x71372cd39f39 - rustc_query_system[3e09a18ca21cb4c7]::query::plumbing::try_execute_query::<rustc_query_impl[1036bb4ccce99203]::DynamicConfig<rustc_data_structures[1c4c6ada1d4735e1]::vec_cache::VecCache<rustc_hir[afe1948da6f5aa8d]::hir_id::OwnerId, rustc_middle[3cb3dc4375a289d]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[3e09a18ca21cb4c7]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[1036bb4ccce99203]::plumbing::QueryCtxt, false>
  24:     0x71372cd39c8d - rustc_query_impl[1036bb4ccce99203]::query_impl::hir_attrs::get_query_non_incr::__rust_end_short_backtrace
  25:     0x71372cd2b2f1 - <rustc_middle[3cb3dc4375a289d]::hir::map::Map>::attrs
  26:     0x71372d8d1180 - rustc_passes[219dc2dc61c8ebab]::entry::entry_fn
  27:     0x71372d8d1118 - rustc_query_impl[1036bb4ccce99203]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[1036bb4ccce99203]::query_impl::entry_fn::dynamic_query::{closure#2}::{closure#0}, rustc_middle[3cb3dc4375a289d]::query::erase::Erased<[u8; 12usize]>>
  28:     0x71372d8d10f9 - <rustc_query_impl[1036bb4ccce99203]::query_impl::entry_fn::dynamic_query::{closure#2} as core[84375964ba27b281]::ops::function::FnOnce<(rustc_middle[3cb3dc4375a289d]::ty::context::TyCtxt, ())>>::call_once
  29:     0x71372d8d0a6a - rustc_query_system[3e09a18ca21cb4c7]::query::plumbing::try_execute_query::<rustc_query_impl[1036bb4ccce99203]::DynamicConfig<rustc_query_system[3e09a18ca21cb4c7]::query::caches::SingleCache<rustc_middle[3cb3dc4375a289d]::query::erase::Erased<[u8; 12usize]>>, false, false, false>, rustc_query_impl[1036bb4ccce99203]::plumbing::QueryCtxt, false>
  30:     0x71372d8d0815 - rustc_query_impl[1036bb4ccce99203]::query_impl::entry_fn::get_query_non_incr::__rust_end_short_backtrace
  31:     0x71372cc98f29 - rustc_interface[f27fcde62d61cfcf]::passes::run_required_analyses
  32:     0x71372d8da7f8 - rustc_interface[f27fcde62d61cfcf]::passes::analysis
  33:     0x71372d8da7d7 - rustc_query_impl[1036bb4ccce99203]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[1036bb4ccce99203]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[3cb3dc4375a289d]::query::erase::Erased<[u8; 0usize]>>
  34:     0x71372d929b81 - rustc_query_system[3e09a18ca21cb4c7]::query::plumbing::try_execute_query::<rustc_query_impl[1036bb4ccce99203]::DynamicConfig<rustc_query_system[3e09a18ca21cb4c7]::query::caches::SingleCache<rustc_middle[3cb3dc4375a289d]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[1036bb4ccce99203]::plumbing::QueryCtxt, false>
  35:     0x71372d929874 - rustc_query_impl[1036bb4ccce99203]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  36:     0x71372da5c3fc - rustc_interface[f27fcde62d61cfcf]::passes::create_and_enter_global_ctxt::<core[84375964ba27b281]::option::Option<rustc_interface[f27fcde62d61cfcf]::queries::Linker>, rustc_driver_impl[35e6f6d4a4e145a]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  37:     0x71372d96ff97 - rustc_interface[f27fcde62d61cfcf]::interface::run_compiler::<(), rustc_driver_impl[35e6f6d4a4e145a]::run_compiler::{closure#0}>::{closure#1}
  38:     0x71372d78ec92 - std[6f9921491eb9fe4a]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[f27fcde62d61cfcf]::util::run_in_thread_with_globals<rustc_interface[f27fcde62d61cfcf]::util::run_in_thread_pool_with_globals<rustc_interface[f27fcde62d61cfcf]::interface::run_compiler<(), rustc_driver_impl[35e6f6d4a4e145a]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  39:     0x71372d78f574 - <<std[6f9921491eb9fe4a]::thread::Builder>::spawn_unchecked_<rustc_interface[f27fcde62d61cfcf]::util::run_in_thread_with_globals<rustc_interface[f27fcde62d61cfcf]::util::run_in_thread_pool_with_globals<rustc_interface[f27fcde62d61cfcf]::interface::run_compiler<(), rustc_driver_impl[35e6f6d4a4e145a]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[84375964ba27b281]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  40:     0x71372d79096b - std::sys::pal::unix::thread::Thread::new::thread_start::h3b9892e1ccd38041
  41:     0x7137276a370a - <unknown>
  42:     0x713727727aac - <unknown>
  43:                0x0 - <unknown>

error: 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: please make sure that you have updated to the latest nightly

note: rustc 1.87.0-nightly (0998d4095 2025-03-12) running on x86_64-unknown-linux-gnu

query stack during panic:
#0 [hir_crate] getting the crate HIR
#1 [hir_attrs] getting HIR owner attributes in ``
#2 [entry_fn] looking up the entry function of a crate
#3 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0658`.

@matthiaskrgr matthiaskrgr 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 Mar 12, 2025
@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Mar 12, 2025
@matthiaskrgr
Copy link
Member Author

smaller

extern {
  fn a() {
#[define_opaque(b)]
    fn c() {}
  }
}

@TaKO8Ki TaKO8Ki self-assigned this Mar 23, 2025
compiler-errors pushed a commit to compiler-errors/rust that referenced this issue Mar 23, 2025
bors added a commit to rust-lang-ci/rust that referenced this issue Mar 23, 2025
…mpiler-errors

Rollup of 12 pull requests

Successful merges:

 - rust-lang#136040 (Remove unused trait BoundedSize)
 - rust-lang#138236 (uefi: Add OwnedEvent abstraction)
 - rust-lang#138293 (rustdoc: Gate unstable `doc(cfg())` predicates)
 - rust-lang#138509 (Add test to ensure no index out of bounds panic (rust-lang#135474))
 - rust-lang#138545 (Add MIR pre-codegen tests to track rust-lang#138544)
 - rust-lang#138631 (Update test for SGX now implementing `read_buf`)
 - rust-lang#138641 (Add unstable `--print=supported-crate-types` option)
 - rust-lang#138667 (std: uefi: fs: Implement mkdir)
 - rust-lang#138849 (doc: rename reference #create-a-configtoml to #create-a-bootstraptoml)
 - rust-lang#138854 (Fix ICE rust-lang#138415 for invalid extern function body)
 - rust-lang#138858 (Say which test failed the `COMPILETEST_REQUIRE_ALL_LLVM_COMPONENTS` assertion)
 - rust-lang#138861 (Tweak type flags, fix missing flags from coroutine kind ty)

Failed merges:

 - rust-lang#138755 ([rustdoc] Remove duplicated loop when computing doc cfgs)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this issue Mar 23, 2025
…mpiler-errors

Rollup of 12 pull requests

Successful merges:

 - rust-lang#136040 (Remove unused trait BoundedSize)
 - rust-lang#138236 (uefi: Add OwnedEvent abstraction)
 - rust-lang#138293 (rustdoc: Gate unstable `doc(cfg())` predicates)
 - rust-lang#138509 (Add test to ensure no index out of bounds panic (rust-lang#135474))
 - rust-lang#138545 (Add MIR pre-codegen tests to track rust-lang#138544)
 - rust-lang#138631 (Update test for SGX now implementing `read_buf`)
 - rust-lang#138641 (Add unstable `--print=supported-crate-types` option)
 - rust-lang#138667 (std: uefi: fs: Implement mkdir)
 - rust-lang#138849 (doc: rename reference #create-a-configtoml to #create-a-bootstraptoml)
 - rust-lang#138854 (Fix ICE rust-lang#138415 for invalid extern function body)
 - rust-lang#138858 (Say which test failed the `COMPILETEST_REQUIRE_ALL_LLVM_COMPONENTS` assertion)
 - rust-lang#138861 (Tweak type flags, fix missing flags from coroutine kind ty)

Failed merges:

 - rust-lang#138755 ([rustdoc] Remove duplicated loop when computing doc cfgs)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors closed this as completed in 1e02342 Mar 24, 2025
rust-timer added a commit to rust-lang-ci/rust that referenced this issue Mar 24, 2025
Rollup merge of rust-lang#138854 - TaKO8Ki:invalid-extern-fn-body, r=compiler-errors

Fix ICE rust-lang#138415 for invalid extern function body

Fixes rust-lang#138415
@jieyouxu jieyouxu removed the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Mar 26, 2025
github-actions bot pushed a commit to model-checking/verify-rust-std that referenced this issue Apr 2, 2025
…compiler-errors

Fix ICE rust-lang#138415 for invalid extern function body

Fixes rust-lang#138415
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
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.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants