Skip to content

Rare ICE in cstore_impl.rs with proc macro #143005

Open
@konnorandrews

Description

@konnorandrews

This is a forwarding from the rust-analyzer repo upon request. Originally reported there as the ICE has only ever been reproduced when running RA's proc macro server.

I'm reporting a rare ICE that another developer is experiencing. The ICE appears to be related to using the snafu crate in a proc macro, and only happens rarely (once a day type of rare). This makes me suspect some type of incremental compilation issue with RA's proc macro server.

I am unable to provide a repo or reproducer at this time. I have been unable to piece together a reproducing example from the information I have. The original finder of this ICE has stated they can make the code public at a later time. (see community discord for more context)

The ICE appears only in rust-analyzer's logs and does not appear when using cargo.

Meta

rustc version: 1.89.0-nightly (8da6239 2025-06-13)

Error output

thread 'rustc' panicked at compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs:696:32:
Box<dyn Any>
stack backtrace:
   0:        0x110e05f30 - std::backtrace::Backtrace::create::h22ea715f59ec3ed0
   1:        0x10ef30af0 - std[df31d5d2efadd756]::panicking::update_hook::<alloc[9129d48d0341a7c4]::boxed::Box<rustc_driver_impl[1b35cf4ad33a8386]::install_ice_hook::{closure#1}>>::{closure#0}
   2:        0x110e23a28 - std::panicking::rust_panic_with_hook::h8625bb980bd8ff09
   3:        0x10efb4758 - std[df31d5d2efadd756]::panicking::begin_panic::<rustc_errors[cdab23ccf35dce2f]::ExplicitBug>::{closure#0}
   4:        0x10efa2938 - std[df31d5d2efadd756]::sys::backtrace::__rust_end_short_backtrace::<std[df31d5d2efadd756]::panicking::begin_panic<rustc_errors[cdab23ccf35dce2f]::ExplicitBug>::{closure#0}, !>
   5:        0x113ac6cc8 - std[df31d5d2efadd756]::panicking::begin_panic::<rustc_errors[cdab23ccf35dce2f]::ExplicitBug>
   6:        0x113ac70a0 - <rustc_errors[cdab23ccf35dce2f]::diagnostic::BugAbort as rustc_errors[cdab23ccf35dce2f]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   7:        0x113b40bc0 - rustc_middle[f8a6d707848327d8]::util::bug::opt_span_bug_fmt::<rustc_span[9a68fd476b92126f]::span_encoding::Span>::{closure#0}
   8:        0x10fbe60a4 - rustc_middle[f8a6d707848327d8]::ty::context::tls::with_opt::<rustc_middle[f8a6d707848327d8]::util::bug::opt_span_bug_fmt<rustc_span[9a68fd476b92126f]::span_encoding::Span>::{closure#0}, !>::{closure#0}
   9:        0x10fbe5b74 - rustc_middle[f8a6d707848327d8]::ty::context::tls::with_context_opt::<rustc_middle[f8a6d707848327d8]::ty::context::tls::with_opt<rustc_middle[f8a6d707848327d8]::util::bug::opt_span_bug_fmt<rustc_span[9a68fd476b92126f]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  10:        0x113b40ad8 - rustc_middle[f8a6d707848327d8]::util::bug::bug_fmt
  11:        0x10fa4cfcc - <rustc_metadata[3c511df3e6d27a03]::rmeta::decoder::cstore_impl::provide_cstore_hooks::{closure#0} as core[7caada9627f18b09]::ops::function::FnOnce<(rustc_middle[f8a6d707848327d8]::ty::context::TyCtxt, rustc_span[9a68fd476b92126f]::def_id::DefPathHash, rustc_span[9a68fd476b92126f]::def_id::StableCrateId)>>::call_once
  12:        0x10fbf6dcc - <rustc_middle[f8a6d707848327d8]::ty::context::TyCtxt>::def_path_hash_to_def_id
  13:        0x11056cc68 - rustc_query_impl[82f6920132d9c7e1]::plumbing::force_from_dep_node::<rustc_query_impl[82f6920132d9c7e1]::DynamicConfig<rustc_data_structures[80586ddf1de41c48]::vec_cache::VecCache<rustc_span[9a68fd476b92126f]::def_id::LocalDefId, rustc_middle[f8a6d707848327d8]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[4741a984835d9de2]::dep_graph::graph::DepNodeIndex>, false, false, false>>
  14:        0x1104fa314 - <rustc_query_impl[82f6920132d9c7e1]::plumbing::query_callback<rustc_query_impl[82f6920132d9c7e1]::query_impl::local_def_id_to_hir_id::QueryType>::{closure#0} as core[7caada9627f18b09]::ops::function::FnOnce<(rustc_middle[f8a6d707848327d8]::ty::context::TyCtxt, rustc_query_system[4741a984835d9de2]::dep_graph::dep_node::DepNode, rustc_query_system[4741a984835d9de2]::dep_graph::serialized::SerializedDepNodeIndex)>>::call_once
  15:        0x1102fe4c8 - <rustc_query_system[4741a984835d9de2]::dep_graph::graph::DepGraphData<rustc_middle[f8a6d707848327d8]::dep_graph::DepsType>>::try_mark_previous_green::<rustc_query_impl[82f6920132d9c7e1]::plumbing::QueryCtxt>
  16:        0x1102fe28c - <rustc_query_system[4741a984835d9de2]::dep_graph::graph::DepGraphData<rustc_middle[f8a6d707848327d8]::dep_graph::DepsType>>::try_mark_green::<rustc_query_impl[82f6920132d9c7e1]::plumbing::QueryCtxt>
  17:        0x110348280 - rustc_query_system[4741a984835d9de2]::query::plumbing::try_execute_query::<rustc_query_impl[82f6920132d9c7e1]::DynamicConfig<rustc_query_system[4741a984835d9de2]::query::caches::DefIdCache<rustc_middle[f8a6d707848327d8]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[82f6920132d9c7e1]::plumbing::QueryCtxt, true>
  18:        0x1105affa0 - rustc_query_impl[82f6920132d9c7e1]::query_impl::def_span::get_query_incr::__rust_end_short_backtrace
  19:        0x1101fe468 - rustc_passes[8601956eadf0dd58]::entry::entry_fn
  20:        0x110574a38 - rustc_query_impl[82f6920132d9c7e1]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[82f6920132d9c7e1]::query_impl::entry_fn::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f8a6d707848327d8]::query::erase::Erased<[u8; 12usize]>>
  21:        0x110357448 - rustc_query_system[4741a984835d9de2]::query::plumbing::try_execute_query::<rustc_query_impl[82f6920132d9c7e1]::DynamicConfig<rustc_query_system[4741a984835d9de2]::query::caches::SingleCache<rustc_middle[f8a6d707848327d8]::query::erase::Erased<[u8; 12usize]>>, false, false, false>, rustc_query_impl[82f6920132d9c7e1]::plumbing::QueryCtxt, true>
  22:        0x1105d0170 - rustc_query_impl[82f6920132d9c7e1]::query_impl::entry_fn::get_query_incr::__rust_end_short_backtrace
  23:        0x10f83dbc4 - rustc_interface[41d3ece343fba094]::passes::run_required_analyses
  24:        0x10f8400c4 - rustc_interface[41d3ece343fba094]::passes::analysis
  25:        0x11057497c - rustc_query_impl[82f6920132d9c7e1]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[82f6920132d9c7e1]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[f8a6d707848327d8]::query::erase::Erased<[u8; 0usize]>>
  26:        0x11034bebc - rustc_query_system[4741a984835d9de2]::query::plumbing::try_execute_query::<rustc_query_impl[82f6920132d9c7e1]::DynamicConfig<rustc_query_system[4741a984835d9de2]::query::caches::SingleCache<rustc_middle[f8a6d707848327d8]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[82f6920132d9c7e1]::plumbing::QueryCtxt, true>
  27:        0x11058094c - rustc_query_impl[82f6920132d9c7e1]::query_impl::analysis::get_query_incr::__rust_end_short_backtrace
  28:        0x10eee1e4c - rustc_interface[41d3ece343fba094]::passes::create_and_enter_global_ctxt::<core[7caada9627f18b09]::option::Option<rustc_interface[41d3ece343fba094]::queries::Linker>, rustc_driver_impl[1b35cf4ad33a8386]::run_compiler::{closure#0}::{closure#2}>
  29:        0x10ef2d8c0 - rustc_interface[41d3ece343fba094]::interface::run_compiler::<(), rustc_driver_impl[1b35cf4ad33a8386]::run_compiler::{closure#0}>::{closure#1}
  30:        0x10ef2005c - std[df31d5d2efadd756]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[41d3ece343fba094]::util::run_in_thread_with_globals<rustc_interface[41d3ece343fba094]::util::run_in_thread_pool_with_globals<rustc_interface[41d3ece343fba094]::interface::run_compiler<(), rustc_driver_impl[1b35cf4ad33a8386]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  31:        0x10ef340d8 - <<std[df31d5d2efadd756]::thread::Builder>::spawn_unchecked_<rustc_interface[41d3ece343fba094]::util::run_in_thread_with_globals<rustc_interface[41d3ece343fba094]::util::run_in_thread_pool_with_globals<rustc_interface[41d3ece343fba094]::interface::run_compiler<(), rustc_driver_impl[1b35cf4ad33a8386]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[7caada9627f18b09]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  32:        0x110e26de8 - std::sys::pal::unix::thread::Thread::new::thread_start::hcd1d9414b76a54c1
  33:        0x188b4c2e4 - __pthread_deallocate


rustc version: 1.89.0-nightly (8da623945 2025-06-13)
platform: aarch64-apple-darwin

query stack during panic:
#0 [def_span] looking up span for `main`
#1 [entry_fn] looking up the entry function of a crate
#2 [analysis] running analysis passes on this crate
end of query stack

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-needs-reproStatus: This issue has no reproduction and needs a reproduction to make progress.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions