Skip to content

ICE: OutputTypeParameterMismatch #117951

Open
@dwhjames

Description

@dwhjames

Meta

We have a weekly CI job with a build matrix of Rust versions

  • 1.65.0
  • stable
  • beta
  • nightly

The last passing build was 2023-10-24. The following is a chronology.


2023-10-24
All rust versions PASS ✅

'1.65.0-x86_64-unknown-linux-gnu'
latest update on 2022-11-03, rust version 1.65.0 (897e375 2022-11-02)

'stable-x86_64-unknown-linux-gnu'
latest update on 2023-10-05, rust version 1.73.0 (cc66ad4 2023-10-03)

'beta-x86_64-unknown-linux-gnu'
latest update on 2023-10-21, rust version 1.74.0-beta.4 (489647f 2023-10-21)

'nightly-x86_64-unknown-linux-gnu'
latest update on 2023-10-24, rust version 1.75.0-nightly (cd674d6 2023-10-24)


2023-10-31

PASS for 1.65.0, stable, and beta ✅

'nightly-x86_64-unknown-linux-gnu'
(exact version already GC’ed from CI systems but, reproduced with 2023-10-30 nightly)
FAIL ❌


2023-11-07

PASS for 1.65.0 and stable ✅

'beta-x86_64-unknown-linux-gnu'
latest update on 2023-10-21, rust version 1.74.0-beta.4 (489647f 2023-10-21)
PASS ✅

'nightly-x86_64-unknown-linux-gnu'
latest update on 2023-11-07, rust version 1.75.0-nightly (189d6c7 2023-11-06)
FAIL ❌


2023-11-14

PASS for 1.65.0 and stable ✅

'nightly-x86_64-unknown-linux-gnu'
latest update on 2023-11-14, rust version 1.76.0-nightly (ba7c7a3 2023-11-13)
PASS ✅

'beta-x86_64-unknown-linux-gnu'
latest update on 2023-11-13, rust version 1.75.0-beta.1 (782883f 2023-11-12)
FAIL ❌


Summary:

  • 1.75.0-nightly did succeed on 2023-10-24
  • 1.75.0-nightly was first observed to fail on 2023-10-31
  • 1.76.0-nightly now succeeds (2023-11-14)
  • 1.75.0-beta.1 was first observed to fail on 2023-11-14

Error output

Backtrace

error: internal compiler error: compiler/rustc_traits/src/codegen.rs:43:13: Encountered error `
    OutputTypeParameterMismatch(
      SelectionOutputTypeParameterMismatch {
        found_trait_ref: Binder { value: <fn(<round_digest::RoundDigestTag<<Dps as mpc_signing::protocols::cggmp21::DpsProtocol>::SendAllReport2> as mpc_signing::utils::VerifyDeserialize>::VerifyError) -> ds::VerifyError<Dps, Ds> {ds::VerifyError::<Dps, Ds>::Round2} as std::ops::FnOnce<(<round_digest::RoundDigestTag<<Dps as mpc_signing::protocols::cggmp21::DpsProtocol>::SendAllReport2> as mpc_signing::utils::VerifyDeserialize>::VerifyError,)>>, bound_vars: [] },
        expected_trait_ref: Binder { value: <fn(<round_digest::RoundDigestTag<<Dps as mpc_signing::protocols::cggmp21::DpsProtocol>::SendAllReport2> as mpc_signing::utils::VerifyDeserialize>::VerifyError) -> ds::VerifyError<Dps, Ds> {ds::VerifyError::<Dps, Ds>::Round2} as std::ops::FnOnce<(round_digest::VerifyError<<<Dps as mpc_signing::protocols::cggmp21::DpsProtocol>::SendAllReport2 as mpc_signing::utils::VerifyDeserialize>::VerifyError>,)>>, bound_vars: [] },
        terr: Sorts(ExpectedFound {
          expected: round_digest::VerifyError<Alias(Projection, AliasTy { args: [Alias(Projection, AliasTy { args: [Dps/#0], def_id: DefId(22:4767 ~ mpc_signing[4ddb]::protocols::cggmp21::dps_protocol::traits::DpsProtocol::SendAllReport2) })], def_id: DefId(22:3108 ~ mpc_signing[4ddb]::utils::zkp_stream::VerifyDeserialize::VerifyError) })>,
          found: Alias(Projection, AliasTy { args: [round_digest::RoundDigestTag<Alias(Projection, AliasTy { args: [Dps/#0], def_id: DefId(22:4767 ~ mpc_signing[4ddb]::protocols::cggmp21::dps_protocol::traits::DpsProtocol::SendAllReport2) })>], def_id: DefId(22:3108 ~ mpc_signing[4ddb]::utils::zkp_stream::VerifyDeserialize::VerifyError) }) }) }
    )` selecting `
      <fn(<round_digest::RoundDigestTag<<Dps as mpc_signing::protocols::cggmp21::DpsProtocol>::SendAllReport2> as mpc_signing::utils::VerifyDeserialize>::VerifyError)
        -> ds::VerifyError<Dps, Ds> {ds::VerifyError::<Dps, Ds>::Round2} as std::ops::FnOnce<(round_digest::VerifyError<<<Dps as mpc_signing::protocols::cggmp21::DpsProtocol>::SendAllReport2 as mpc_signing::utils::VerifyDeserialize>::VerifyError>,)>>
  ` during codegen

Capture of Nightly failure (2023-10-31) ❌
rustc-ice-2023-10-31T16_49_05-19815.txt

Capture of Beta failure (2023-11-15) ❌
rustc-ice-2023-11-15.txt

Code

From 2023-10-24 to today the source code has not changed. The code is not public, but could potentially be shared. Unfortunately, the code is complex due to the use of a declarative macro, so we do not currently have a minimization.

We would welcome some hints/suggestions about what code/context we could capture to improve this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.E-needs-bisectionCall for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustcI-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-needs-reproStatus: This issue has no reproduction and needs a reproduction to make progress.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions