Open
Description
This is curiosity of our friends that will overthrow us AI :)
" The ICE is happening when the compiler tries to type-check async fn foo(...) -> !
(and its call into the generic bar
) and ends up in a busted report_similar_impl_candidates
path.
Code
Concretely, this signature:
#[embassy_executor::task]
async fn foo(A: SomeTypeIMatching) -> ! {
bar(A).await
}
—combined with your generic async method
pub async fn Bar<A: OtherGenericType + 'static>(a: A) -> ! { … }
—produces an opaque future type that the compiler can’t correctly resolve, and that eventually hits an internal None.unwrap()
.
Solution (work around -.-)
I explicitly defined the types (though i didn't want to) within the module that is being called. This no longer has the error because of that.
Meta
I'm using container...
FROM espressif/idf-rust:esp32_latest
USER root
WORKDIR /owb
COPY . /owb
RUN chown -R esp:esp /owb
USER esp
ENV PATH="/home/esp/.rustup/toolchains/esp/xtensa-esp-elf/esp-14.2.0_20240906/xtensa-esp-elf/bin:/home/esp/.cargo/bin:$PATH"
CMD ["/bin/bash"]
Error output
thread 'rustc' panicked at compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs:1824:44:
called `Option::unwrap()` on a `None` value
Backtrace
thread 'rustc' panicked at compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs:1824:44:
called `Option::unwrap()` on a `None` value
stack backtrace:
0: 0x7c13b4b5d604 - std::backtrace::Backtrace::create::hc917666e49edcc67
1: 0x7c13b4b5d555 - std::backtrace::Backtrace::force_capture::h0456361e9223ac44
2: 0x7c13ada3864f - <alloc[326f412a89e5869a]::boxed::Box<rustc_driver_impl[11120e4604616cb8]::install_ice_hook::{closure#0}> as core[19c24f2bf64da68c]::ops::function::Fn<(&dyn for<'a, 'b> core[19c24f2bf64da68c]::ops::function::Fn<(&'a std[3c1f75e497f5fe1]::panic::PanicHookInfo<'b>,), Output = ()> + core[19c24f2bf64da68c]::marker::Send + core[19c24f2bf64da68c]::marker::Sync, &std[3c1f75e497f5fe1]::panic::PanicHookInfo)>>::call
3: 0x7c13b4b5f40d - std::panicking::rust_panic_with_hook::h81634076ecf27e23
4: 0x7c13b4b47216 - std::panicking::begin_panic_handler::{{closure}}::hc739c40ce3082128
5: 0x7c13b4b46ee9 - std::sys::backtrace::__rust_end_short_backtrace::h1aa68d986880e1b9
6: 0x7c13b4b5eecc - rust_begin_unwind
7: 0x7c13b4bea690 - core::panicking::panic_fmt::ha0d34e63f154cecc
8: 0x7c13b4bea71c - core::panicking::panic::h80c9defdaf74510a
9: 0x7c13b4be5e69 - core::option::unwrap_failed::h6a0ccd5c3d009ffb
10: 0x7c13b37e6f08 - <rustc_trait_selection[a8595092de99c364]::error_reporting::TypeErrCtxt>::report_similar_impl_candidates
11: 0x7c13b3811e8a - <rustc_trait_selection[a8595092de99c364]::error_reporting::TypeErrCtxt>::report_fulfillment_errors
12: 0x7c13b188c491 - <rustc_hir_typeck[c37f261e904b2689]::fn_ctxt::FnCtxt>::report_ambiguity_errors
13: 0x7c13b1b1da72 - rustc_hir_typeck[c37f261e904b2689]::typeck
14: 0x7c13b3008ca0 - rustc_query_impl[139339c607ef3f83]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[139339c607ef3f83]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 8usize]>>
15: 0x7c13b332260c - <rustc_query_impl[139339c607ef3f83]::query_impl::typeck::dynamic_query::{closure#2} as core[19c24f2bf64da68c]::ops::function::FnOnce<(rustc_middle[8ac56485c6056ae4]::ty::context::TyCtxt, rustc_span[6216dc77597e7c6d]::def_id::LocalDefId)>>::call_once
16: 0x7c13b310423c - rustc_query_system[58145ffb095b1890]::query::plumbing::try_execute_query::<rustc_query_impl[139339c607ef3f83]::DynamicConfig<rustc_data_structures[7490c3560e13ac19]::vec_cache::VecCache<rustc_span[6216dc77597e7c6d]::def_id::LocalDefId, rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[58145ffb095b1890]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[139339c607ef3f83]::plumbing::QueryCtxt, false>
17: 0x7c13b3205a16 - rustc_query_impl[139339c607ef3f83]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
18: 0x7c13b1de4e85 - rustc_middle[8ac56485c6056ae4]::query::plumbing::query_get_at::<rustc_data_structures[7490c3560e13ac19]::vec_cache::VecCache<rustc_span[6216dc77597e7c6d]::def_id::LocalDefId, rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[58145ffb095b1890]::dep_graph::graph::DepNodeIndex>>
19: 0x7c13b1e0d864 - rustc_hir_analysis[f2f24cae42e238bb]::collect::type_of::opaque::find_opaque_ty_constraints_for_rpit
20: 0x7c13b1e57f7a - rustc_hir_analysis[f2f24cae42e238bb]::collect::type_of::type_of_opaque
21: 0x7c13b30029c5 - rustc_query_impl[139339c607ef3f83]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[139339c607ef3f83]::query_impl::type_of_opaque::dynamic_query::{closure#2}::{closure#0}, rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 8usize]>>
22: 0x7c13b33d62c0 - <rustc_query_impl[139339c607ef3f83]::query_impl::type_of_opaque::dynamic_query::{closure#2} as core[19c24f2bf64da68c]::ops::function::FnOnce<(rustc_middle[8ac56485c6056ae4]::ty::context::TyCtxt, rustc_span[6216dc77597e7c6d]::def_id::DefId)>>::call_once
23: 0x7c13b30575d8 - rustc_query_system[58145ffb095b1890]::query::plumbing::try_execute_query::<rustc_query_impl[139339c607ef3f83]::DynamicConfig<rustc_query_system[58145ffb095b1890]::query::caches::DefIdCache<rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[139339c607ef3f83]::plumbing::QueryCtxt, false>
24: 0x7c13b31f12f9 - rustc_query_impl[139339c607ef3f83]::query_impl::type_of_opaque::get_query_non_incr::__rust_end_short_backtrace
25: 0x7c13b1e351cc - rustc_middle[8ac56485c6056ae4]::query::plumbing::query_get_at::<rustc_query_system[58145ffb095b1890]::query::caches::DefIdCache<rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 8usize]>>>
26: 0x7c13b1e565d9 - rustc_hir_analysis[f2f24cae42e238bb]::collect::type_of::type_of
27: 0x7c13b3008d42 - rustc_query_impl[139339c607ef3f83]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[139339c607ef3f83]::query_impl::type_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 8usize]>>
28: 0x7c13b31ed340 - <rustc_query_impl[139339c607ef3f83]::query_impl::type_of::dynamic_query::{closure#2} as core[19c24f2bf64da68c]::ops::function::FnOnce<(rustc_middle[8ac56485c6056ae4]::ty::context::TyCtxt, rustc_span[6216dc77597e7c6d]::def_id::DefId)>>::call_once
29: 0x7c13b30575d8 - rustc_query_system[58145ffb095b1890]::query::plumbing::try_execute_query::<rustc_query_impl[139339c607ef3f83]::DynamicConfig<rustc_query_system[58145ffb095b1890]::query::caches::DefIdCache<rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[139339c607ef3f83]::plumbing::QueryCtxt, false>
30: 0x7c13b31f0d39 - rustc_query_impl[139339c607ef3f83]::query_impl::type_of::get_query_non_incr::__rust_end_short_backtrace
31: 0x7c13b1de61dc - rustc_middle[8ac56485c6056ae4]::query::plumbing::query_get_at::<rustc_query_system[58145ffb095b1890]::query::caches::DefIdCache<rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 8usize]>>>
32: 0x7c13b1df664d - rustc_hir_analysis[f2f24cae42e238bb]::check::check::check_item_type
33: 0x7c13b1e473ad - rustc_hir_analysis[f2f24cae42e238bb]::check::wfcheck::check_well_formed
34: 0x7c13b3003ff0 - rustc_query_impl[139339c607ef3f83]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[139339c607ef3f83]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 1usize]>>
35: 0x7c13b32e504c - <rustc_query_impl[139339c607ef3f83]::query_impl::check_well_formed::dynamic_query::{closure#2} as core[19c24f2bf64da68c]::ops::function::FnOnce<(rustc_middle[8ac56485c6056ae4]::ty::context::TyCtxt, rustc_span[6216dc77597e7c6d]::def_id::LocalDefId)>>::call_once
36: 0x7c13b30fc6cd - rustc_query_system[58145ffb095b1890]::query::plumbing::try_execute_query::<rustc_query_impl[139339c607ef3f83]::DynamicConfig<rustc_data_structures[7490c3560e13ac19]::vec_cache::VecCache<rustc_span[6216dc77597e7c6d]::def_id::LocalDefId, rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[58145ffb095b1890]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[139339c607ef3f83]::plumbing::QueryCtxt, false>
37: 0x7c13b321882d - rustc_query_impl[139339c607ef3f83]::query_impl::check_well_formed::get_query_non_incr::__rust_end_short_backtrace
38: 0x7c13b1d631b3 - rustc_middle[8ac56485c6056ae4]::query::plumbing::query_ensure_error_guaranteed::<rustc_data_structures[7490c3560e13ac19]::vec_cache::VecCache<rustc_span[6216dc77597e7c6d]::def_id::LocalDefId, rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[58145ffb095b1890]::dep_graph::graph::DepNodeIndex>, ()>
39: 0x7c13b1d571bf - <rustc_middle[8ac56485c6056ae4]::hir::ModuleItems>::par_opaques::<rustc_hir_analysis[f2f24cae42e238bb]::check::wfcheck::check_mod_type_wf::{closure#4}>
40: 0x7c13b1e50a5b - rustc_hir_analysis[f2f24cae42e238bb]::check::wfcheck::check_mod_type_wf
41: 0x7c13b3003fc0 - rustc_query_impl[139339c607ef3f83]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[139339c607ef3f83]::query_impl::check_mod_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 1usize]>>
42: 0x7c13b32c5ffc - <rustc_query_impl[139339c607ef3f83]::query_impl::check_mod_type_wf::dynamic_query::{closure#2} as core[19c24f2bf64da68c]::ops::function::FnOnce<(rustc_middle[8ac56485c6056ae4]::ty::context::TyCtxt, rustc_span[6216dc77597e7c6d]::def_id::LocalModDefId)>>::call_once
43: 0x7c13b30a780c - rustc_query_system[58145ffb095b1890]::query::plumbing::try_execute_query::<rustc_query_impl[139339c607ef3f83]::DynamicConfig<rustc_query_system[58145ffb095b1890]::query::caches::DefaultCache<rustc_span[6216dc77597e7c6d]::def_id::LocalModDefId, rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[139339c607ef3f83]::plumbing::QueryCtxt, false>
44: 0x7c13b320544d - rustc_query_impl[139339c607ef3f83]::query_impl::check_mod_type_wf::get_query_non_incr::__rust_end_short_backtrace
45: 0x7c13b1d5891d - <rustc_data_structures[7490c3560e13ac19]::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures[7490c3560e13ac19]::sync::parallel::par_for_each_in<&rustc_hir[5d3ee39a220d4a50]::hir_id::OwnerId, &[rustc_hir[5d3ee39a220d4a50]::hir_id::OwnerId], <rustc_middle[8ac56485c6056ae4]::hir::map::Map>::par_for_each_module<rustc_hir_analysis[f2f24cae42e238bb]::check_crate::{closure#0}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
46: 0x7c13b1c43cde - <rustc_session[ae442a1a39ad9b5f]::session::Session>::time::<(), rustc_hir_analysis[f2f24cae42e238bb]::check_crate::{closure#0}>
47: 0x7c13b1b58f8f - rustc_hir_analysis[f2f24cae42e238bb]::check_crate
48: 0x7c13adccce29 - rustc_interface[fa0ba49808ba01a1]::passes::analysis
49: 0x7c13b3008d7e - rustc_query_impl[139339c607ef3f83]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[139339c607ef3f83]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 1usize]>>
50: 0x7c13b33885e8 - <rustc_query_impl[139339c607ef3f83]::query_impl::analysis::dynamic_query::{closure#2} as core[19c24f2bf64da68c]::ops::function::FnOnce<(rustc_middle[8ac56485c6056ae4]::ty::context::TyCtxt, ())>>::call_once
51: 0x7c13b3061a6c - rustc_query_system[58145ffb095b1890]::query::plumbing::try_execute_query::<rustc_query_impl[139339c607ef3f83]::DynamicConfig<rustc_query_system[58145ffb095b1890]::query::caches::SingleCache<rustc_middle[8ac56485c6056ae4]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[139339c607ef3f83]::plumbing::QueryCtxt, false>
52: 0x7c13b31f2243 - rustc_query_impl[139339c607ef3f83]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
53: 0x7c13ad9a5bfe - <rustc_middle[8ac56485c6056ae4]::ty::context::GlobalCtxt>::enter::<rustc_driver_impl[11120e4604616cb8]::run_compiler::{closure#0}::{closure#1}::{closure#6}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>
54: 0x7c13ad9eed65 - <rustc_interface[fa0ba49808ba01a1]::interface::Compiler>::enter::<rustc_driver_impl[11120e4604616cb8]::run_compiler::{closure#0}::{closure#1}, core[19c24f2bf64da68c]::result::Result<core[19c24f2bf64da68c]::option::Option<rustc_interface[fa0ba49808ba01a1]::queries::Linker>, rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>
55: 0x7c13ada70ff2 - <scoped_tls[4cdd8087fbbd96d6]::ScopedKey<rustc_span[6216dc77597e7c6d]::SessionGlobals>>::set::<rustc_interface[fa0ba49808ba01a1]::util::run_in_thread_with_globals<rustc_interface[fa0ba49808ba01a1]::util::run_in_thread_pool_with_globals<rustc_interface[fa0ba49808ba01a1]::interface::run_compiler<core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>, rustc_driver_impl[11120e4604616cb8]::run_compiler::{closure#0}>::{closure#1}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>::{closure#0}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>
56: 0x7c13ada25a9c - rustc_span[6216dc77597e7c6d]::create_session_globals_then::<core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>, rustc_interface[fa0ba49808ba01a1]::util::run_in_thread_with_globals<rustc_interface[fa0ba49808ba01a1]::util::run_in_thread_pool_with_globals<rustc_interface[fa0ba49808ba01a1]::interface::run_compiler<core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>, rustc_driver_impl[11120e4604616cb8]::run_compiler::{closure#0}>::{closure#1}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>::{closure#0}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
57: 0x7c13ada798e2 - std[3c1f75e497f5fe1]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[fa0ba49808ba01a1]::util::run_in_thread_with_globals<rustc_interface[fa0ba49808ba01a1]::util::run_in_thread_pool_with_globals<rustc_interface[fa0ba49808ba01a1]::interface::run_compiler<core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>, rustc_driver_impl[11120e4604616cb8]::run_compiler::{closure#0}>::{closure#1}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>::{closure#0}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>
58: 0x7c13ada563c1 - <<std[3c1f75e497f5fe1]::thread::Builder>::spawn_unchecked_<rustc_interface[fa0ba49808ba01a1]::util::run_in_thread_with_globals<rustc_interface[fa0ba49808ba01a1]::util::run_in_thread_pool_with_globals<rustc_interface[fa0ba49808ba01a1]::interface::run_compiler<core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>, rustc_driver_impl[11120e4604616cb8]::run_compiler::{closure#0}>::{closure#1}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>::{closure#0}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[19c24f2bf64da68c]::result::Result<(), rustc_span[6216dc77597e7c6d]::ErrorGuaranteed>>::{closure#1} as core[19c24f2bf64da68c]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
59: 0x7c13b4b9c5bb - std::sys::pal::unix::thread::Thread::new::thread_start::hba5155a029b79976
60: 0x7c13aa3df1c4 - <unknown>
61: 0x7c13aa45eac0 - __clone
62: 0x0 - <unknown>
rustc version: 1.84.0-nightly (b0bd11bcc 2025-01-10) (1.84.0.0)
platform: x86_64-unknown-linux-gnu
query stack during panic:
#0 [typeck] type-checking `__led_task_task`
#1 [type_of_opaque] computing type of opaque `__led_task_task::{opaque#0}`
#2 [type_of] computing type of `__led_task_task::{opaque#0}`
#3 [check_well_formed] checking that `__led_task_task::{opaque#0}` is well-formed
#4 [check_mod_type_wf] checking that types are well-formed in top-level module
#5 [analysis] running analysis passes on this crate
end of query stack
Metadata
Metadata
Assignees
Labels
Category: This is a bug.Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Status: The issue lacks details necessary to triage or act on it.Status: This issue has no reproduction and needs a reproduction to make progress.Relevant to the compiler team, which will review and decide on the PR/issue.
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
[-]Opaque Future Type crashed compiler :) `Called `Option::unwrap()` on a `None` value`[/-][+]Opaque Future Type crashed compiler :) Called `Option::unwrap()` on a `None` value[/+]jieyouxu commentedon May 20, 2025
This is not the latest stable or nightly version. Does this reproduce on the latest nightly?
jieyouxu commentedon May 20, 2025
In particular, this might be #132920 that was fixed in a stable point release 1.84.1?
Token-Thinker commentedon May 20, 2025
Checking now....it might be that
espup
is out of date itself because the env i'm running is the below but i useespup
to generate the binary.