Skip to content

error updating smallvec in rustc #61549

Closed
@ehuss

Description

@ehuss

I'm trying to update rust-lang/rust to the latest smallvec (0.6.7 ➙ 0.6.9), and an running into an issue where rustc fails to compile:

error: internal compiler error: src/librustc/ty/relate.rs:773: impossible case reached: can't relate: '_#0r with Type(RustaceansAreAwesome)

I have narrowed down the change that breaks this to servo/rust-smallvec#137.

I don't know anything about smallvec and very little about rustc, so if anyone can help figure out what's wrong, I'd appreciate it. I'll keep digging a little, but it is unlikely that I'll be able to do more. This can be reproduced with cargo update -p smallvec; ./x.py build (on master, acda261).

backtrace
thread 'rustc' panicked at 'Box', src/librustc_errors/lib.rs:637:9
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /home/eric/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.25/src/backtrace/libunwind.rs:97
   1: backtrace::backtrace::trace_unsynchronized
             at /home/eric/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.25/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:47
   3: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:36
   4: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:197
   5: std::panicking::default_hook
             at src/libstd/panicking.rs:211
   6:  as core::ops::function::Fn>::call
             at ./src/liballoc/boxed.rs:760
   7: rustc::util::common::panic_hook
             at src/librustc/util/common.rs:40
   8: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:478
   9: std::panicking::begin_panic
             at ./src/libstd/panicking.rs:408
  10: rustc_errors::Handler::bug
             at src/librustc_errors/lib.rs:637
  11: rustc::util::bug::opt_span_bug_fmt::{{closure}}
             at src/librustc/util/bug.rs:36
  12: rustc::ty::context::tls::with_opt::{{closure}}
             at src/librustc/ty/context.rs:2079
  13: rustc::ty::context::tls::with_context_opt
             at src/librustc/ty/context.rs:2014
  14: rustc::ty::context::tls::with_opt
             at src/librustc/ty/context.rs:2079
  15: rustc::util::bug::opt_span_bug_fmt
             at src/librustc/util/bug.rs:32
  16: rustc::util::bug::bug_fmt
             at src/librustc/util/bug.rs:12
  17: ::relate
             at src/librustc/ty/relate.rs:773
  18: rustc::ty::relate::TypeRelation::relate
             at src/librustc/ty/relate.rs:43
  19: ::relate_with_variance
             at src/librustc/infer/sub.rs:59
  20: rustc::ty::relate::relate_substs::{{closure}}
             at src/librustc/ty/relate.rs:141
  21: core::ops::function::impls:: for &mut F>::call_once
             at ./src/libcore/ops/function.rs:279
  22: core::option::Option::map
             at ./src/libcore/option.rs:416
  23:  as core::iter::traits::iterator::Iterator>::next
             at ./src/libcore/iter/adapters/mod.rs:570
  24: < as core::iter::traits::collect::FromIterator>>::from_iter::Adapter as core::iter::traits::iterator::Iterator>::next
             at ./src/libcore/result.rs:1250
  25: <&mut I as core::iter::traits::iterator::Iterator>::next
             at ./src/libcore/iter/traits/iterator.rs:2608
  26:  as core::iter::traits::collect::Extend<::Item>>::extend
             at /home/eric/.cargo/registry/src/github.com-1ecc6299db9ec823/smallvec-0.6.9/lib.rs:1363
  27:  as core::iter::traits::collect::FromIterator<::Item>>::from_iter
             at /home/eric/.cargo/registry/src/github.com-1ecc6299db9ec823/smallvec-0.6.9/lib.rs:1339
  28:  as core::iter::traits::collect::FromIterator>>::from_iter
             at ./src/libcore/result.rs:1267
  29: core::iter::traits::iterator::Iterator::collect
             at ./src/libcore/iter/traits/iterator.rs:1466
  30:  as rustc::ty::context::InternIteratorElement>::intern_with
             at src/librustc/ty/context.rs:3002
  31: >::intern_with
             at src/librustc/ty/context.rs:2974
  32: rustc::ty::context::TyCtxt::mk_substs
             at src/librustc/ty/context.rs:2831
  33: rustc::ty::relate::relate_substs
             at src/librustc/ty/relate.rs:144
  34: ::relate
             at src/librustc/ty/relate.rs:293
  35: rustc::ty::relate::TypeRelation::relate
             at src/librustc/ty/relate.rs:43
  36: rustc::infer::higher_ranked::::higher_ranked_sub::{{closure}}
             at src/librustc/infer/higher_ranked/mod.rs:51
  37: rustc::infer::InferCtxt::commit_if_ok
             at src/librustc/infer/mod.rs:810
  38: rustc::infer::higher_ranked::::higher_ranked_sub
             at src/librustc/infer/higher_ranked/mod.rs:34
  39: ::binders
             at src/librustc/infer/sub.rs:184
  40:  as rustc::ty::relate::Relate>::relate
             at src/librustc/ty/relate.rs:723
  41: rustc::ty::relate::TypeRelation::relate
             at src/librustc/ty/relate.rs:43
  42: rustc::infer::at::Trace::sub::{{closure}}
             at src/librustc/infer/at.rs:227
  43: rustc::infer::InferCtxt::commit_if_ok
             at src/librustc/infer/mod.rs:810
  44: rustc::infer::at::Trace::sub
             at src/librustc/infer/at.rs:225
  45: rustc::infer::at::At::sub_exp
             at src/librustc/infer/at.rs:90
  46: rustc::infer::at::At::sup
             at src/librustc/infer/at.rs:103
  47: rustc::traits::select::SelectionContext::match_poly_trait_ref
             at src/librustc/traits/select.rs:3712
  48: rustc::traits::select::SelectionContext::match_where_clause_trait_ref
             at src/librustc/traits/select.rs:3697
  49: rustc::traits::select::SelectionContext::evaluate_where_clause::{{closure}}
             at src/librustc/traits/select.rs:1876
  50: rustc::traits::select::SelectionContext::evaluation_probe::{{closure}}
             at src/librustc/traits/select.rs:674
  51: rustc::infer::InferCtxt::probe
             at src/librustc/infer/mod.rs:842
  52: rustc::traits::select::SelectionContext::evaluation_probe
             at src/librustc/traits/select.rs:673
  53: rustc::traits::select::SelectionContext::evaluate_where_clause
             at src/librustc/traits/select.rs:1875
  54: rustc::traits::select::SelectionContext::assemble_candidates_from_caller_bounds
             at src/librustc/traits/select.rs:1859
  55: rustc::traits::select::SelectionContext::assemble_candidates
             at src/librustc/traits/select.rs:1692
  56: rustc::traits::select::SelectionContext::candidate_from_obligation_no_cache
             at src/librustc/traits/select.rs:1339
  57: rustc::traits::select::SelectionContext::candidate_from_obligation::{{closure}}
             at src/librustc/traits/select.rs:1226
  58: rustc::traits::select::SelectionContext::in_task::{{closure}}
             at src/librustc/traits/select.rs:1247
  59: rustc::dep_graph::graph::DepGraph::with_anon_task
             at src/librustc/dep_graph/graph.rs:370
  60: rustc::traits::select::SelectionContext::in_task
             at src/librustc/traits/select.rs:1245
  61: rustc::traits::select::SelectionContext::candidate_from_obligation
             at src/librustc/traits/select.rs:1226
  62: rustc::traits::select::SelectionContext::evaluate_stack
             at src/librustc/traits/select.rs:1023
  63: rustc::traits::select::SelectionContext::evaluate_trait_predicate_recursively::{{closure}}
             at src/librustc/traits/select.rs:871
  64: rustc::traits::select::SelectionContext::in_task::{{closure}}
             at src/librustc/traits/select.rs:1247
  65: rustc::dep_graph::graph::DepGraph::with_anon_task
             at src/librustc/dep_graph/graph.rs:370
  66: rustc::traits::select::SelectionContext::in_task
             at src/librustc/traits/select.rs:1245
  67: rustc::traits::select::SelectionContext::evaluate_trait_predicate_recursively
             at src/librustc/traits/select.rs:871
  68: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at src/librustc/traits/select.rs:733
  69: rustc::traits::select::SelectionContext::evaluate_predicates_recursively
             at src/librustc/traits/select.rs:696
  70: rustc::traits::select::SelectionContext::evaluate_candidate::{{closure}}
             at src/librustc/traits/select.rs:1071
  71: rustc::traits::select::SelectionContext::evaluation_probe::{{closure}}
             at src/librustc/traits/select.rs:674
  72: rustc::infer::InferCtxt::probe
             at src/librustc/infer/mod.rs:842
  73: rustc::traits::select::SelectionContext::evaluation_probe
             at src/librustc/traits/select.rs:673
  74: rustc::traits::select::SelectionContext::evaluate_candidate
             at src/librustc/traits/select.rs:1068
  75: rustc::traits::select::SelectionContext::evaluate_stack
             at src/librustc/traits/select.rs:1024
  76: rustc::traits::select::SelectionContext::evaluate_trait_predicate_recursively::{{closure}}
             at src/librustc/traits/select.rs:871
  77: rustc::traits::select::SelectionContext::in_task::{{closure}}
             at src/librustc/traits/select.rs:1247
  78: rustc::dep_graph::graph::DepGraph::with_anon_task
             at src/librustc/dep_graph/graph.rs:370
  79: rustc::traits::select::SelectionContext::in_task
             at src/librustc/traits/select.rs:1245
  80: rustc::traits::select::SelectionContext::evaluate_trait_predicate_recursively
             at src/librustc/traits/select.rs:871
  81: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
             at src/librustc/traits/select.rs:733
  82: rustc::traits::select::SelectionContext::evaluate_obligation_recursively::{{closure}}
             at src/librustc/traits/select.rs:664
  83: rustc::traits::select::SelectionContext::evaluation_probe::{{closure}}
             at src/librustc/traits/select.rs:674
  84: rustc::infer::InferCtxt::probe
             at src/librustc/infer/mod.rs:842
  85: rustc::traits::select::SelectionContext::evaluation_probe
             at src/librustc/traits/select.rs:673
  86: rustc::traits::select::SelectionContext::evaluate_obligation_recursively
             at src/librustc/traits/select.rs:663
  87: rustc_traits::evaluate_obligation::evaluate_obligation::{{closure}}
             at src/librustc_traits/evaluate_obligation.rs:32
  88: rustc::infer::InferCtxtBuilder::enter_with_canonical::{{closure}}
             at ./src/librustc/infer/mod.rs:509
  89: rustc::infer::InferCtxtBuilder::enter::{{closure}}
             at ./src/librustc/infer/mod.rs:520
  90: rustc::ty::context::GlobalCtxt::enter_local::{{closure}}::{{closure}}
             at ./src/librustc/ty/context.rs:1703
  91: rustc::ty::context::tls::enter_context::{{closure}}
             at ./src/librustc/ty/context.rs:1935
  92: rustc::ty::context::tls::set_tlv
             at ./src/librustc/ty/context.rs:1868
  93: rustc::ty::context::tls::enter_context
             at ./src/librustc/ty/context.rs:1934
  94: rustc::ty::context::GlobalCtxt::enter_local::{{closure}}
             at ./src/librustc/ty/context.rs:1702
  95: rustc::ty::context::tls::with_related_context::{{closure}}
             at ./src/librustc/ty/context.rs:2040
  96: rustc::ty::context::tls::with_context::{{closure}}
             at ./src/librustc/ty/context.rs:2024
  97: rustc::ty::context::tls::with_context_opt
             at ./src/librustc/ty/context.rs:2014
  98: rustc::ty::context::tls::with_context
             at ./src/librustc/ty/context.rs:2024
  99: rustc::ty::context::tls::with_related_context
             at ./src/librustc/ty/context.rs:2036
  100: rustc::ty::context::GlobalCtxt::enter_local
             at ./src/librustc/ty/context.rs:1694

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️P-highHigh priorityT-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