Skip to content
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

compiletest fails when rustc prints too much JSON #115675

Closed
RalfJung opened this issue Sep 8, 2023 · 3 comments · Fixed by #115706
Closed

compiletest fails when rustc prints too much JSON #115675

RalfJung opened this issue Sep 8, 2023 · 3 comments · Fixed by #115706
Labels
A-testsuite Area: The testsuite used to check the correctness of rustc C-bug Category: This is a bug. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)

Comments

@RalfJung
Copy link
Member

RalfJung commented Sep 8, 2023

Sometimes a rustc ICE (or rustc invocation in general) can produce so much output that compiletest's logic to skip part of the output kicks in, and then that logic destroys the JSON format, and then compiletest fails. Then things become essentially impossible to debug, since the output you get looks like this (reduces to fit into a github issue):

---- [ui] tests/ui/abi/compatibility.rs stdout ----

error: test compilation failed although it shouldn't!
failed to decode compiler output as json: line: {"message":"univariant: field #4 comes after unsized field","code":null,"level":"error: internal compiler error","spans":[{"file_name":"/home/r/src/rust/rustc/tests/ui/abi/compatibility.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1,"is_primary":true,"text":[],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"delayed at compiler/rustc_middle/src/ty/layout.rs:286:23\n   0: <rustc_errors::HandlerInner>::emit_diagnostic\n             at ./compiler/rustc_errors/src/lib.rs:1335:29\n   1: <rustc_errors::HandlerInner>::delay_span_bug::<rustc_span::span_encoding::Span, alloc::string::String>\n             at ./compiler/rustc_errors/src/lib.rs:1614:9\n   2: <rustc_errors::Handler>::delay_span_bug::<rustc_span::span_encoding::Span, alloc::string::String>\n             at ./compiler/rustc_errors/src/lib.rs:1005:9\n   3: <rustc_session::session::Session>::delay_span_bug::<rustc_span::span_encoding::Span, alloc::string::String>\n             at ./compiler/rustc_session/src/session.rs:634:9\n   4: <rustc_middle::ty::layout::LayoutCx<rustc_middle::ty::context::TyCtxt> as rustc_abi::layout::LayoutCalculator>::delay_bug\n             at ./compiler/rustc_middle/src/ty/layout.rs:286:9\n   5: rustc_abi::layout::univariant::<rustc_middle::ty::layout::LayoutCx<rustc_middle::ty::context::TyCtxt>>\n             at ./compiler/rustc_abi/src/layout.rs:1009:13\n   6: <rustc_middle::ty::layout::LayoutCx<rustc_middle::ty::context::TyCtxt> as rustc_abi::layout::LayoutCalculator>::univariant\n             at ./compiler/rustc_abi/src/layout.rs:55:22\n   7: <rustc_middle::ty::layout::LayoutCx<rustc_middle::ty::context::TyCtxt> as rustc_abi::layout::LayoutCalculator>::layout_of_struct_or_enum::<rustc_ty_utils::layout::layout_of_uncached::{closure#10}, core::iter::adapters::flatten::Flatten<core::option::IntoIter<core::iter::adapters::map::Map<core::iter::adapters::map::Map<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<rustc_middle::ty::VariantDef>>, <rustc_index::slice::IndexSlice<rustc_abi::VariantIdx, rustc_middle::ty::VariantDef>>::iter_enumerated::{closure#0}>, <rustc_middle::ty::adt::AdtDef>::discriminants::{closure#0}>, rustc_ty_utils::layout::layout_of_uncached::{closure#11}::{closure#0}::{closure#0}>>>>\n             at ./compiler/rustc_abi/src/layout.rs:198:26\n   8: rustc_ty_utils::layout::layout_of_uncached\n             at ./compiler/rustc_ty_utils/src/layout.rs:505:32\n   9: rustc_ty_utils::layout::layout_of\n             at ./compiler/rustc_ty_utils/src/layout.rs:61:18\n  10: rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}\n             at ./compiler/rustc_query_impl/src/plumbing.rs:582:47\n  11: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./compiler/rustc_query_impl/src/plumbing.rs:506:18\n  12: rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}\n             at ./compiler/rustc_query_impl/src/plumbing.rs:578:25\n  13: <rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>)>>::call_once\n             at ./library/core/src/ops/function.rs:250:5\n  14: <rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false> as rustc_query_system::query::config::QueryConfig<rustc_query_impl::plumbing::QueryCtxt>>::compute\n             at ./compiler/rustc_query_impl/src/lib.rs:117:9\n  15: rustc_query_system::query::plumbing::execute_job_non_incr::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:458:72\n  16: rustc_middle::ty::context::tls::enter_context::<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:82:9\n  17: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::try_with::<rustc_middle::ty::context::tls::enter_context<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./library/std/src/thread/local.rs:270:16\n  18: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./library/std/src/thread/local.rs:246:9\n  19: rustc_middle::ty::context::tls::enter_context::<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:79:5\n  20: <rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query::<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}\n             at ./compiler/rustc_query_impl/src/plumbing.rs:149:13\n  21: rustc_middle::ty::context::tls::with_related_context::<<rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:133:9\n  22: rustc_middle::ty::context::tls::with_context::<rustc_middle::ty::context::tls::with_related_context<<rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:111:36\n  23: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_context<rustc_middle::ty::context::tls::with_related_context<<rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:100:18\n  24: rustc_middle::ty::context::tls::with_context::<rustc_middle::ty::context::tls::with_related_context<<rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:111:5\n  25: rustc_middle::ty::context::tls::with_related_context::<<rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:124:5\n  26: <rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query::<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>\n             at ./compiler/rustc_query_impl/src/plumbing.rs:134:9\n  27: rustc_query_system::query::plumbing::execute_job_non_incr::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:458:18\n  28: rustc_query_system::query::plumbing::execute_job::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:391:9\n  29: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:334:13\n  30: rustc_query_system::query::plumbing::get_query_non_incr::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:788:32\n  31: stacker::maybe_grow::<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::get_query_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>\n             at /home/r/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9\n  32: rustc_data_structures::stack::ensure_sufficient_stack::<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::get_query_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>\n             at ./compiler/rustc_data_structures/src/stack.rs:17:5\n  33: rustc_query_system::query::plumbing::get_query_non_incr::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:788:5\n  34: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace\n             at ./compiler/rustc_query_impl/src/plumbing.rs:556:26\n  35: rustc_middle::query::plumbing::query_get_at::<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>>\n             at ./compiler/rustc_middle/src/query/plumbing.rs:156:17\n  36: <rustc_middle::query::plumbing::TyCtxtAt>::layout_of\n             at ./compiler/rustc_middle/src/query/plumbing.rs:386:31\n  37: <rustc_middle::ty::layout::LayoutCx<rustc_middle::ty::context::TyCtxt> as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of\n             at ./compiler/rustc_middle/src/ty/layout.rs:685:13\n  38: <rustc_middle::ty::layout::LayoutCx<rustc_middle::ty::context::TyCtxt> as rustc_middle::ty::layout::LayoutOf>::layout_of\n             at ./compiler/rustc_middle/src/ty/layout.rs:672:9\n  39: rustc_ty_utils::abi::fn_abi_new_uncached::{closure#0}\n             at ./compiler/rustc_ty_utils/src/abi.rs:397:13\n  40: rustc_ty_utils::abi::fn_abi_new_uncached\n             at ./compiler/rustc_ty_utils/src/abi.rs:440:14\n  41: rustc_ty_utils::abi::fn_abi_of_fn_ptr\n             at ./compiler/rustc_ty_utils/src/abi.rs:216:5\n  42: rustc_query_impl::query_impl::fn_abi_of_fn_ptr::dynamic_query::{closure#2}::{closure#0}\n             at ./compiler/rustc_query_impl/src/plumbing.rs:582:47\n  43: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::fn_abi_of_fn_ptr::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./compiler/rustc_query_impl/src/plumbing.rs:506:18\n  44: rustc_query_impl::query_impl::fn_abi_of_fn_ptr::dynamic_query::{closure#2}\n             at ./compiler/rustc_query_impl/src/plumbing.rs:578:25\n  45: <rustc_query_impl::query_impl::fn_abi_of_fn_ptr::dynamic_query::{closure#2} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>)>>::call_once\n             at ./library/core/src/ops/function.rs:250:5\n  46: <rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false> as rustc_query_system::query::config::QueryConfig<rustc_query_impl::plumbing::QueryCtxt>>::compute\n             at ./compiler/rustc_query_impl/src/lib.rs:117:9\n  47: rustc_query_system::query::plumbing::execute_job_non_incr::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:458:72\n  48: rustc_middle::ty::context::tls::enter_context::<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:82:9\n  49: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::try_with::<rustc_middle::ty::context::tls::enter_context<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./library/std/src/thread/local.rs:270:16\n  50: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./library/std/src/thread/local.rs:246:9\n  51: rustc_middle::ty::context::tls::enter_context::<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:79:5\n  52: <rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query::<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}\n             at ./compiler/rustc_query_impl/src/plumbing.rs:149:13\n  53: rustc_middle::ty::context::tls::with_related_context::<<rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:133:9\n  54: rustc_middle::ty::context::tls::with_context::<rustc_middle::ty::context::tls::with_related_context<<rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:111:36\n  55: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_context<rustc_middle::ty::context::tls::with_related_context<<rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:100:18\n  56: rustc_middle::ty::context::tls::with_context::<rustc_middle::ty::context::tls::with_related_context<<rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:111:5\n  57: rustc_middle::ty::context::tls::with_related_context::<<rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:124:5\n  58: <rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query::<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>\n             at ./compiler/rustc_query_impl/src/plumbing.rs:134:9\n  59: rustc_query_system::query::plumbing::execute_job_non_incr::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:458:18\n  60: rustc_query_system::query::plumbing::execute_job::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:391:9\n  61: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:334:13\n  62: rustc_query_system::query::plumbing::get_query_non_incr::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:788:32\n  63: stacker::maybe_grow::<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::get_query_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>\n             at /home/r/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9\n  64: rustc_data_structures::stack::ensure_sufficient_stack::<rustc_middle::query::erase::Erased<[u8; 16]>, rustc_query_system::query::plumbing::get_query_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>\n             at ./compiler/rustc_data_structures/src/stack.rs:17:5\n  65: rustc_query_system::query::plumbing::get_query_non_incr::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:788:5\n  66: rustc_query_impl::query_impl::fn_abi_of_fn_ptr::get_query_non_incr::__rust_end_short_backtrace\n             at ./compiler/rustc_query_impl/src/plumbing.rs:556:26\n  67: rustc_middle::query::plumbing::query_get_at::<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<(rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig>, &rustc_middle::ty::list::List<rustc_middle::ty::Ty>)>, rustc_middle::query::erase::Erased<[u8; 16]>>>\n             at ./compiler/rustc_middle/src/query/plumbing.rs:156:17\n  68: <rustc_middle::query::plumbing::TyCtxtAt>::fn_abi_of_fn_ptr\n             at ./compiler/rustc_middle/src/query/plumbing.rs:386:31\n  69: <rustc_middle::ty::context::TyCtxt>::fn_abi_of_fn_ptr\n             at ./compiler/rustc_middle/src/query/plumbing.rs:377:17\n  70: rustc_passes::abi_test::dump_abi_of_fn_type\n             at ./compiler/rustc_passes/src/abi_test.rs:177:21\n  71: rustc_passes::abi_test::test_abi\n             at ./compiler/rustc_passes/src/abi_test.rs:24:21\n  72: rustc_interface::passes::analysis::{closure#5}\n             at ./compiler/rustc_interface/src/passes.rs:820:33\n  73: <rustc_data_structures::profiling::VerboseTimingGuard>::run::<(), rustc_interface::passes::analysis::{closure#5}>\n             at ./compiler/rustc_data_structures/src/profiling.rs:752:9\n  74: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#5}>\n             at ./compiler/rustc_session/src/utils.rs:12:9\n  75: rustc_interface::passes::analysis\n             at ./compiler/rustc_interface/src/passes.rs:820:5\n  76: rustc_query_impl::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}\n             at ./compiler/rustc_query_impl/src/plumbing.rs:582:47\n  77: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 1]>>\n             at ./compiler/rustc_query_impl/src/plumbing.rs:506:18\n  78: rustc_query_impl::query_impl::analysis::dynamic_query::{closure#2}\n             at ./compiler/rustc_query_impl/src/plumbing.rs:578:25\n  79: <rustc_query_impl::query_impl::analysis::dynamic_query::{closure#2} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, ())>>::call_once\n             at ./library/core/src/ops/function.rs:250:5\n  80: <rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false> as rustc_query_system::query::config::QueryConfig<rustc_query_impl::plumbing::QueryCtxt>>::compute\n             at ./compiler/rustc_query_impl/src/lib.rs:117:9\n  81: rustc_query_system::query::plumbing::execute_job_non_incr::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}\n             at ./compiler/rustc_query_system/src/query/plumbing.rs:458:72\n  82: rustc_middle::ty::context::tls::enter_context::<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 1]>>::{closure#0}\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:82:9\n  83: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::try_with::<rustc_middle::ty::context::tls::enter_context<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 1]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 1]>>\n             at ./library/std/src/thread/local.rs:270:16\n  84: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 1]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 1]>>\n             at ./library/std/src/thread/local.rs:246:9\n  85: rustc_middle::ty::context::tls::enter_context::<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 1]>>\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:79:5\n  86: <rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query::<rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}\n             at ./compiler/rustc_query_impl/src/plumbing.rs:149:13\n  87: rustc_middle::ty::context::tls::with_related_context::<<rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query<rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 1]>>::{closure#0}\n             at ./compiler/rustc_middle/src/ty/context/tls.rs:133:9\n  88: rustc_middle::ty::context::tls::with_context::

[snipped for github]
<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false> as rustc_query_system::query::config::QueryConfig<rustc_query_impl::plumbing::QueryCtxt>>::compute\n                        at ./compiler/rustc_query_impl/src/lib.rs:117:9\n             15: rustc_query_system::query::plumbing::execute_job_non_incr::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}\n                        at ./compiler/rustc_query_system/src/query/plumbing.rs:458:72\n             16: rustc_middle::ty::context::tls::enter_context::<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}\n                        at ./compiler/rustc_middle/src/ty/context/tls.rs:82:9\n             17: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::try_with::<rustc_middle::ty::context::tls::enter_context<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n                        at ./library/std/src/thread/local.rs:270:16\n             18: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n                        at ./library/std/src/thread/local.rs:246:9\n             19: rustc_middle::ty::context::tls::enter_context::<rustc_query_system::query::plumbing::execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n                        at ./compiler/rustc_middle/src/ty/context/tls.rs:79:5\n             20: <rustc_query_impl::plumbing::QueryC

<<<<<< SKIPPED 6198723 BYTES >>>>>>

ut.rs:1009:13\n              6: <rustc_middle::ty::layout::LayoutCx<rustc_middle::ty::context::TyCtxt> as rustc_abi::layout::LayoutCalculator>::univariant\n                        at ./compiler/rustc_abi/src/layout.rs:55:22\n              7: <rustc_middle::ty::layout::LayoutCx<rustc_middle::ty::context::TyCtxt> as rustc_abi::layout::LayoutCalculator>::layout_of_struct_or_enum::<rustc_ty_utils::layout::layout_of_uncached::{closure#10}, core::iter::adapters::flatten::Flatten<core::option::IntoIter<core::iter::adapters::map::Map<core::iter::adapters::map::Map<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<rustc_middle::ty::VariantDef>>, <rustc_index::slice::IndexSlice<rustc_abi::VariantIdx, rustc_middle::ty::VariantDef>>::iter_enumerated::{closure#0}>, <rustc_middle::ty::adt::AdtDef>::discriminants::{closure#0}>, rustc_ty_utils::layout::layout_of_uncached::{closure#11}::{closure#0}::{closure#0}>>>>\n                        at ./compiler/rustc_abi/src/layout.rs:198:26\n              8: rustc_ty_utils::layout::layout_of_uncached\n                        at ./compiler/rustc_ty_utils/src/layout.rs:505:32\n              9: rustc_ty_utils::layout::layout_of\n                        at ./compiler/rustc_ty_utils/src/layout.rs:61:18\n             10: rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}\n                        at ./compiler/rustc_query_impl/src/plumbing.rs:582:47\n             11: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>\n                        at ./compiler/rustc_query_impl/src/plumbing.rs:506:18\n             12: rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}\n                        at ./compiler/rustc_query_impl/src/plumbing.rs:578:25\n             13: <rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>)>>::call_once\n                        at ./library/core/src/ops/function.rs:250:5\n             14: 

[snipped for github]

<rustc_middle::ty::context::GlobalCtxt>::enter::<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure#6}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}\n                        at ./compiler/rustc_middle/src/ty/context.rs:595:37\n            104: rustc_middle::ty::context::tls::enter_context::<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure#6}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}\n                        at ./compiler/rustc_middle/src/ty/context/tls.rs:82:9\n            105: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::try_with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure#6}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>\n                        at ./library/std/src/thread/local.rs:270:16\n            106: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure#6}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>\n                        at ./library/std/src/thread/local.rs:246:9\n            107: rustc_middle::ty::context::tls::enter_context::<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure#6}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>\n                        at ./compiler/rustc_middle/src/ty/context/tls.rs:79:5\n            108: <rustc_middle::ty::context::GlobalCtxt>::enter::<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure#6}, core::result::Result<(), rustc_span::ErrorGuaranteed>>\n                        at ./compiler/rustc_middle/src/ty/context.rs:595:9\n            109: <rustc_interface::queries::QueryResult<&rustc_middle::ty::context::GlobalCtxt>>::enter::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure#6}>\n                        at ./compiler/rustc_interface/src/queries.rs:71:9\n            110: rustc_driver_impl::run_compiler::{closure#1}::{closure#2}\n                        at ./compiler/rustc_driver_impl/src/lib.rs:446:13\n            111: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>\n                        at ./compiler/rustc_interface/src/queries.rs:373:19\n            112: rustc_driver_impl::run_compiler::{closure#1}\n                        at ./compiler/rustc_driver_impl/src/lib.rs:387:22\n            113: rustc_interface::interface::run_compiler::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}::{closure#0}\n                        at ./compiler/rustc_interface/src/interface.rs:346:21\n            114: rustc_span::set_source_map::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}::{closure#0}>\n                        at ./compiler/rustc_span/src/lib.rs:1073:5\n            115: rustc_interface::interface::run_compiler::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}\n                        at ./compiler/rustc_interface/src/interface.rs:340:13\n            116: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>\n                        at /home/r/.cargo/registry/src/index.crates.io-6f17d22bba15001f/scoped-tls-1.0.1/src/lib.rs:137:9\n            117: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}>\n                        at ./compiler/rustc_span/src/lib.rs:123:5\n            118: rustc_interface::util::run_in_thread_with_globals::<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}\n                        at ./compiler/rustc_interface/src/util.rs:163:38\n            119: std::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>\n                        at ./library/std/src/sys_common/backtrace.rs:154:18\n            120: <std::thread::Builder>::spawn_unchecked_::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#1}::{closure#0}\n                        at ./library/std/src/thread/mod.rs:529:17\n            121: <core::panic::unwind_safe::AssertUnwindSafe<<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once\n                        at ./library/core/src/panic/unwind_safe.rs:271:9\n            122: std::panicking::try::do_call::<core::panic::unwind_safe::AssertUnwindSafe<<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#1}::{closure#0}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>\n                        at ./library/std/src/panicking.rs:526:40\n            123: std::panicking::try::<core::result::Result<(), rustc_span::ErrorGuaranteed>, core::panic::unwind_safe::AssertUnwindSafe<<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#1}::{closure#0}>>\n                        at ./library/std/src/panicking.rs:490:19\n            124: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#1}::{closure#0}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>\n                        at ./library/std/src/panic.rs:142:14\n            125: <std::thread::Builder>::spawn_unchecked_::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#1}\n                        at ./library/std/src/thread/mod.rs:528:30\n            126: <<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}\n                        at ./library/core/src/ops/function.rs:250:5\n            127: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once\n                        at ./library/alloc/src/boxed.rs:2007:9\n            128: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once\n                        at ./library/alloc/src/boxed.rs:2007:9\n            129: std::sys::unix::thread::Thread::new::thread_start\n                        at ./library/std/src/sys/unix/thread.rs:108:17\n            130: start_thread\n                        at ./nptl/pthread_create.c:444:8\n            131: __GI___clone3\n                        at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81\n           \n\n"}
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.74.0-dev running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -C codegen-units=1 -Z ui-testing -Z deduplicate-diagnostics=no -Z write-long-types-to-disk=no -C strip=debuginfo -C prefer-dynamic -C rpath -C debuginfo=0

query stack during panic:
end of query stack
{"message":"aborting due to 64 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 64 previous errors\n\n"}
thread '[ui] tests/ui/abi/compatibility.rs' panicked at src/tools/compiletest/src/json.rs:132:21:
explicit panic
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    [ui] tests/ui/abi/compatibility.rs

It actually looks a lot better on github than it does on the terminal, since on github it doesn't line-wrap. When this gets line-wrapped, you cannot even tell that there is a "SKIPPED" message in the middle, it's just a huge pile of raw JSON (basically the entire terminal backlog) that contains the backtrace in an unreadbale way.

Looking at the skipping logic, there are some indications that it tries to be JSON-aware, but clearly that's not working.

@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Sep 8, 2023
@ehuss
Copy link
Contributor

ehuss commented Sep 8, 2023

I suspect this may be a duplicate of #96229, #94322, and #92211.

@RalfJung
Copy link
Member Author

RalfJung commented Sep 9, 2023

Ouch, yeah.

Is that max-size logic really needed? And if yes, can we (a) increase the size to something much bigger, and (b) not print anything after the skipped parts so that one is more likely to notice?

@ehuss
Copy link
Contributor

ehuss commented Sep 9, 2023

The max-size logic is there to avoid OOM errors, which end up not printing anything at all. The current size limit was chosen to serve as an indicator of a test that is generating too much output (for example, it discovered #94327, which can be a problem for editors needing to ingest too much (useless) data). I imagine it can be raised a little bit, but I would caution against raising it too high.

@bors bors closed this as completed in 8e455db Sep 13, 2023
github-actions bot pushed a commit to rust-lang/miri that referenced this issue Sep 15, 2023
Make compiletest output truncation less disruptive

When the test output becomes too large, compiletest stops recording all of it. However:
- this can lead to invalid JSON, which then causes compiletest itself to throw further errors
- the note that output was truncated is in the middle of the output, with >100kb of text on each side; that makes it almost impossible to actually see that note in the terminal

So assuming that we do need to keep the output truncation, I propose that we only ever do a cut at the end, so that it is very clear by looking at the end of the log that truncation happened. I added a message at the beginning of the output as well. Also I added some logic to make it less likely that we'll cut things off in the middle of a JSON record. (I tested that successfully by reducing the output limit to something very low and running a few ui tests.) Furthermore I increased the max buffer size to 512KB; that's really not a lot of memory compared to how much RAM it takes to build rustc (it's ~25% more than the previous maximum HEAD+TAIL length). And finally, the information that things got truncated is now propagated to the higher levels, so that we can fail the test instead of comparing the truncated output with the reference.

Fixes rust-lang/rust#115675
Fixes rust-lang/rust#96229
Fixes rust-lang/rust#94322
Fixes rust-lang/rust#92211
@fmease fmease added A-testsuite Area: The testsuite used to check the correctness of rustc T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) C-bug Category: This is a bug. and removed needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. labels Sep 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-testsuite Area: The testsuite used to check the correctness of rustc C-bug Category: This is a bug. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants