Skip to content

Hang after encountering overflow errors for huge types #132673

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
1 of 4 tasks
wxie7 opened this issue Nov 6, 2024 · 9 comments
Open
1 of 4 tasks

Hang after encountering overflow errors for huge types #132673

wxie7 opened this issue Nov 6, 2024 · 9 comments
Assignees
Labels
A-diagnostics Area: Messages for errors, warnings, and lints C-bug Category: This is a bug. I-hang Issue: The compiler never terminates, due to infinite loops, deadlock, livelock, etc. P-high High priority regression-from-stable-to-stable Performance or correctness regression from one stable version to another. S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@wxie7
Copy link

wxie7 commented Nov 6, 2024

Code

fn main() {
    let mut x = None;
    let y = x;
    let z = Default::default();
    let mut w = (&mut x, z, z);
    let a = (&mut None::<fn(&())>, y, None::<fn(&'static ())>);
    w = z;
}

Affected release channels

  • Previous Stable
  • Current Stable
  • Current Beta
  • Current Nightly

Rust Version

rustc 1.84.0-nightly (bc5cf99 2024-11-05)
binary: rustc
commit-hash: bc5cf99
commit-date: 2024-11-05
host: x86_64-unknown-linux-gnu
release: 1.84.0-nightly
LLVM version: 19.1.3

Current error output

No response

Backtrace

Anything else?

@wxie7 wxie7 added C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Nov 6, 2024
@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Nov 6, 2024
@fmease fmease added I-hang Issue: The compiler never terminates, due to infinite loops, deadlock, livelock, etc. and removed I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. labels Nov 6, 2024
@fmease fmease changed the title [ICE]: hang with specific compiler options Hang with specific compiler options Nov 6, 2024
@fmease

This comment has been minimized.

@fmease
Copy link
Member

fmease commented Nov 6, 2024

RUSTC_LOG=debug, excerpt:

     rustc_trait_selection::traits::fulfill::process_obligation 
       0ms DEBUG rustc_trait_selection::traits::fulfill pre-resolve, obligation=Obligation(predicate=Binder { value: TraitPredicate(<_ as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=129)
       rustc_trait_selection::traits::fulfill::process_trait_obligation trait_obligation=Obligation(predicate=Binder { value: TraitPredicate(<(&mut std::option::Option<_>, _, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=129)
         rustc_trait_selection::traits::select::poly_select obligation=Obligation(predicate=Binder { value: TraitPredicate(<(&mut std::option::Option<_>, _, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=129)
           rustc_trait_selection::traits::select::candidate_from_obligation stack=TraitObligationStack(Obligation(predicate=Binder { value: TraitPredicate(<(&mut std::option::Option<_>, _, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=129))
             rustc_middle::ty::print::default_print_def_path def_id=DefId(2:45807 ~ core[add1]::option::Option), args=[?11t]
               0ms DEBUG rustc_middle::ty::print key=DefKey { parent: Some(DefIndex(9544)), disambiguated_data: DisambiguatedDefPathData { data: TypeNs("Option"), disambiguator: 0 } }
             rustc_middle::ty::print::default_print_def_path def_id=DefId(2:36054 ~ core[add1]::marker::Sized), args=[(&'?391 mut std::option::Option<?11t>, ?403t, ?403t)]
               0ms DEBUG rustc_middle::ty::print key=DefKey { parent: Some(DefIndex(3424)), disambiguated_data: DisambiguatedDefPathData { data: TypeNs("Sized"), disambiguator: 0 } }
            14ms DEBUG rustc_errors::diagnostic Created new diagnostic
             rustc_middle::ty::print::default_print_def_path def_id=DefId(2:45807 ~ core[add1]::option::Option), args=[?11t]
               0ms DEBUG rustc_middle::ty::print key=DefKey { parent: Some(DefIndex(9544)), disambiguated_data: DisambiguatedDefPathData { data: TypeNs("Option"), disambiguator: 0 } }
             rustc_middle::ty::print::default_print_def_path def_id=DefId(2:45807 ~ core[add1]::option::Option), args=[?11t]
               0ms DEBUG rustc_middle::ty::print key=DefKey { parent: Some(DefIndex(9544)), disambiguated_data: DisambiguatedDefPathData { data: TypeNs("Option"), disambiguator: 0 } }
             rustc_middle::ty::print::default_print_def_path def_id=DefId(2:45807 ~ core[add1]::option::Option), args=[?11t]
               0ms DEBUG rustc_middle::ty::print key=DefKey { parent: Some(DefIndex(9544)), disambiguated_data: DisambiguatedDefPathData { data: TypeNs("Option"), disambiguator: 0 } }
          // repeats the two lines above ad infinitum
          // ...

@workingjubilee workingjubilee changed the title Hang with specific compiler options Hang in process_obligation Nov 6, 2024
@theemathas
Copy link
Contributor

Minimized reproducer:

fn main() {
    let z = Default::default();
    let mut w = (z, z);
    w = z;
}

Correctly gives an error on rust 1.77.0. Hangs on rust 1.78.0.

@rustbot label +regression-from-stable-to-stable

@rustbot rustbot added regression-from-stable-to-stable Performance or correctness regression from one stable version to another. I-prioritize Issue: Indicates that prioritization has been requested for this issue. labels Nov 6, 2024
@saethlin saethlin added S-has-bisection Status: a bisection has been found for this issue S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue and removed S-has-bisection Status: a bisection has been found for this issue labels Nov 6, 2024
@jieyouxu jieyouxu added the A-trait-system Area: Trait system label Nov 6, 2024
@theemathas
Copy link
Contributor

Another reproducer:

fn conjure<T>() -> T {
    panic!()
}

fn require_same<T>(_: T, _: T) {}

fn main() {
    let z = conjure();
    require_same((z, z), z);
}

@rustbot labels -A-traits

@rustbot rustbot removed the A-trait-system Area: Trait system label Nov 6, 2024
@fmease fmease added the A-trait-system Area: Trait system label Nov 6, 2024
@fmease
Copy link
Member

fmease commented Nov 6, 2024

Re-adding A-traits (trait system) cuz #132673 (comment) still hangs due to the trait solver. Just because you don't see any obvious trait bounds in the code doesn't mean it's not related to traits :P We still have implicit Sized bounds. The solver still tries to process ?x: Sized and (?y, ?y): Sized.

The following "chunk" repeats over and over (with differing parts like the depth):

rustc_trait_selection::traits::fulfill::process_obligation 
                 0ms DEBUG rustc_trait_selection::traits::fulfill pre-resolve, obligation=Obligation(predicate=Binder { value: TraitPredicate(<_ as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120)
                 rustc_trait_selection::traits::fulfill::process_trait_obligation trait_obligation=Obligation(predicate=Binder { value: TraitPredicate(<(_, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120)
                   rustc_trait_selection::traits::select::poly_select obligation=Obligation(predicate=Binder { value: TraitPredicate(<(_, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120)
                     rustc_trait_selection::traits::select::candidate_from_obligation stack=TraitObligationStack(Obligation(predicate=Binder { value: TraitPredicate(<(_, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120))
                       0ms DEBUG rustc_trait_selection::traits::select cache_fresh_trait_pred=Binder { value: TraitPredicate(<(FreshTy(0), FreshTy(0)) as std::marker::Sized>, polarity:Positive), bound_vars: [] }
                       0ms DEBUG rustc_trait_selection::traits::select CACHE HIT
                       0ms DEBUG rustc_trait_selection::traits::select return=Ok(Some(BuiltinCandidate { has_nested: true }))
                     rustc_trait_selection::traits::select::confirmation::confirm_candidate obligation=Obligation(predicate=Binder { value: TraitPredicate(<(_, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120), candidate=BuiltinCandidate { has_nested: true }
                       0ms DEBUG rustc_trait_selection::traits::select::confirmation confirm_builtin_candidate, obligation=Obligation(predicate=Binder { value: TraitPredicate(<(_, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120), has_nested=true
                       rustc_infer::infer::relate::higher_ranked::enter_forall_and_leak_universe binder=Binder { value: ?364t, bound_vars: [] }
                         0ms DEBUG rustc_infer::infer::relate::higher_ranked return=?364t
                       rustc_trait_selection::traits::normalize::normalize_with_depth_to depth=121, value=?364t
                         0ms DEBUG rustc_trait_selection::traits::normalize obligations.len=0
                         0ms DEBUG rustc_trait_selection::traits::normalize value=?364t
                         0ms DEBUG rustc_trait_selection::traits::normalize result=?364t, obligations.len=0
                         0ms DEBUG rustc_trait_selection::traits::normalize normalizer.obligations=[]
                       0ms DEBUG rustc_trait_selection::traits::select::confirmation obligations=[Obligation(predicate=Binder { value: TraitPredicate(<_ as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=0)]
                     0ms DEBUG rustc_trait_selection::traits::select return=Ok(Some(Builtin(Misc, [Obligation(predicate=Binder { value: TraitPredicate(<_ as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=121)])))
                   0ms DEBUG rustc_trait_selection::traits::fulfill selecting trait at depth 120 yielded Ok(Some)

With -Zverbose-internals:

rustc_trait_selection::traits::fulfill::process_obligation 
                 0ms DEBUG rustc_trait_selection::traits::fulfill pre-resolve, obligation=Obligation(predicate=Binder { value: TraitPredicate(<?127t as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42)
                 rustc_trait_selection::traits::fulfill::process_trait_obligation trait_obligation=Obligation(predicate=Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42)
                   rustc_trait_selection::traits::select::poly_select obligation=Obligation(predicate=Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42)
                     rustc_trait_selection::traits::select::candidate_from_obligation stack=TraitObligationStack(Obligation(predicate=Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42))
                       0ms DEBUG rustc_trait_selection::traits::select cache_fresh_trait_pred=Binder { value: TraitPredicate(<(FreshTy(0), FreshTy(0)) as std::marker::Sized>, polarity:Positive), bound_vars: [] }
                       0ms DEBUG rustc_trait_selection::traits::select CACHE HIT
                       0ms DEBUG rustc_trait_selection::traits::select return=Ok(Some(BuiltinCandidate { has_nested: true }))
                     rustc_trait_selection::traits::select::confirmation::confirm_candidate obligation=Obligation(predicate=Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42), candidate=BuiltinCandidate { has_nested: true }
                       0ms DEBUG rustc_trait_selection::traits::select::confirmation confirm_builtin_candidate, obligation=Obligation(predicate=Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42), has_nested=true
                       rustc_infer::infer::relate::higher_ranked::enter_forall_and_leak_universe binder=Binder { value: ?130t, bound_vars: [] }
                         0ms DEBUG rustc_infer::infer::relate::higher_ranked return=?130t
                       rustc_trait_selection::traits::normalize::normalize_with_depth_to depth=43, value=?130t
                         0ms DEBUG rustc_trait_selection::traits::normalize obligations.len=0
                         0ms DEBUG rustc_trait_selection::traits::normalize value=?130t
                         0ms DEBUG rustc_trait_selection::traits::normalize result=?130t, obligations.len=0
                         0ms DEBUG rustc_trait_selection::traits::normalize normalizer.obligations=[]
                       0ms DEBUG rustc_trait_selection::traits::select::confirmation obligations=[Obligation(predicate=Binder { value: TraitPredicate(<?130t as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=0)]
                     1ms DEBUG rustc_trait_selection::traits::select return=Ok(Some(Builtin(Misc, [Obligation(predicate=Binder { value: TraitPredicate(<?130t as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=43)])))
                   2ms DEBUG rustc_trait_selection::traits::fulfill selecting trait at depth 42 yielded Ok(Some)

@lqd
Copy link
Member

lqd commented Nov 6, 2024

From nightly-2024-02-23. 3406ada...397937d

Not super clear what may be the culprit as we don't have PR artifacts anymore, but #119989 involved the trait system.

@apiraino
Copy link
Contributor

apiraino commented Nov 6, 2024

WG-prioritization assigning priority (Zulip discussion).

@rustbot label -I-prioritize +P-high

Not super clear what may be the culprit as we don't have PR artifacts anymore, but #119989 involved the trait system.

cc @lcnr for perhaps insights here

@rustbot rustbot added P-high High priority and removed I-prioritize Issue: Indicates that prioritization has been requested for this issue. labels Nov 6, 2024
@lcnr
Copy link
Contributor

lcnr commented Nov 6, 2024

Caused by #119989 as we previously got an error when relating ?x <: ?y and ?x <: wrapper<?y> but now these two constraints cause infinite recursion and only error once they hit the recursion limit.

from what I can tell this hang does not occur in process_obligation 🤔 process_obligation slowly increments the recursion depth. We then get ordinary overflow errors. However, we did exponentially grow the type size of the affected tuples, pretty much ending up with a type tuple_n = (tuple_n-1, tuple_n-1). We then get a hang when printing that type for diagnostics. Looking at the RUSTC_LOG for the original example,we're just stuck in type printing.

@lcnr lcnr changed the title Hang in process_obligation Hang after encountering overflow errors for huge types Nov 6, 2024
@wesleywiser wesleywiser added A-diagnostics Area: Messages for errors, warnings, and lints and removed A-trait-system Area: Trait system labels Nov 7, 2024
@apiraino
Copy link
Contributor

apiraino commented Nov 7, 2024

Visited this issue during T-compiler triage on Zulip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-diagnostics Area: Messages for errors, warnings, and lints C-bug Category: This is a bug. I-hang Issue: The compiler never terminates, due to infinite loops, deadlock, livelock, etc. P-high High priority regression-from-stable-to-stable Performance or correctness regression from one stable version to another. S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests