rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
95.2k stars 12.28k forks source link

Coverage on stable 1.79.0 fails with : maybe try to call `try_normalize_erasing_regions` instead #125353

Open la10736 opened 2 months ago

la10736 commented 2 months ago

Code

Unfortunately I cannot provide a minimal example. I meet this issue while I'm trying to run coverage on nightly to experiment on coverage_attribute feature on an substrate based project.

I've experimented this issue with both nightly-2024-05-20 and nightly-2024-04-0`. I cannot bisect on it because the compilation time is too huge

cargo +nightly llvm-cov --workspace --lcov --output-path lcov.info

The good news is that botn cargo +nightly build cargo +nightly test work fine and the issue seams just related to the coverage stuff.

Meta

rustc --version --verbose:

rustc 1.80.0-nightly (b92758a9a 2024-05-20)
binary: rustc
commit-hash: b92758a9aef1cef7b79e2b72c3d8ba113e547f89
commit-date: 2024-05-20
host: x86_64-unknown-linux-gnu
release: 1.80.0-nightly
LLVM version: 18.1.6

Error output

rustc-ice-2024-05-21T08_17_56-165861.txt

error: internal compiler error: compiler/rustc_middle/src/ty/normalize_erasing_regions.rs:167:90: Failed to normalize &'{erased} Alias(Projection, AliasTy { args: [sp_runtime::generic::Block<sp_runtime::generic::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::UncheckedExtrinsic<sp_runtime::MultiAddress<sp_runtime::AccountId32, ()>, nh_runtime::RuntimeCall, sp_runtime::MultiSignature, (frame_system::CheckNonZeroSender<nh_runtime::Runtime>, frame_system::CheckSpecVersion<nh_runtime::Runtime>, frame_system::CheckTxVersion<nh_runtime::Runtime>, frame_system::CheckGenesis<nh_runtime::Runtime>, frame_system::CheckMortality<nh_runtime::Runtime>, frame_system::CheckNonce<nh_runtime::Runtime>, frame_system::CheckWeight<nh_runtime::Runtime>, pallet_transaction_payment::ChargeTransactionPayment<nh_runtime::Runtime>)>>], def_id: DefId(267:1413 ~ sp_runtime[adb8]::traits::Block::Header) }), maybe try to call `try_normalize_erasing_regions` instead
Backtrace

``` stack backtrace: 0: std::panicking::begin_panic:: 1: ::emit_producing_guarantee 2: rustc_middle::util::bug::opt_span_bug_fmt::::{closure#0} 3: rustc_middle::ty::context::tls::with_opt::::{closure#0}, !>::{closure#0} 4: rustc_middle::ty::context::tls::with_context_opt::::{closure#0}, !>::{closure#0}, !> 5: rustc_middle::util::bug::bug_fmt 6: >::fold_ty 7: <&rustc_middle::ty::list::RawList<(), rustc_middle::ty::generic_args::GenericArg> as rustc_type_ir::fold::TypeFoldable>::try_fold_with:: 8: ::print_impl_path 9: ::print_def_path 10: ::print_def_path 11: rustc_symbol_mangling::v0::mangle 12: rustc_symbol_mangling::symbol_name_provider [... omitted 1 frame ...] 13: rustc_monomorphize::partitioning::assert_symbols_are_distinct::> 14: rustc_monomorphize::partitioning::collect_and_partition_mono_items [... omitted 2 frames ...] 15: rustc_codegen_ssa::base::codegen_crate:: 16: ::codegen_crate 17: rustc_interface::passes::start_codegen 18: ::codegen_and_build_linker 19: rustc_interface::interface::run_compiler::, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1} ``` ```text note: compiler flags: --crate-type bin -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED] -C instrument-coverage note: some of the compiler flags provided by cargo are hidden query stack during panic: #0 [symbol_name] computing the symbol for `, sp_runtime::generic::unchecked_extrinsic::UncheckedExtrinsic, nh_runtime::RuntimeCall, sp_runtime::MultiSignature, (frame_system::extensions::check_non_zero_sender::CheckNonZeroSender, frame_system::extensions::check_spec_version::CheckSpecVersion, frame_system::extensions::check_tx_version::CheckTxVersion, frame_system::extensions::check_genesis::CheckGenesis, frame_system::extensions::check_mortality::CheckMortality, frame_system::extensions::check_nonce::CheckNonce, frame_system::extensions::check_weight::CheckWeight, pallet_transaction_payment::ChargeTransactionPayment)>>> as core::convert::From<&, sp_runtime::generic::unchecked_extrinsic::UncheckedExtrinsic, nh_runtime::RuntimeCall, sp_runtime::MultiSignature, (frame_system::extensions::check_non_zero_sender::CheckNonZeroSender, frame_system::extensions::check_spec_version::CheckSpecVersion, frame_system::extensions::check_tx_version::CheckTxVersion, frame_system::extensions::check_genesis::CheckGenesis, frame_system::extensions::check_mortality::CheckMortality, frame_system::extensions::check_nonce::CheckNonce, frame_system::extensions::check_weight::CheckWeight, pallet_transaction_payment::ChargeTransactionPayment)>> as sp_runtime::traits::Block>::Header>>::from` #1 [collect_and_partition_mono_items] collect_and_partition_mono_items end of query stack ```

la10736 commented 4 weeks ago

Ok, I have some bad and some good news.

The bad one is that this bug is landed in stable 1.79.0 :cry:

The good one is that I can give you a repo to reproduce it:

Clone https://github.com/HorizenLabs/zkVerify , here the follow command reproduce the issue:

cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info

That's a regression on stable from 1.78 to 1.79

I'm sorry, I know that's a huge but I don't know how to narrow it.

la10736 commented 3 weeks ago

@jieyouxu Now that this bug is landed on stable shall not be better to take another look on it? If there's something that I can do let me know.