Skip to content

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

Open
@la10736

Description

@la10736
Contributor

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::<rustc_errors::ExplicitBug>
   1: <rustc_errors::diagnostic::BugAbort as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   2: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>::{closure#0}
   3: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}
   4: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_opt<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
   5: rustc_middle::util::bug::bug_fmt
   6: <rustc_middle::ty::normalize_erasing_regions::NormalizeAfterErasingRegionsFolder as rustc_type_ir::fold::TypeFolder<rustc_middle::ty::context::TyCtxt>>::fold_ty
   7: <&rustc_middle::ty::list::RawList<(), rustc_middle::ty::generic_args::GenericArg> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with::<rustc_middle::ty::normalize_erasing_regions::NormalizeAfterErasingRegionsFolder>
   8: <rustc_symbol_mangling::v0::SymbolMangler as rustc_middle::ty::print::Printer>::print_impl_path
   9: <rustc_symbol_mangling::v0::SymbolMangler as rustc_middle::ty::print::Printer>::print_def_path
  10: <rustc_symbol_mangling::v0::SymbolMangler as rustc_middle::ty::print::Printer>::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::<std::collections::hash::set::Iter<rustc_middle::mir::mono::MonoItem>>
  14: rustc_monomorphize::partitioning::collect_and_partition_mono_items
      [... omitted 2 frames ...]
  15: rustc_codegen_ssa::base::codegen_crate::<rustc_codegen_llvm::LlvmCodegenBackend>
  16: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate
  17: rustc_interface::passes::start_codegen
  18: <rustc_interface::queries::Queries>::codegen_and_build_linker
  19: rustc_interface::interface::run_compiler::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
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_blockchain::header_metadata::CachedHeaderMetadata<sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::unchecked_extrinsic::UncheckedExtrinsic<sp_runtime::multiaddress::MultiAddress<sp_core::crypto::AccountId32, ()>, nh_runtime::RuntimeCall, sp_runtime::MultiSignature, (frame_system::extensions::check_non_zero_sender::CheckNonZeroSender<nh_runtime::Runtime>, frame_system::extensions::check_spec_version::CheckSpecVersion<nh_runtime::Runtime>, frame_system::extensions::check_tx_version::CheckTxVersion<nh_runtime::Runtime>, frame_system::extensions::check_genesis::CheckGenesis<nh_runtime::Runtime>, frame_system::extensions::check_mortality::CheckMortality<nh_runtime::Runtime>, frame_system::extensions::check_nonce::CheckNonce<nh_runtime::Runtime>, frame_system::extensions::check_weight::CheckWeight<nh_runtime::Runtime>, pallet_transaction_payment::ChargeTransactionPayment<nh_runtime::Runtime>)>>> as core::convert::From<&<sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<u32, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::unchecked_extrinsic::UncheckedExtrinsic<sp_runtime::multiaddress::MultiAddress<sp_core::crypto::AccountId32, ()>, nh_runtime::RuntimeCall, sp_runtime::MultiSignature, (frame_system::extensions::check_non_zero_sender::CheckNonZeroSender<nh_runtime::Runtime>, frame_system::extensions::check_spec_version::CheckSpecVersion<nh_runtime::Runtime>, frame_system::extensions::check_tx_version::CheckTxVersion<nh_runtime::Runtime>, frame_system::extensions::check_genesis::CheckGenesis<nh_runtime::Runtime>, frame_system::extensions::check_mortality::CheckMortality<nh_runtime::Runtime>, frame_system::extensions::check_nonce::CheckNonce<nh_runtime::Runtime>, frame_system::extensions::check_weight::CheckWeight<nh_runtime::Runtime>, pallet_transaction_payment::ChargeTransactionPayment<nh_runtime::Runtime>)>> as sp_runtime::traits::Block>::Header>>::from`
#1 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack

Activity

added
C-bugCategory: This is a bug.
I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.
on May 21, 2024
added
needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.
on May 21, 2024
added
S-needs-reproStatus: This issue has no reproduction and needs a reproduction to make progress.
on May 22, 2024
added
A-code-coverageArea: Source-based code coverage (-Cinstrument-coverage)
and removed
needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.
on Jun 4, 2024
la10736

la10736 commented on Jun 21, 2024

@la10736
ContributorAuthor

Ok, I have some bad and some good news.

The bad one is that this bug is landed in stable 1.79.0 😢

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.

changed the title [-]Coverage on nightly generate : maybe try to call `try_normalize_erasing_regions` instead [/-] [+]Coverage on stable 1.79.0 fails with : maybe try to call `try_normalize_erasing_regions` instead [/+] on Jun 21, 2024
la10736

la10736 commented on Jun 25, 2024

@la10736
ContributorAuthor

@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.

added
E-needs-mcveCall for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example
and removed
S-needs-reproStatus: This issue has no reproduction and needs a reproduction to make progress.
on Jun 25, 2024
ozgb

ozgb commented on Sep 5, 2024

@ozgb

I've run into this issue too, exactly the same setup (substrate project, build and test works fine, but coverage build fails with this error)

jieyouxu

jieyouxu commented on Sep 5, 2024

@jieyouxu
Member

cc @Zalathar maybe you have any ideas on how to make the example smaller?

Zalathar

Zalathar commented on Sep 5, 2024

@Zalathar
Contributor

Does the same issue occur when you do a non-coverage build with -Csymbol-mangling-version=v0?

Coverage enables that as a side-effect, so this might be a symbol-mangling issue rather than a coverage issue (e.g. see also #116303).

ozgb

ozgb commented on Sep 5, 2024

@ozgb

Does the same issue occur when you do a non-coverage build with -Csymbol-mangling-version=v0?

Yes! If I run with RUSTFLAGS="-Csymbol-mangling-version=v0" I get the same error

la10736

la10736 commented on Sep 5, 2024

@la10736
ContributorAuthor

I can confirm it too:

RUSTFLAGS="-Csymbol-mangling-version=v0" cargo build --release

meet the same issue.

added
I-prioritizeIssue: Indicates that prioritization has been requested for this issue.
on Sep 19, 2024
BoxyUwU

BoxyUwU commented on Sep 19, 2024

@BoxyUwU
Member

If this is reproducible with -Csymbol-mangling-version=v0 then this doesnt require nightly and is a real regression

apiraino

apiraino commented on Oct 7, 2024

@apiraino
Contributor

IIUC related to our tracking issue for v0 symbol mangling: #60705

@rustbot label -I-prioritize

removed
I-prioritizeIssue: Indicates that prioritization has been requested for this issue.
on Oct 7, 2024
djendara

djendara commented on Oct 11, 2024

@djendara

Facing the same issue here, in rustc:1.81.0. Build and test works, only coverage fails with the same ICE : Failed to normalize Alias(Projection, AliasTy {

gilescope

gilescope commented on Oct 22, 2024

@gilescope
Contributor

Could it be #127351 ? - appeared around the same time.

bliednov

bliednov commented on Jan 15, 2025

@bliednov

Our company has run into this issue too, blocking us from bumping the toolchain to higher versions.

The usual build works fine.
The following now fails:

RUSTFLAGS="-Csymbol-mangling-version=v0" cargo build --release
# also llvm-cov
cargo llvm-cov
# or simply
RUSTFLAGS="-Cinstrument-coverage" cargo build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-code-coverageArea: Source-based code coverage (-Cinstrument-coverage)C-bugCategory: This is a bug.E-needs-mcveCall for participation: This issue has a repro, but needs a Minimal Complete and Verifiable ExampleI-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.regression-from-stable-to-stablePerformance or correctness regression from one stable version to another.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @gilescope@bliednov@la10736@apiraino@Zalathar

        Issue actions

          Coverage on stable 1.79.0 fails with : maybe try to call `try_normalize_erasing_regions` instead · Issue #125353 · rust-lang/rust