Rustc panics at free_region_relations.rs:93:9: "can't find an upper bound!?" · Issue #139004 · rust-lang/rust (original) (raw)
The compiler panics for the following code.
thread 'rustc' panicked at compiler/rustc_borrowck/src/type_check/free_region_relations.rs:93:9:
can't find an upper bound!?
stack backtrace:
0: 0x7bb66a6dfb8a - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::hfc616348d9ad0abc
1: 0x7bb66ae14d26 - core::fmt::write::h7ca648217bc79799
2: 0x7bb66bd18711 - std::io::Write::write_fmt::h7960c58bfa5ccbcb
3: 0x7bb66a6df9e2 - std::sys::backtrace::BacktraceLock::print::h3fb349e80cbe0423
4: 0x7bb66a6e1f87 - std::panicking::default_hook::{{closure}}::h3366e5842cba645d
5: 0x7bb66a6e1d70 - std::panicking::default_hook::hd7573a5d4879884b
6: 0x7bb669851c48 - std[26cf95b4f122e720]::panicking::update_hook::<alloc[653926f6abfe8a8a]::boxed::Box<rustc_driver_impl[bcf7efa42268b866]::install_ice_hook::{closure#1}>>::{closure#0}
7: 0x7bb66a6e2813 - std::panicking::rust_panic_with_hook::h66e909d048c263a9
8: 0x7bb66a6e24d6 - std::panicking::begin_panic_handler::{{closure}}::h8d9aa8be7e8634cf
9: 0x7bb66a6e0069 - std::sys::backtrace::__rust_end_short_backtrace::h7d7e47ef99abf6aa
10: 0x7bb66a6e21cd - rust_begin_unwind
11: 0x7bb6673a0ef0 - core::panicking::panic_fmt::hf8ffc7c15bfb58a0
12: 0x7bb66961e200 - <rustc_borrowck[2064f1529492eb9c]::type_check::free_region_relations::UniversalRegionRelations>::non_local_upper_bounds
13: 0x7bb66aec9596 - rustc_borrowck[2064f1529492eb9c]::nll::compute_regions
14: 0x7bb66beab12e - rustc_borrowck[2064f1529492eb9c]::do_mir_borrowck
15: 0x7bb66be9e2f9 - rustc_query_impl[291ba1fcadd92b61]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[291ba1fcadd92b61]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>>
16: 0x7bb66b10b817 - rustc_query_system[397df17712590249]::query::plumbing::try_execute_query::<rustc_query_impl[291ba1fcadd92b61]::DynamicConfig<rustc_data_structures[f86a4f0d0152e187]::vec_cache::VecCache<rustc_span[59b99cb1407325ff]::def_id::LocalDefId, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[397df17712590249]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[291ba1fcadd92b61]::plumbing::QueryCtxt, false>
17: 0x7bb66b10b315 - rustc_query_impl[291ba1fcadd92b61]::query_impl::mir_borrowck::get_query_non_incr::__rust_end_short_backtrace
18: 0x7bb66b88098a - rustc_middle[9ee9ea6fc8845c53]::query::plumbing::query_get_at::<rustc_data_structures[f86a4f0d0152e187]::vec_cache::VecCache<rustc_span[59b99cb1407325ff]::def_id::LocalDefId, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[397df17712590249]::dep_graph::graph::DepNodeIndex>>
19: 0x7bb66b8809ea - <rustc_borrowck[2064f1529492eb9c]::type_check::TypeChecker>::prove_closure_bounds
20: 0x7bb66b163068 - <rustc_borrowck[2064f1529492eb9c]::type_check::TypeChecker>::typeck_mir
21: 0x7bb66be8c748 - rustc_borrowck[2064f1529492eb9c]::type_check::type_check
22: 0x7bb66aec3787 - rustc_borrowck[2064f1529492eb9c]::nll::compute_regions
23: 0x7bb66beab12e - rustc_borrowck[2064f1529492eb9c]::do_mir_borrowck
24: 0x7bb66be9e2f9 - rustc_query_impl[291ba1fcadd92b61]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[291ba1fcadd92b61]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>>
25: 0x7bb66b10b817 - rustc_query_system[397df17712590249]::query::plumbing::try_execute_query::<rustc_query_impl[291ba1fcadd92b61]::DynamicConfig<rustc_data_structures[f86a4f0d0152e187]::vec_cache::VecCache<rustc_span[59b99cb1407325ff]::def_id::LocalDefId, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[397df17712590249]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[291ba1fcadd92b61]::plumbing::QueryCtxt, false>
26: 0x7bb66b10b315 - rustc_query_impl[291ba1fcadd92b61]::query_impl::mir_borrowck::get_query_non_incr::__rust_end_short_backtrace
27: 0x7bb66b88098a - rustc_middle[9ee9ea6fc8845c53]::query::plumbing::query_get_at::<rustc_data_structures[f86a4f0d0152e187]::vec_cache::VecCache<rustc_span[59b99cb1407325ff]::def_id::LocalDefId, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[397df17712590249]::dep_graph::graph::DepNodeIndex>>
28: 0x7bb66b8809ea - <rustc_borrowck[2064f1529492eb9c]::type_check::TypeChecker>::prove_closure_bounds
29: 0x7bb66b163068 - <rustc_borrowck[2064f1529492eb9c]::type_check::TypeChecker>::typeck_mir
30: 0x7bb66be8c748 - rustc_borrowck[2064f1529492eb9c]::type_check::type_check
31: 0x7bb66aec3787 - rustc_borrowck[2064f1529492eb9c]::nll::compute_regions
32: 0x7bb66beab12e - rustc_borrowck[2064f1529492eb9c]::do_mir_borrowck
33: 0x7bb66be9e2f9 - rustc_query_impl[291ba1fcadd92b61]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[291ba1fcadd92b61]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>>
34: 0x7bb66b10b817 - rustc_query_system[397df17712590249]::query::plumbing::try_execute_query::<rustc_query_impl[291ba1fcadd92b61]::DynamicConfig<rustc_data_structures[f86a4f0d0152e187]::vec_cache::VecCache<rustc_span[59b99cb1407325ff]::def_id::LocalDefId, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[397df17712590249]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[291ba1fcadd92b61]::plumbing::QueryCtxt, false>
35: 0x7bb66b10b315 - rustc_query_impl[291ba1fcadd92b61]::query_impl::mir_borrowck::get_query_non_incr::__rust_end_short_backtrace
36: 0x7bb66b6b588c - rustc_middle[9ee9ea6fc8845c53]::query::plumbing::query_get_at::<rustc_data_structures[f86a4f0d0152e187]::vec_cache::VecCache<rustc_span[59b99cb1407325ff]::def_id::LocalDefId, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[397df17712590249]::dep_graph::graph::DepNodeIndex>>
37: 0x7bb66bd3b2de - rustc_hir_analysis[2b9e33d6773a99db]::collect::type_of::type_of_opaque
38: 0x7bb66bd3b151 - rustc_query_impl[291ba1fcadd92b61]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[291ba1fcadd92b61]::query_impl::type_of_opaque::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>>
39: 0x7bb66aefe3d1 - rustc_query_system[397df17712590249]::query::plumbing::try_execute_query::<rustc_query_impl[291ba1fcadd92b61]::DynamicConfig<rustc_query_system[397df17712590249]::query::caches::DefIdCache<rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[291ba1fcadd92b61]::plumbing::QueryCtxt, false>
40: 0x7bb66bff37f5 - rustc_query_impl[291ba1fcadd92b61]::query_impl::type_of_opaque::get_query_non_incr::__rust_end_short_backtrace
41: 0x7bb66b57482c - rustc_middle[9ee9ea6fc8845c53]::query::plumbing::query_get_at::<rustc_query_system[397df17712590249]::query::caches::DefIdCache<rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>>>
42: 0x7bb66af0579b - rustc_hir_analysis[2b9e33d6773a99db]::collect::type_of::type_of
43: 0x7bb66aeff5fa - rustc_query_impl[291ba1fcadd92b61]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[291ba1fcadd92b61]::query_impl::type_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>>
44: 0x7bb66aefe3d1 - rustc_query_system[397df17712590249]::query::plumbing::try_execute_query::<rustc_query_impl[291ba1fcadd92b61]::DynamicConfig<rustc_query_system[397df17712590249]::query::caches::DefIdCache<rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[291ba1fcadd92b61]::plumbing::QueryCtxt, false>
45: 0x7bb66aefdf6b - rustc_query_impl[291ba1fcadd92b61]::query_impl::type_of::get_query_non_incr::__rust_end_short_backtrace
46: 0x7bb66b57482c - rustc_middle[9ee9ea6fc8845c53]::query::plumbing::query_get_at::<rustc_query_system[397df17712590249]::query::caches::DefIdCache<rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 8usize]>>>
47: 0x7bb66b58fb67 - rustc_hir_analysis[2b9e33d6773a99db]::check::check::check_item_type
48: 0x7bb6685a4377 - rustc_hir_analysis[2b9e33d6773a99db]::check::wfcheck::check_well_formed
49: 0x7bb66b7ef407 - rustc_query_impl[291ba1fcadd92b61]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[291ba1fcadd92b61]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 1usize]>>
50: 0x7bb66b7eeea7 - rustc_query_system[397df17712590249]::query::plumbing::try_execute_query::<rustc_query_impl[291ba1fcadd92b61]::DynamicConfig<rustc_data_structures[f86a4f0d0152e187]::vec_cache::VecCache<rustc_span[59b99cb1407325ff]::def_id::LocalDefId, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[397df17712590249]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[291ba1fcadd92b61]::plumbing::QueryCtxt, false>
51: 0x7bb66b7ee90b - rustc_query_impl[291ba1fcadd92b61]::query_impl::check_well_formed::get_query_non_incr::__rust_end_short_backtrace
52: 0x7bb66b7ef475 - rustc_middle[9ee9ea6fc8845c53]::query::plumbing::query_ensure_error_guaranteed::<rustc_data_structures[f86a4f0d0152e187]::vec_cache::VecCache<rustc_span[59b99cb1407325ff]::def_id::LocalDefId, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[397df17712590249]::dep_graph::graph::DepNodeIndex>, ()>
53: 0x7bb66b7ef965 - rustc_hir_analysis[2b9e33d6773a99db]::check::wfcheck::check_mod_type_wf
54: 0x7bb66b7ef495 - rustc_query_impl[291ba1fcadd92b61]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[291ba1fcadd92b61]::query_impl::check_mod_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 1usize]>>
55: 0x7bb66bd66404 - rustc_query_system[397df17712590249]::query::plumbing::try_execute_query::<rustc_query_impl[291ba1fcadd92b61]::DynamicConfig<rustc_query_system[397df17712590249]::query::caches::DefaultCache<rustc_span[59b99cb1407325ff]::def_id::LocalModDefId, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[291ba1fcadd92b61]::plumbing::QueryCtxt, false>
56: 0x7bb66bd661a0 - rustc_query_impl[291ba1fcadd92b61]::query_impl::check_mod_type_wf::get_query_non_incr::__rust_end_short_backtrace
57: 0x7bb66b108374 - rustc_hir_analysis[2b9e33d6773a99db]::check_crate
58: 0x7bb66b1f8ce8 - rustc_interface[ad5173bb1fff4f1]::passes::run_required_analyses
59: 0x7bb66bd1c59e - rustc_interface[ad5173bb1fff4f1]::passes::analysis
60: 0x7bb66bd1c56f - rustc_query_impl[291ba1fcadd92b61]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[291ba1fcadd92b61]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 0usize]>>
61: 0x7bb66bdc0415 - rustc_query_system[397df17712590249]::query::plumbing::try_execute_query::<rustc_query_impl[291ba1fcadd92b61]::DynamicConfig<rustc_query_system[397df17712590249]::query::caches::SingleCache<rustc_middle[9ee9ea6fc8845c53]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[291ba1fcadd92b61]::plumbing::QueryCtxt, false>
62: 0x7bb66bdc014e - rustc_query_impl[291ba1fcadd92b61]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
63: 0x7bb66bd5ad9e - rustc_interface[ad5173bb1fff4f1]::passes::create_and_enter_global_ctxt::<core[1d264cc251a564c0]::option::Option<rustc_interface[ad5173bb1fff4f1]::queries::Linker>, rustc_driver_impl[bcf7efa42268b866]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
64: 0x7bb66bd99516 - rustc_interface[ad5173bb1fff4f1]::interface::run_compiler::<(), rustc_driver_impl[bcf7efa42268b866]::run_compiler::{closure#0}>::{closure#1}
65: 0x7bb66bc83511 - std[26cf95b4f122e720]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[ad5173bb1fff4f1]::util::run_in_thread_with_globals<rustc_interface[ad5173bb1fff4f1]::util::run_in_thread_pool_with_globals<rustc_interface[ad5173bb1fff4f1]::interface::run_compiler<(), rustc_driver_impl[bcf7efa42268b866]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
66: 0x7bb66bc839c8 - <<std[26cf95b4f122e720]::thread::Builder>::spawn_unchecked_<rustc_interface[ad5173bb1fff4f1]::util::run_in_thread_with_globals<rustc_interface[ad5173bb1fff4f1]::util::run_in_thread_pool_with_globals<rustc_interface[ad5173bb1fff4f1]::interface::run_compiler<(), rustc_driver_impl[bcf7efa42268b866]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[1d264cc251a564c0]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
67: 0x7bb66bc84f81 - std::sys::pal::unix::thread::Thread:🆕:thread_start::hc1bbaaa2227026bb
68: 0x7bb66d3cda94 - <unknown>
69: 0x7bb66d45aa34 - clone
70: 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: rustc 1.85.1 (4eb161250 2025-03-15) running on x86_64-unknown-linux-gnu
note: compiler flags: --crate-type lib -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
#0 [mir_borrowck] borrow-checking `<impl at src/lib.rs:22:1: 22:20>::subscribe::{closure#0}::{closure#0}`
#1 [mir_borrowck] borrow-checking `<impl at src/lib.rs:22:1: 22:20>::subscribe::{closure#0}`
end of query stack
note: no errors encountered even though delayed bugs were created
note: those delayed bugs will now be shown as internal compiler errors
error: internal compiler error: {OpaqueTypeKey { def_id: DefId(0:28 ~ playground[6412]::{impl#0}::subscribe::{opaque#0}), args: [D/#0, E/#1, H/#2, '?4] }: OpaqueTypeDecl { hidden_type: OpaqueHiddenType { span: src/lib.rs:27:5: 37:6 (#0), ty: Coroutine(DefId(0:29 ~ playground[6412]::{impl#0}::subscribe::{closure#0}), [D/#0, E/#1, H/#2, (), std::future::ResumeTy, (), (), CoroutineWitness(DefId(0:29 ~ playground[6412]::{impl#0}::subscribe::{closure#0}), [D/#0, E/#1, H/#2]), (&'?3 EventBus<D/#0>, H/#2)]) } }}
|
= note: delayed at compiler/rustc_infer/src/infer/opaque_types/table.rs:44:43 - disabled backtrace
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: rustc 1.85.1 (4eb161250 2025-03-15) running on x86_64-unknown-linux-gnu
note: compiler flags: --crate-type lib -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
end of query stack
The code is available in rust playground:
link
and the error is present for both stable, beta, nightly and both in debug and release builds: