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

ICE(async_await,futures_api,await_macro,generators): cannot relate bound region: ReLateBound(DebruijnIndex(1), BrAnon(2)) <= '_#1r #57084

Closed
stbuehler opened this issue Dec 23, 2018 · 8 comments
Assignees
Labels
A-async-await Area: Async & Await AsyncAwait-Polish Async-await issues that are part of the "polish" area E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@stbuehler
Copy link

I tried to write a generic async wrapper for something similar to tokio_reactor::PollEvented that calls poll_..., clear_... and yield depending on the io::Result of an operation and got the error mentioned in the subject.

I managed to reduce the code triggering it to this:

#![feature(async_await,futures_api,await_macro,generators)]

pub struct Foo;

impl Foo {
	async fn with<'a, F, R>(&'a self, f: F) -> R
	where
		F: Fn() -> R + 'a,
	{
		loop {
			match f() {
				_ => yield,
			}
		}
	}

	pub async fn run<'a>(&'a self, data: &'a [u8])
	{
		await!(self.with(move || {
			println!("{:p}", data);
		}))
	}
}

fn main() {
}

(Playground)

Probably related to #53989.

Full error message:

error: internal compiler error: src/librustc/infer/region_constraints/mod.rs:683: cannot relate bound region: ReLateBound(DebruijnIndex(1), BrAnon(2)) <= '_#1r

thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:538:9
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:72
   2: std::panicking::default_hook::{{closure}}
             at src/libstd/sys_common/backtrace.rs:60
             at src/libstd/panicking.rs:210
   3: std::panicking::default_hook
             at src/libstd/panicking.rs:225
   4: rustc::util::common::panic_hook
   5: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:492
   6: std::panicking::begin_panic
   7: rustc_errors::Handler::span_bug
   8: rustc::util::bug::opt_span_bug_fmt::{{closure}}
   9: rustc::ty::context::tls::with_opt::{{closure}}
  10: rustc::ty::context::tls::with_context_opt
  11: rustc::ty::context::tls::with_opt
  12: rustc::util::bug::opt_span_bug_fmt
  13: rustc::util::bug::span_bug_fmt
  14: rustc::infer::region_constraints::RegionConstraintCollector::make_subregion
  15: rustc::infer::region_constraints::RegionConstraintCollector::make_eqregion
  16: <rustc::infer::equate::Equate<'combine, 'infcx, 'gcx, 'tcx> as rustc::ty::relate::TypeRelation<'infcx, 'gcx, 'tcx>>::regions
  17: rustc::ty::relate::super_relate_tys
  18: rustc::infer::combine::<impl rustc::infer::InferCtxt<'infcx, 'gcx, 'tcx>>::super_combine_tys
  19: <rustc::infer::equate::Equate<'combine, 'infcx, 'gcx, 'tcx> as rustc::ty::relate::TypeRelation<'infcx, 'gcx, 'tcx>>::tys
  20: <rustc::ty::subst::Kind<'tcx> as rustc::ty::relate::Relate<'tcx>>::relate
  21: <smallvec::SmallVec<A> as core::iter::traits::FromIterator<<A as smallvec::Array>::Item>>::from_iter
  22: <I as rustc::ty::context::InternAs<[T], R>>::intern_with
  23: <rustc::ty::sty::TraitRef<'tcx> as rustc::ty::relate::Relate<'tcx>>::relate
  24: rustc::infer::InferCtxt::commit_if_ok
  25: rustc::traits::select::SelectionContext::match_impl
  26: rustc::infer::InferCtxt::probe
  27: rustc::ty::trait_def::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::for_each_relevant_impl
  28: rustc::traits::select::SelectionContext::assemble_candidates_from_impls
  29: rustc::traits::select::SelectionContext::assemble_candidates
  30: rustc::traits::select::SelectionContext::candidate_from_obligation_no_cache
  31: rustc::ty::context::tls::with_context
  32: rustc::dep_graph::graph::DepGraph::with_anon_task
  33: rustc::traits::select::SelectionContext::candidate_from_obligation
  34: rustc::traits::select::SelectionContext::evaluate_stack
  35: rustc::ty::context::tls::with_context
  36: rustc::dep_graph::graph::DepGraph::with_anon_task
  37: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  38: rustc::infer::InferCtxt::probe
  39: rustc::traits::select::SelectionContext::evaluate_stack
  40: rustc::ty::context::tls::with_context
  41: rustc::dep_graph::graph::DepGraph::with_anon_task
  42: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  43: rustc::infer::InferCtxt::probe
  44: rustc::traits::select::SelectionContext::evaluate_stack
  45: rustc::ty::context::tls::with_context
  46: rustc::dep_graph::graph::DepGraph::with_anon_task
  47: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  48: rustc::infer::InferCtxt::probe
  49: rustc::traits::select::SelectionContext::evaluate_stack
  50: rustc::ty::context::tls::with_context
  51: rustc::dep_graph::graph::DepGraph::with_anon_task
  52: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  53: rustc::infer::InferCtxt::probe
  54: rustc::traits::select::SelectionContext::evaluate_stack
  55: rustc::ty::context::tls::with_context
  56: rustc::dep_graph::graph::DepGraph::with_anon_task
  57: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  58: rustc::infer::InferCtxt::probe
  59: rustc::traits::select::SelectionContext::evaluate_stack
  60: rustc::ty::context::tls::with_context
  61: rustc::dep_graph::graph::DepGraph::with_anon_task
  62: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  63: rustc::infer::InferCtxt::probe
  64: rustc::traits::select::SelectionContext::evaluate_stack
  65: rustc::ty::context::tls::with_context
  66: rustc::dep_graph::graph::DepGraph::with_anon_task
  67: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  68: rustc::infer::InferCtxt::probe
  69: rustc::traits::select::SelectionContext::evaluate_stack
  70: rustc::ty::context::tls::with_context
  71: rustc::dep_graph::graph::DepGraph::with_anon_task
  72: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  73: rustc::infer::InferCtxt::probe
  74: rustc::traits::select::SelectionContext::evaluate_stack
  75: rustc::ty::context::tls::with_context
  76: rustc::dep_graph::graph::DepGraph::with_anon_task
  77: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  78: rustc::traits::select::SelectionContext::evaluate_obligation_recursively
  79: rustc::ty::context::tls::with_related_context
  80: rustc_traits::evaluate_obligation::evaluate_obligation
  81: rustc::ty::query::__query_compute::evaluate_obligation
  82: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors<'tcx> for rustc::ty::query::queries::evaluate_obligation<'tcx>>::compute
  83: rustc::ty::context::tls::with_context
  84: rustc::dep_graph::graph::DepGraph::with_task_impl
  85: rustc::ty::context::tls::with_related_context
  86: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::force_query_with_job
  87: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_get_with
  88: rustc::traits::query::evaluate_obligation::<impl rustc::infer::InferCtxt<'cx, 'gcx, 'tcx>>::evaluate_obligation
  89: rustc::traits::query::evaluate_obligation::<impl rustc::infer::InferCtxt<'cx, 'gcx, 'tcx>>::evaluate_obligation_no_overflow
  90: rustc::traits::type_known_to_meet_bound
  91: rustc::ty::context::tls::with_related_context
  92: rustc::infer::InferCtxtBuilder::enter
  93: rustc::ty::util::is_freeze_raw
  94: rustc::ty::query::__query_compute::is_freeze_raw
  95: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors<'tcx> for rustc::ty::query::queries::is_freeze_raw<'tcx>>::compute
  96: rustc::ty::context::tls::with_context
  97: rustc::dep_graph::graph::DepGraph::with_task_impl
  98: rustc::ty::context::tls::with_related_context
  99: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::force_query_with_job
query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `[static generator@src/main.rs:18:2: 22:3 self:&Foo, data:&[u8] for<'r, 's, 't0> {impl std::future::Future, ()}]: std::marker::Freeze`
#1 [is_freeze_raw] computing whether `[static generator@src/main.rs:18:2: 22:3 self:&'a Foo, data:&'a [u8] for<'r, 's, 't0> {impl std::future::Future, ()}]` is freeze
#2 [mir_validated] processing `Foo::run::{{closure}}`
#3 [mir_borrowck] processing `Foo::run::{{closure}}`
end of query stack
error: aborting due to previous error


note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.33.0-nightly (2d3e909e4 2018-12-22) running on x86_64-unknown-linux-gnu

note: compiler flags: -C debuginfo=2 -C incremental --crate-type bin

note: some of the compiler flags provided by cargo are hidden
@estebank estebank added I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ A-async-await Area: Async & Await labels Dec 23, 2018
@maghoff
Copy link

maghoff commented Dec 30, 2018

I experience a similar ICE, see https://github.com/maghoff/pixu.rs/tree/internal-compiler-error, particularly https://github.com/maghoff/pixu.rs/blob/internal-compiler-error/src/web.rs#L89-L98

I haven't been able to reduce the code as much.

Output from RUST_BACKTRACE=1 cargo check --verbose:

       Fresh semver-parser v0.7.0
       Fresh unicode-xid v0.1.0
       Fresh void v1.0.2
       Fresh rand_core v0.3.0
       Fresh nodrop v0.1.12
       Fresh stable_deref_trait v1.1.1
       Fresh pkg-config v0.3.14
       Fresh cc v1.0.25
       Fresh libc v0.2.43
       Fresh crossbeam-utils v0.5.0
       Fresh memoffset v0.2.1
       Fresh lazy_static v1.2.0
       Fresh scopeguard v0.3.3
       Fresh cfg-if v0.1.6
       Fresh slab v0.4.1
       Fresh futures v0.1.25
       Fresh lazycell v1.2.0
       Fresh unicode-xid v0.0.4
       Fresh byteorder v1.2.7
       Fresh itoa v0.4.3
       Fresh quote v0.3.15
       Fresh antidote v1.0.0
       Fresh pin-utils v0.1.0-alpha.3
       Fresh unicode-segmentation v1.2.1
       Fresh unicode-width v0.1.5
       Fresh fnv v1.0.6
       Fresh either v1.5.0
       Fresh strsim v0.7.0
       Fresh vec_map v0.8.1
       Fresh string v0.1.1
       Fresh indexmap v1.0.2
       Fresh try-lock v0.2.2
       Fresh bitflags v1.0.4
       Fresh ansi_term v0.11.0
       Fresh nom v2.2.1
       Fresh semver v0.9.0
       Fresh proc-macro2 v0.3.8
       Fresh unreachable v1.0.0
       Fresh rand_core v0.2.2
       Fresh arrayvec v0.4.7
       Fresh owning_ref v0.3.3
       Fresh iovec v0.1.2
       Fresh num_cpus v1.8.0
       Fresh atty v0.2.11
       Fresh time v0.1.40
       Fresh futures-core-preview v0.3.0-alpha.9
       Fresh log v0.4.6
       Fresh net2 v0.2.33
       Fresh tokio-executor v0.1.5
       Fresh synom v0.11.3
       Fresh syn v0.10.8
       Fresh scheduled-thread-pool v0.2.0
       Fresh heck v0.3.0
       Fresh textwrap v0.10.0
       Fresh itertools v0.6.5
       Fresh bart v0.1.4
       Fresh rustc_version v0.2.3
       Fresh num-traits v0.2.6
       Fresh quote v0.5.2
       Fresh smallvec v0.6.5
       Fresh rand v0.5.5
       Fresh crossbeam-epoch v0.5.2
       Fresh lock_api v0.1.4
       Fresh bytes v0.4.10
       Fresh futures-cpupool v0.1.8
       Fresh futures-channel-preview v0.3.0-alpha.9
       Fresh futures-io-preview v0.3.0-alpha.9
       Fresh proc-macro2 v0.4.20
       Fresh want v0.0.6
       Fresh mio v0.6.16
       Fresh tokio-timer v0.2.7
       Fresh tokio-current-thread v0.1.3
       Fresh syn v0.11.11
       Fresh r2d2 v0.8.3
       Fresh httparse v1.3.3
       Fresh clap v2.32.0
       Fresh num-integer v0.1.39
       Fresh syn v0.13.11
       Fresh crossbeam-deque v0.6.1
       Fresh libsqlite3-sys v0.9.3
       Fresh tokio-io v0.1.10
       Fresh http v0.1.13
       Fresh futures-sink-preview v0.3.0-alpha.9
       Fresh quote v0.6.9
       Fresh mio-uds v0.6.7
       Fresh num-iter v0.1.37
       Fresh chrono v0.4.6
       Fresh diesel_derives v1.3.0
       Fresh tokio-threadpool v0.1.8
       Fresh tokio-codec v0.1.1
       Fresh h2 v0.1.13
       Fresh futures-util-preview v0.3.0-alpha.9
       Fresh syn v0.15.18
       Fresh parking_lot_core v0.3.1
       Fresh num v0.1.42
       Fresh diesel v1.3.3
       Fresh tokio-fs v0.1.4
       Fresh futures-executor-preview v0.3.0-alpha.9
       Fresh structopt-derive v0.2.13
       Fresh parking_lot v0.6.4
       Fresh bart_derive v0.1.4
       Fresh migrations_internals v1.3.0
       Fresh r2d2-diesel v1.0.0
       Fresh futures-preview v0.3.0-alpha.9
       Fresh structopt v0.2.13
       Fresh tokio-reactor v0.1.6
       Fresh migrations_macros v1.3.0
       Fresh tokio-udp v0.1.2
       Fresh tokio-uds v0.2.3
       Fresh tokio-tcp v0.1.2
       Fresh diesel_migrations v1.3.0
       Fresh tokio v0.1.11
       Fresh hyper v0.12.13
    Checking pixurs v0.1.0 (/home/mag/prog/pixu.rs)
     Running `rustc --edition=2018 --crate-name pixurs src/main.rs --color never --crate-type bin --emit=dep-info,metadata -C debuginfo=2 -C metadata=03f370aa09650ede -C extra-filename=-03f370aa09650ede --out-dir /home/mag/prog/pixu.rs/target/debug/deps -C incremental=/home/mag/prog/pixu.rs/target/debug/incremental -L dependency=/home/mag/prog/pixu.rs/target/debug/deps --extern bart=/home/mag/prog/pixu.rs/target/debug/deps/libbart-0acdefd720acd480.rmeta --extern bart_derive=/home/mag/prog/pixu.rs/target/debug/deps/libbart_derive-cf2773f94b61f260.so --extern diesel=/home/mag/prog/pixu.rs/target/debug/deps/libdiesel-1b9d9efc48995914.rmeta --extern diesel_migrations=/home/mag/prog/pixu.rs/target/debug/deps/libdiesel_migrations-5626f494b61e0f3c.rmeta --extern futures=/home/mag/prog/pixu.rs/target/debug/deps/libfutures-ca5214bccca156ad.rmeta --extern hyper=/home/mag/prog/pixu.rs/target/debug/deps/libhyper-6ef51549110ec990.rmeta --extern libsqlite3_sys=/home/mag/prog/pixu.rs/target/debug/deps/liblibsqlite3_sys-217ecf305606ab35.rmeta --extern r2d2=/home/mag/prog/pixu.rs/target/debug/deps/libr2d2-1635b5caffc53137.rmeta --extern r2d2_diesel=/home/mag/prog/pixu.rs/target/debug/deps/libr2d2_diesel-601c7e4bd76aed0e.rmeta --extern structopt=/home/mag/prog/pixu.rs/target/debug/deps/libstructopt-2c57cc277b5f701c.rmeta --extern tokio=/home/mag/prog/pixu.rs/target/debug/deps/libtokio-efb54df8914dc6fc.rmeta -C target-cpu=native -L native=/home/mag/prog/pixu.rs/target/debug/build/libsqlite3-sys-ce71a4e9599e8d36/out`
warning: unreachable statement
   --> src/web.rs:113:5
    |
113 | /     let _accept = req.headers().get(http::header::ACCEPT)
114 | |         .map(|x| x.to_str())
115 | |         .transpose()
116 | |         .map_err(|_| Error::BadRequest)?;
    | |_________________________________________^
    |
    = note: #[warn(unreachable_code)] on by default

warning: unreachable expression
   --> src/web.rs:150:42
    |
150 |         response.header("last-modified", last_modified.to_string());
    |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^

error: internal compiler error: src/librustc/infer/region_constraints/mod.rs:683: cannot relate bound region: ReLateBound(DebruijnIndex(1), BrAnon(3)) <= '_#0r

thread 'main' panicked at 'Box<Any>', src/librustc_errors/lib.rs:538:9
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:72
   2: std::panicking::default_hook::{{closure}}
             at src/libstd/sys_common/backtrace.rs:60
             at src/libstd/panicking.rs:210
   3: std::panicking::default_hook
             at src/libstd/panicking.rs:225
   4: rustc::util::common::panic_hook
   5: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:492
   6: std::panicking::begin_panic
   7: rustc_errors::Handler::span_bug
   8: rustc::util::bug::opt_span_bug_fmt::{{closure}}
   9: rustc::ty::context::tls::with_opt::{{closure}}
  10: rustc::ty::context::tls::with_context_opt
  11: rustc::ty::context::tls::with_opt
  12: rustc::util::bug::opt_span_bug_fmt
  13: rustc::util::bug::span_bug_fmt
  14: rustc::infer::region_constraints::RegionConstraintCollector::make_subregion
  15: rustc::infer::region_constraints::RegionConstraintCollector::make_eqregion
  16: <rustc::infer::equate::Equate<'combine, 'infcx, 'gcx, 'tcx> as rustc::ty::relate::TypeRelation<'infcx, 'gcx, 'tcx>>::regions
  17: rustc::ty::relate::super_relate_tys
  18: rustc::infer::combine::<impl rustc::infer::InferCtxt<'infcx, 'gcx, 'tcx>>::super_combine_tys
  19: <rustc::infer::equate::Equate<'combine, 'infcx, 'gcx, 'tcx> as rustc::ty::relate::TypeRelation<'infcx, 'gcx, 'tcx>>::tys
  20: <rustc::ty::subst::Kind<'tcx> as rustc::ty::relate::Relate<'tcx>>::relate
  21: <smallvec::SmallVec<A> as core::iter::traits::FromIterator<<A as smallvec::Array>::Item>>::from_iter
  22: <I as rustc::ty::context::InternAs<[T], R>>::intern_with
  23: <rustc::ty::sty::TraitRef<'tcx> as rustc::ty::relate::Relate<'tcx>>::relate
  24: rustc::infer::InferCtxt::commit_if_ok
  25: rustc::traits::select::SelectionContext::match_impl
  26: rustc::infer::InferCtxt::probe
  27: rustc::ty::trait_def::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::for_each_relevant_impl
  28: rustc::traits::select::SelectionContext::assemble_candidates_from_impls
  29: rustc::traits::select::SelectionContext::assemble_candidates
  30: rustc::traits::select::SelectionContext::candidate_from_obligation_no_cache
  31: rustc::ty::context::tls::with_context
  32: rustc::dep_graph::graph::DepGraph::with_anon_task
  33: rustc::traits::select::SelectionContext::candidate_from_obligation
  34: rustc::traits::select::SelectionContext::evaluate_stack
  35: rustc::ty::context::tls::with_context
  36: rustc::dep_graph::graph::DepGraph::with_anon_task
  37: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  38: rustc::infer::InferCtxt::probe
  39: rustc::traits::select::SelectionContext::evaluate_stack
  40: rustc::ty::context::tls::with_context
  41: rustc::dep_graph::graph::DepGraph::with_anon_task
  42: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  43: rustc::infer::InferCtxt::probe
  44: rustc::traits::select::SelectionContext::evaluate_stack
  45: rustc::ty::context::tls::with_context
  46: rustc::dep_graph::graph::DepGraph::with_anon_task
  47: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  48: rustc::infer::InferCtxt::probe
  49: rustc::traits::select::SelectionContext::evaluate_stack
  50: rustc::ty::context::tls::with_context
  51: rustc::dep_graph::graph::DepGraph::with_anon_task
  52: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  53: rustc::infer::InferCtxt::probe
  54: rustc::traits::select::SelectionContext::evaluate_stack
  55: rustc::ty::context::tls::with_context
  56: rustc::dep_graph::graph::DepGraph::with_anon_task
  57: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  58: rustc::infer::InferCtxt::probe
  59: rustc::traits::select::SelectionContext::evaluate_stack
  60: rustc::ty::context::tls::with_context
  61: rustc::dep_graph::graph::DepGraph::with_anon_task
  62: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  63: rustc::infer::InferCtxt::probe
  64: rustc::traits::select::SelectionContext::evaluate_stack
  65: rustc::ty::context::tls::with_context
  66: rustc::dep_graph::graph::DepGraph::with_anon_task
  67: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  68: rustc::infer::InferCtxt::probe
  69: rustc::traits::select::SelectionContext::evaluate_stack
  70: rustc::ty::context::tls::with_context
  71: rustc::dep_graph::graph::DepGraph::with_anon_task
  72: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  73: rustc::infer::InferCtxt::probe
  74: rustc::traits::select::SelectionContext::evaluate_stack
  75: rustc::ty::context::tls::with_context
  76: rustc::dep_graph::graph::DepGraph::with_anon_task
  77: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  78: rustc::infer::InferCtxt::probe
  79: rustc::traits::select::SelectionContext::evaluate_stack
  80: rustc::ty::context::tls::with_context
  81: rustc::dep_graph::graph::DepGraph::with_anon_task
  82: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  83: rustc::infer::InferCtxt::probe
  84: rustc::traits::select::SelectionContext::evaluate_stack
  85: rustc::ty::context::tls::with_context
  86: rustc::dep_graph::graph::DepGraph::with_anon_task
  87: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  88: rustc::infer::InferCtxt::probe
  89: rustc::traits::select::SelectionContext::evaluate_stack
  90: rustc::ty::context::tls::with_context
  91: rustc::dep_graph::graph::DepGraph::with_anon_task
  92: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  93: rustc::infer::InferCtxt::probe
  94: rustc::traits::select::SelectionContext::evaluate_stack
  95: rustc::ty::context::tls::with_context
  96: rustc::dep_graph::graph::DepGraph::with_anon_task
  97: rustc::traits::select::SelectionContext::evaluate_predicate_recursively
  98: rustc::infer::InferCtxt::probe
  99: rustc::traits::select::SelectionContext::evaluate_stack
query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `futures_util::compat::compat03as01::Compat<std::pin::Pin<std::boxed::Box<impl core::future::future::Future>>>: std::marker::Send`
#1 [typeck_tables_of] processing `main`
#2 [typeck_item_bodies] type-checking all item bodies
end of query stack
error: aborting due to previous error


note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.33.0-nightly (790f4c566 2018-12-19) running on x86_64-unknown-linux-gnu

note: compiler flags: -C debuginfo=2 -C incremental -C target-cpu=native --crate-type bin

note: some of the compiler flags provided by cargo are hidden

error: Could not compile `pixurs`.

Caused by:
  process didn't exit successfully: `rustc --edition=2018 --crate-name pixurs src/main.rs --color never --crate-type bin --emit=dep-info,metadata -C debuginfo=2 -C metadata=03f370aa09650ede -C extra-filename=-03f370aa09650ede --out-dir /home/mag/prog/pixu.rs/target/debug/deps -C incremental=/home/mag/prog/pixu.rs/target/debug/incremental -L dependency=/home/mag/prog/pixu.rs/target/debug/deps --extern bart=/home/mag/prog/pixu.rs/target/debug/deps/libbart-0acdefd720acd480.rmeta --extern bart_derive=/home/mag/prog/pixu.rs/target/debug/deps/libbart_derive-cf2773f94b61f260.so --extern diesel=/home/mag/prog/pixu.rs/target/debug/deps/libdiesel-1b9d9efc48995914.rmeta --extern diesel_migrations=/home/mag/prog/pixu.rs/target/debug/deps/libdiesel_migrations-5626f494b61e0f3c.rmeta --extern futures=/home/mag/prog/pixu.rs/target/debug/deps/libfutures-ca5214bccca156ad.rmeta --extern hyper=/home/mag/prog/pixu.rs/target/debug/deps/libhyper-6ef51549110ec990.rmeta --extern libsqlite3_sys=/home/mag/prog/pixu.rs/target/debug/deps/liblibsqlite3_sys-217ecf305606ab35.rmeta --extern r2d2=/home/mag/prog/pixu.rs/target/debug/deps/libr2d2-1635b5caffc53137.rmeta --extern r2d2_diesel=/home/mag/prog/pixu.rs/target/debug/deps/libr2d2_diesel-601c7e4bd76aed0e.rmeta --extern structopt=/home/mag/prog/pixu.rs/target/debug/deps/libstructopt-2c57cc277b5f701c.rmeta --extern tokio=/home/mag/prog/pixu.rs/target/debug/deps/libtokio-efb54df8914dc6fc.rmeta -C target-cpu=native -L native=/home/mag/prog/pixu.rs/target/debug/build/libsqlite3-sys-ce71a4e9599e8d36/out` (exit code: 101)

@lqd
Copy link
Member

lqd commented Feb 22, 2019

The original minimized code doesn't ICE on the playground anymore.

The pixu.rs branch from the other comment doesn't build on nightly anymore, however it is just because of dependencies. If you update futures-core-preview from alpha.9 to alpha.13 in Cargo.toml, and rand with a cargo update, this branch will build without ICE-ing as well.

cc @cramertj

@cramertj
Copy link
Member

Nice! Closing-- if anyone repros, I can reopen. cc @withoutboats @nikomatsakis

@jonas-schievink
Copy link
Contributor

The playground example at the top might make a good regression test.

@jonas-schievink jonas-schievink added the E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. label Feb 26, 2019
@gilescope
Copy link
Contributor

I can repro that on the 2018-12-18 build so happy to roll the playground example as a regression test (unless anyone's already done it?).

@nikomatsakis nikomatsakis added the AsyncAwait-Polish Async-await issues that are part of the "polish" area label Mar 5, 2019
@nikomatsakis
Copy link
Contributor

Marking as blocking but it seems like @gilescope is all over this

pietroalbini added a commit to pietroalbini/rust that referenced this issue Mar 8, 2019
…e, r=petrochenkov

Regression test added for an async ICE.

Regression test for rust-lang#57084 (as suggested in issue).
@gilescope
Copy link
Contributor

Test in place, move to close @nikomatsakis ?

@jonas-schievink
Copy link
Contributor

Great, closing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-async-await Area: Async & Await AsyncAwait-Polish Async-await issues that are part of the "polish" area E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

No branches or pull requests

8 participants