Found unstable fingerprints for mir_borrowck, probably related to async code
Mingun opened this issue · 1 comments
Code
Unfortunately it is not reproduced anymore, so I cannot create a minimal example. The problem was reproduced in that state. Before that I've doing a rebase and compiled the 2 previous commits using the same command.
The bug happened on this commit:
https://github.com/Mingun/quick-xml/tree/rustc-panic
Checkout the branch and run in the root repo directory:
cargo test --all-featuresMeta
I use stable compiler:
rustc --version --verbose:
rustc 1.61.0 (fe5b13d68 2022-05-18)
binary: rustc
commit-hash: fe5b13d681f25ee6474be29d748c65adcd91f69e
commit-date: 2022-05-18
host: x86_64-pc-windows-msvc
release: 1.61.0
LLVM version: 14.0.0
I've also tried
cargo +nightly test --all-features
and (after small compilation fix)
cargo test --features async-tokio
as suggested by issue template, but problem did not reproduced. Also, after these commands it is no more reproduced by the original command. The compilation finishes successfully, although during panic it seems that borrow checker tried to complain about something.
Before the problem is arised, I've compiled similarly the same code (while I've worked on a PR for quick-xml) without problems. So this bug happened only once (but stable until I've run cargo test which seems to rewrite the file cache).
Error output
The full command output:
PS D:\Projects\quick-xml> cargo test --all-features
Compiling quick-xml v0.23.0 (D:\Projects\quick-xml)
error: lifetime may not live long enough
--> src\reader\mod.rs:141:39
|
137 | &mut self,
| - let's call the lifetime of this reference `'1`
...
141 | ) -> Result<Option<&'b [u8]>> {
| _______________________________________^
142 | | // search byte must be within the ascii range
143 | | debug_assert!(byte.is_ascii());
144 | |
... |
181 | | }
182 | | }
| |_________^ associated function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'1`
|
::: src\reader\async_reader.rs:21:27
|
21 | impl_buffered_source!('b, reader, async, await);
| -----------------------------------------------
| | |
| | lifetime `'b` defined here
| in this macro invocation
|
= note: this error originates in the macro `impl_buffered_source` (in Nightly builds, run with -Z macro-backtrace for more info)
error: lifetime may not live long enough
--> src\reader\mod.rs:180:17
|
137 | &mut self,
| - let's call the lifetime of this reference `'1`
...
180 | Ok(Some(&buf[start..]))
| ^^^^^^^^^^^^^^^^^^^^^^^ associated function was supposed to return data with lifetime `'1` but it is returning data with lifetime `'b`
|
::: src\reader\async_reader.rs:21:27
|
21 | impl_buffered_source!('b, reader, async, await);
| -----------------------------------------------
| | |
| | lifetime `'b` defined here
| in this macro invocation
|
= note: this error originates in the macro `impl_buffered_source` (in Nightly builds, run with -Z macro-backtrace for more info)
error: internal compiler error: encountered incremental compilation error with mir_borrowck(quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until)
|
= help: This is a known issue with the compiler. Run `cargo clean -p quick_xml` or `cargo clean` to allow your project to compile
= note: Please follow the instructions below to create a bug report with the provided information
= note: See <https://github.com/rust-lang/rust/issues/84970> for more information
thread 'rustc' panicked at 'Found unstable fingerprints for mir_borrowck(quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until): BorrowCheckResult { concrete_opaque_types: VecMap([(OpaqueTypeKey { def_id: DefId(0:6217 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until::{opaque#0}), substs: [R, ReFree(DefId(0:6215 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until), BrNamed(DefId(0:8720 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until::'_), '_)), ReFree(DefId(0:6215 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until), BrNamed(DefId(0:8720 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until::'_), '_)), ReFree(DefId(0:6215 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until), BrNamed(DefId(0:8721 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until::'_#1), '_))] }, OpaqueHiddenType { span: src\reader\mod.rs:141:39: 182:10 (#4938), ty: [type error] })]), closure_requirements: None, used_mut_upvars: [], tainted_by_errors: Some(ErrorGuaranteed(())) }', compiler\rustc_query_system\src\query\plumbing.rs:626:9
stack backtrace:
0: 0x7ffadc02988f - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h50aa8caf753a2b27
1: 0x7ffadc054c3a - core::fmt::write::h838fc71521d9a769
2: 0x7ffadc01c709 - <std::io::IoSliceMut as core::fmt::Debug>::fmt::h36f954dfa88567a7
3: 0x7ffadc02ceab - std::panicking::default_hook::h14f77031689d5a65
4: 0x7ffadc02ca9e - std::panicking::default_hook::h14f77031689d5a65
5: 0x7ffac8f02ee6 - rustc_driver[644f353906beda0e]::pretty::print_after_hir_lowering
6: 0x7ffadc02d78a - std::panicking::rust_panic_with_hook::h093296cdc6b43259
7: 0x7ffadc02d4dd - <std::panicking::begin_panic_handler::StrPanicPayload as core::panic::BoxMeUp>::get::h87de4eb99e2d660b
8: 0x7ffadc02a197 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h50aa8caf753a2b27
9: 0x7ffadc02d1b9 - rust_begin_unwind
10: 0x7ffadc092d15 - core::panicking::panic_fmt::h9a20e90cefbba781
11: 0x7ffacdb417e0 - rustc_query_system[36f3c4afb232c86b]::query::plumbing::incremental_verify_ich_cold
12: 0x7ffacc8def3e - <rustc_query_impl[5f7022dda011ac8e]::queries::global_backend_features as rustc_query_system[36f3c4afb232c86b]::query::config::QueryDescription<rustc_query_impl[5f7022dda011ac8e]::plumbing::QueryCtxt>>::describe
13: 0x7ffacc9030a5 - <rustc_query_impl[5f7022dda011ac8e]::queries::global_backend_features as rustc_query_system[36f3c4afb232c86b]::query::config::QueryDescription<rustc_query_impl[5f7022dda011ac8e]::plumbing::QueryCtxt>>::describe
14: 0x7ffacc83a819 - <rustc_query_impl[5f7022dda011ac8e]::queries::global_backend_features as rustc_query_system[36f3c4afb232c86b]::query::config::QueryDescription<rustc_query_impl[5f7022dda011ac8e]::plumbing::QueryCtxt>>::describe
15: 0x7ffacc934248 - <rustc_query_impl[5f7022dda011ac8e]::queries::global_backend_features as rustc_query_system[36f3c4afb232c86b]::query::config::QueryDescription<rustc_query_impl[5f7022dda011ac8e]::plumbing::QueryCtxt>>::describe
16: 0x7ffacd56a706 - <rustc_middle[f8c5bc87ecf9dc9e]::ty::context::TyCtxt>::mir_borrowck_opt_const_arg
17: 0x7ffacb7097c0 - <rustc_mir_transform[2dafa68c8673e644]::mir_keys::GatherCtors as rustc_hir[ff973f7ee110f744]::intravisit::Visitor>::visit_variant_data
18: 0x7ffacc644263 - <rustc_query_impl[5f7022dda011ac8e]::on_disk_cache::EncodedSourceFileId as core[14ebc1417b592300]::fmt::Debug>::fmt
19: 0x7ffacc6ff614 - <rustc_query_impl[5f7022dda011ac8e]::queries::global_backend_features as rustc_query_system[36f3c4afb232c86b]::query::config::QueryDescription<rustc_query_impl[5f7022dda011ac8e]::plumbing::QueryCtxt>>::describe
20: 0x7ffacc808ffe - <rustc_query_impl[5f7022dda011ac8e]::queries::global_backend_features as rustc_query_system[36f3c4afb232c86b]::query::config::QueryDescription<rustc_query_impl[5f7022dda011ac8e]::plumbing::QueryCtxt>>::describe
21: 0x7ffacc96ec41 - <rustc_query_impl[5f7022dda011ac8e]::queries::global_backend_features as rustc_query_system[36f3c4afb232c86b]::query::config::QueryDescription<rustc_query_impl[5f7022dda011ac8e]::plumbing::QueryCtxt>>::describe
22: 0x7ffacc622931 - <rustc_query_impl[5f7022dda011ac8e]::Queries as rustc_middle[f8c5bc87ecf9dc9e]::ty::query::QueryEngine>::try_mark_green
23: 0x7ffacb70b28f - <rustc_mir_transform[2dafa68c8673e644]::mir_keys::GatherCtors as rustc_hir[ff973f7ee110f744]::intravisit::Visitor>::visit_variant_data
Backtrace
I've rerun command with the environment variable set:
PS D:\Projects\quick-xml> $env:RUST_BACKTRACE=1
PS D:\Projects\quick-xml> cargo test --all-features
Compiling quick-xml v0.23.0 (D:\Projects\quick-xml)
error: lifetime may not live long enough
--> src\reader\mod.rs:141:39
|
137 | &mut self,
| - let's call the lifetime of this reference `'1`
...
141 | ) -> Result<Option<&'b [u8]>> {
| _______________________________________^
142 | | // search byte must be within the ascii range
143 | | debug_assert!(byte.is_ascii());
144 | |
... |
181 | | }
182 | | }
| |_________^ associated function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'1`
|
::: src\reader\async_reader.rs:21:27
|
21 | impl_buffered_source!('b, reader, async, await);
| -----------------------------------------------
| | |
| | lifetime `'b` defined here
| in this macro invocation
|
= note: this error originates in the macro `impl_buffered_source` (in Nightly builds, run with -Z macro-backtrace for more info)
error: lifetime may not live long enough
--> src\reader\mod.rs:180:17
|
137 | &mut self,
| - let's call the lifetime of this reference `'1`
...
180 | Ok(Some(&buf[start..]))
| ^^^^^^^^^^^^^^^^^^^^^^^ associated function was supposed to return data with lifetime `'1` but it is returning data with lifetime `'b`
|
::: src\reader\async_reader.rs:21:27
|
21 | impl_buffered_source!('b, reader, async, await);
| -----------------------------------------------
| | |
| | lifetime `'b` defined here
| in this macro invocation
|
= note: this error originates in the macro `impl_buffered_source` (in Nightly builds, run with -Z macro-backtrace for more info)
error: internal compiler error: encountered incremental compilation error with mir_borrowck(quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until)
|
= help: This is a known issue with the compiler. Run `cargo clean -p quick_xml` or `cargo clean` to allow your project to compile
= note: Please follow the instructions below to create a bug report with the provided information
= note: See <https://github.com/rust-lang/rust/issues/84970> for more information
thread 'rustc' panicked at 'Found unstable fingerprints for mir_borrowck(quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until): BorrowCheckResult { concrete_opaque_types: VecMap([(OpaqueTypeKey { def_id: DefId(0:6217 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until::{opaque#0}), substs: [R, ReFree(DefId(0:6215 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until), BrNamed(DefId(0:8720 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until::'_), '_)), ReFree(DefId(0:6215 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until), BrNamed(DefId(0:8720 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until::'_), '_)), ReFree(DefId(0:6215 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until), BrNamed(DefId(0:8721 ~ quick_xml[bff6]::reader::async_reader::{impl#0}::read_bytes_until::'_#1), '_))] }, OpaqueHiddenType { span: src\reader\mod.rs:141:39: 182:10 (#4938), ty: [type error] })]), closure_requirements: None, used_mut_upvars: [], tainted_by_errors: Some(ErrorGuaranteed(())) }', compiler\rustc_query_system\src\query\plumbing.rs:626:9
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
error: internal compiler error: unexpected panic
note: 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.61.0 (fe5b13d68 2022-05-18) running on x86_64-pc-windows-msvc
note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
#0 [mir_borrowck] borrow-checking `reader::async_reader::<impl at src\reader\async_reader.rs:20:1: 22:2>::read_bytes_until`
#1 [mir_drops_elaborated_and_const_checked] elaborating drops for `reader::async_reader::<impl at src\reader\async_reader.rs:20:1: 22:2>::read_bytes_until`
#2 [optimized_mir] optimizing MIR for `reader::async_reader::<impl at src\reader\async_reader.rs:20:1: 22:2>::read_bytes_until`
#3 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
error: could not compile `quick-xml` due to 3 previous errors
warning: build failed, waiting for other jobs to finish...
PS D:\Projects\quick-xml>