Skip to content

ICE: No HirId for DefId(0:5 ~ foo[4879]::{extern#0}::function::{opaque#0}) #146754

@levinwinter

Description

@levinwinter

Code

unsafe extern "C" {
    async fn function() -> [(); || {}];
}

Meta

rustc --version --verbose:

rustc 1.92.0-nightly (7c275d09e 2025-09-18)
binary: rustc
commit-hash: 7c275d09ea6b953d2cca169667184a7214bd14c7
commit-date: 2025-09-18
host: x86_64-unknown-linux-gnu
release: 1.92.0-nightly
LLVM version: 21.1.1

Error output

/rustc-dev/7c275d09ea6b953d2cca169667184a7214bd14c7/compiler/rustc_middle/src/hir/mod.rs:223:32: No HirId for DefId(0:5 ~ foo[4879]::{extern#0}::function::{opaque#0})
thread 'rustc' (34697) panicked at /rustc-dev/7c275d09ea6b953d2cca169667184a7214bd14c7/compiler/rustc_middle/src/hir/mod.rs:223:32:
Box<dyn Any>
Backtrace

$ RUST_BACKTRACE=1 rustc +nightly --edition=2024 foo.rs 
error: functions in `extern` blocks cannot have `async` qualifier
 --> foo.rs:2:5
  |
1 | unsafe extern "C" {
  | ----------------- in this `extern` block
2 |     async fn function() -> [(); || {}];
  |     ^^^^^ help: remove the `async` qualifier

error[E0601]: `main` function not found in crate `foo`
 --> foo.rs:3:2
  |
3 | }
  |  ^ consider adding a `main` function to `foo.rs`

error[E0308]: mismatched types
 --> foo.rs:2:33
  |
2 |     async fn function() -> [(); || {}];
  |                                 ^^^^^ expected `usize`, found closure
  |
  = note: expected type `usize`
          found closure `{closure@foo.rs:2:33: 2:35}`

error: internal compiler error: /rustc-dev/7c275d09ea6b953d2cca169667184a7214bd14c7/compiler/rustc_middle/src/hir/mod.rs:223:32: No HirId for DefId(0:5 ~ foo[4879]::{extern#0}::function::{opaque#0})


thread 'rustc' panicked at /rustc-dev/7c275d09ea6b953d2cca169667184a7214bd14c7/compiler/rustc_middle/src/hir/mod.rs:223:32:
Box<dyn Any>
stack backtrace:
   0:     0x7067819d0a1b - std::backtrace::Backtrace::create::h9649f0bcd677e16d
   1:     0x7067819d0965 - std::backtrace::Backtrace::force_capture::h67b40352c9263dc3
   2:     0x7067809f6342 - std[6c96415bc1a38016]::panicking::update_hook::<alloc[c6e2df4d00e1f0b6]::boxed::Box<rustc_driver_impl[459800387efcc559]::install_ice_hook::{closure#1}>>::{closure#0}
   3:     0x7067819d195f - std::panicking::panic_with_hook::hedf05123aa8b61bb
   4:     0x706780a32471 - std[6c96415bc1a38016]::panicking::begin_panic::<rustc_errors[af568b6d67acca2f]::ExplicitBug>::{closure#0}
   5:     0x706780a25c86 - std[6c96415bc1a38016]::sys::backtrace::__rust_end_short_backtrace::<std[6c96415bc1a38016]::panicking::begin_panic<rustc_errors[af568b6d67acca2f]::ExplicitBug>::{closure#0}, !>
   6:     0x706780a23729 - std[6c96415bc1a38016]::panicking::begin_panic::<rustc_errors[af568b6d67acca2f]::ExplicitBug>
   7:     0x706780a3db61 - <rustc_errors[af568b6d67acca2f]::diagnostic::BugAbort as rustc_errors[af568b6d67acca2f]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   8:     0x706780fcfdba - rustc_middle[e11099e36afb5411]::util::bug::opt_span_bug_fmt::<rustc_span[9408016a182fdcc0]::span_encoding::Span>::{closure#0}
   9:     0x706780fcff7a - rustc_middle[e11099e36afb5411]::ty::context::tls::with_opt::<rustc_middle[e11099e36afb5411]::util::bug::opt_span_bug_fmt<rustc_span[9408016a182fdcc0]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  10:     0x706780fbeb4b - rustc_middle[e11099e36afb5411]::ty::context::tls::with_context_opt::<rustc_middle[e11099e36afb5411]::ty::context::tls::with_opt<rustc_middle[e11099e36afb5411]::util::bug::opt_span_bug_fmt<rustc_span[9408016a182fdcc0]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  11:     0x70677f0b9200 - rustc_middle[e11099e36afb5411]::util::bug::bug_fmt
  12:     0x7067823e80d2 - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::local_def_id_to_hir_id::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>>
  13:     0x7067823e7732 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_data_structures[e568e5fb65a8620a]::vec_cache::VecCache<rustc_span[9408016a182fdcc0]::def_id::LocalDefId, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[44f2cb83942a7389]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  14:     0x7067823e720b - rustc_query_impl[8ceca73aa722394f]::query_impl::local_def_id_to_hir_id::get_query_non_incr::__rust_end_short_backtrace
  15:     0x706782cc2d23 - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::disabled_sanitizers_for::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 2usize]>>
  16:     0x706782cc1e4d - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_data_structures[e568e5fb65a8620a]::vec_cache::VecCache<rustc_span[9408016a182fdcc0]::def_id::LocalDefId, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 2usize]>, rustc_query_system[44f2cb83942a7389]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  17:     0x706782cc1bc2 - rustc_query_impl[8ceca73aa722394f]::query_impl::disabled_sanitizers_for::get_query_non_incr::__rust_end_short_backtrace
  18:     0x706782cc2b4f - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::disabled_sanitizers_for::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 2usize]>>
  19:     0x706782cc1e4d - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_data_structures[e568e5fb65a8620a]::vec_cache::VecCache<rustc_span[9408016a182fdcc0]::def_id::LocalDefId, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 2usize]>, rustc_query_system[44f2cb83942a7389]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  20:     0x706782cc1bc2 - rustc_query_impl[8ceca73aa722394f]::query_impl::disabled_sanitizers_for::get_query_non_incr::__rust_end_short_backtrace
  21:     0x706782cc2b4f - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::disabled_sanitizers_for::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 2usize]>>
  22:     0x706782cc1e4d - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_data_structures[e568e5fb65a8620a]::vec_cache::VecCache<rustc_span[9408016a182fdcc0]::def_id::LocalDefId, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 2usize]>, rustc_query_system[44f2cb83942a7389]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  23:     0x706782cc1bc2 - rustc_query_impl[8ceca73aa722394f]::query_impl::disabled_sanitizers_for::get_query_non_incr::__rust_end_short_backtrace
  24:     0x706782cc48f8 - rustc_codegen_ssa[82e0de25f9f2471a]::codegen_attrs::codegen_fn_attrs
  25:     0x706782cc3674 - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::codegen_fn_attrs::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>>
  26:     0x70678221ad7a - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_query_system[44f2cb83942a7389]::query::caches::DefIdCache<rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  27:     0x70678221a5dd - rustc_query_impl[8ceca73aa722394f]::query_impl::codegen_fn_attrs::get_query_non_incr::__rust_end_short_backtrace
  28:     0x706782a9c4b6 - rustc_hir_analysis[1618d3df19afa2f8]::check::check::check_item_type
  29:     0x706782a980f9 - rustc_hir_analysis[1618d3df19afa2f8]::check::wfcheck::check_well_formed
  30:     0x706782a980db - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 1usize]>>
  31:     0x706782a97952 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_data_structures[e568e5fb65a8620a]::vec_cache::VecCache<rustc_span[9408016a182fdcc0]::def_id::LocalDefId, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[44f2cb83942a7389]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  32:     0x706782a97456 - rustc_query_impl[8ceca73aa722394f]::query_impl::check_well_formed::get_query_non_incr::__rust_end_short_backtrace
  33:     0x706782a94abd - rustc_hir_analysis[1618d3df19afa2f8]::check::wfcheck::check_type_wf
  34:     0x706782a94965 - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::check_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 1usize]>>
  35:     0x70678325ec08 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_query_system[44f2cb83942a7389]::query::caches::SingleCache<rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  36:     0x70678325e9ce - rustc_query_impl[8ceca73aa722394f]::query_impl::check_type_wf::get_query_non_incr::__rust_end_short_backtrace
  37:     0x706782cc81dc - rustc_hir_analysis[1618d3df19afa2f8]::check_crate
  38:     0x7067823e8bb0 - rustc_interface[f4ad0248271d71d8]::passes::analysis
  39:     0x7067823e886d - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 0usize]>>
  40:     0x706783265526 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_query_system[44f2cb83942a7389]::query::caches::SingleCache<rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  41:     0x70678326517c - rustc_query_impl[8ceca73aa722394f]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  42:     0x706783472d4f - rustc_interface[f4ad0248271d71d8]::passes::create_and_enter_global_ctxt::<core[88dcab6addd45e6c]::option::Option<rustc_interface[f4ad0248271d71d8]::queries::Linker>, rustc_driver_impl[459800387efcc559]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  43:     0x7067833e96be - rustc_interface[f4ad0248271d71d8]::interface::run_compiler::<(), rustc_driver_impl[459800387efcc559]::run_compiler::{closure#0}>::{closure#1}
  44:     0x7067833482f8 - std[6c96415bc1a38016]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[f4ad0248271d71d8]::util::run_in_thread_with_globals<rustc_interface[f4ad0248271d71d8]::util::run_in_thread_pool_with_globals<rustc_interface[f4ad0248271d71d8]::interface::run_compiler<(), rustc_driver_impl[459800387efcc559]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  45:     0x706783347fdc - <<std[6c96415bc1a38016]::thread::Builder>::spawn_unchecked_<rustc_interface[f4ad0248271d71d8]::util::run_in_thread_with_globals<rustc_interface[f4ad0248271d71d8]::util::run_in_thread_pool_with_globals<rustc_interface[f4ad0248271d71d8]::interface::run_compiler<(), rustc_driver_impl[459800387efcc559]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[88dcab6addd45e6c]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  46:     0x70678334e68d - std::sys::thread::unix::Thread::new::thread_start::hb28ad79a6a69b48c
  47:     0x706784d141f5 - start_thread
                               at ./nptl/pthread_create.c:442:8
  48:     0x706784d9489c - clone3
                               at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81:0
  49:                0x0 - <unknown>


rustc version: 1.92.0-nightly (7c275d09e 2025-09-18)
platform: x86_64-unknown-linux-gnu

query stack during panic:
#0 [local_def_id_to_hir_id] getting HIR ID of `function::{opaque#0}`
#1 [disabled_sanitizers_for] checking what set of sanitizers are enabled on `function::{opaque#0}`
#2 [disabled_sanitizers_for] checking what set of sanitizers are enabled on `function::{opaque#0}::{constant#0}`
#3 [disabled_sanitizers_for] checking what set of sanitizers are enabled on `function::{opaque#0}::{constant#0}::{closure#0}`
#4 [codegen_fn_attrs] computing codegen attributes of `function::{opaque#0}::{constant#0}::{closure#0}`
#5 [check_well_formed] checking that `function::{opaque#0}::{constant#0}::{closure#0}` is well-formed
#6 [check_type_wf] checking that types are well-formed
#7 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 4 previous errors

Some errors have detailed explanations: E0308, E0601.
For more information about an error, try `rustc --explain E0308`.

Bisection

Regression in e6aa5b3 (nightly-2025-08-20)
  • searched nightlies: from nightly-2025-08-14 to nightly-2025-09-19
  • regressed nightly: nightly-2025-08-20
  • searched commit range: 9eb4a26...05f5a58
  • regressed commit: 8365fcb

This ICE was found using fuzzing.

@rustbot label +S-has-bisection +S-has-mcve +requires-nightly

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-has-bisectionStatus: A bisection has been found for this issueS-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions