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

Unexpected panic in rustc with async_stream #69355

Closed
swilcox3 opened this issue Feb 21, 2020 · 11 comments
Closed

Unexpected panic in rustc with async_stream #69355

swilcox3 opened this issue Feb 21, 2020 · 11 comments
Labels
A-async-await Area: Async & Await A-typesystem Area: The type system E-needs-bisection Call for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustc E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ ICEBreaker-Cleanup-Crew Helping to "clean up" bugs with minimal examples and bisections T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@swilcox3
Copy link

I got this rustc panic when trying to compile:

thread 'rustc' panicked at 'called `Result::unwrap()` on an `Err` value: DistinctSources(DistinctSources { begin: (Real("operations\\test-ops-client\\src\\main.rs"), BytePos(0)), end: (Macros("::async_stream::stream"), BytePos(9989972)) })', src\libcore\result.rs:1165:5
stack backtrace:
   0:     0x7ffaf8df5609 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h3466f2fd722d78c7
   1:     0x7ffaf8e2391b - core::fmt::write::h2e5f3c8207405fe6
   2:     0x7ffaf8de8b24 - <std::io::IoSliceMut as core::fmt::Debug>::fmt::hd136e41cddf77af8
   3:     0x7ffaf8df9c19 - std::panicking::take_hook::h5e35238a75e1277c
   4:     0x7ffaf8df986c - std::panicking::take_hook::h5e35238a75e1277c
   5:     0x7ffacd3324a4 - rustc_driver::report_ice::h60b444f19204d6f2
   6:     0x7ffaf8dfa491 - std::panicking::rust_panic_with_hook::hf321b2839bff13c6
   7:     0x7ffaf8df9fe0 - std::panicking::begin_panic_fmt::h21e799b306cf0414
   8:     0x7ffaf8df9ec9 - rust_begin_unwind
   9:     0x7ffaf8e1cdad - core::panicking::panic_fmt::hf55c59c691ea5230
  10:     0x7ffaf8e1cfff - core::result::unwrap_failed::hb4c9c636ae774cad
  11:     0x7ffacef762fe - rustc_errors::emitter::is_case_difference::h091da5cba1b96b51
  12:     0x7ffacef68c70 - rustc_errors::emitter::HumanReadableErrorType::new_emitter::hca9c55c355516f51
  13:     0x7ffacef6a395 - <rustc_errors::emitter::EmitterWriter as rustc_errors::emitter::Emitter>::emit_diagnostic::h808a35aa83193d2a
  14:     0x7ffaced6d7a3 - <syntax::json::JsonEmitter as rustc_errors::emitter::Emitter>::emit_diagnostic::h351ab0a60aa6a89e
  15:     0x7ffacef647ea - rustc_errors::HandlerInner::emit_diagnostic::h1a8d795d29bc338e
  16:     0x7ffacef66695 - rustc_errors::diagnostic_builder::DiagnosticBuilder::emit::h3428ff13eb123a61
  17:     0x7ffacd9b5448 - rustc_typeck::check::demand::<impl rustc_typeck::check::FnCtxt>::demand_coerce::h43d05335ebaf7db6
  18:     0x7ffacd9c06da - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  19:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  20:     0x7ffacd9f8ab3 - rustc_typeck::check::FnCtxt::self_type_matches_expected_vid::h7fe56008994db4e9
  21:     0x7ffacd9dee07 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h5564bd803335aae4
  22:     0x7ffacd9dce25 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h5564bd803335aae4
  23:     0x7ffacd9bb75b - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  24:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  25:     0x7ffacd9c06c3 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  26:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  27:     0x7ffacd9f8ab3 - rustc_typeck::check::FnCtxt::self_type_matches_expected_vid::h7fe56008994db4e9
  28:     0x7ffacd9f6dfc - rustc_typeck::check::FnCtxt::field_ty::h7ef132d44fc79116
  29:     0x7ffacd9beeff - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  30:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  31:     0x7ffacd9a5332 - rustc_typeck::check::_match::<impl rustc_typeck::check::FnCtxt>::check_match::h3d8321df124299a8
  32:     0x7ffacd9bbca5 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  33:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  34:     0x7ffacd9fbfe9 - rustc_typeck::check::FnCtxt::check_stmt::hcff3dc6a1015e719
  35:     0x7ffacd9fc726 - rustc_typeck::check::FnCtxt::check_block_no_value::h30619d76466cd3f8
  36:     0x7ffacd9bb772 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  37:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  38:     0x7ffacd9fc764 - rustc_typeck::check::FnCtxt::check_block_no_value::h30619d76466cd3f8
  39:     0x7ffacd9bb772 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  40:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  41:     0x7ffacd9c8b8e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  42:     0x7ffacd9e68bf - <rustc_typeck::check::GatherLocalsVisitor as rustc::hir::intravisit::Visitor>::visit_pat::h4c7251dcac30d4e1
  43:     0x7ffacd9da694 - rustc_typeck::check::closure::<impl rustc_typeck::check::FnCtxt>::check_expr_closure::h0fea02b47d7c163f
  44:     0x7ffacd9bb392 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  45:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  46:     0x7ffacd9f8ab3 - rustc_typeck::check::FnCtxt::self_type_matches_expected_vid::h7fe56008994db4e9
  47:     0x7ffacd9dee07 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h5564bd803335aae4
  48:     0x7ffacd9dce25 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h5564bd803335aae4
  49:     0x7ffacd9bb75b - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  50:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  51:     0x7ffacd9f8ab3 - rustc_typeck::check::FnCtxt::self_type_matches_expected_vid::h7fe56008994db4e9
  52:     0x7ffacd9dee07 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h5564bd803335aae4
  53:     0x7ffacd9dce25 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h5564bd803335aae4
  54:     0x7ffacd9bb75b - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  55:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  56:     0x7ffacd9fc764 - rustc_typeck::check::FnCtxt::check_block_no_value::h30619d76466cd3f8
  57:     0x7ffacd9bb772 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  58:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  59:     0x7ffacd9fb943 - rustc_typeck::check::FnCtxt::check_decl_initializer::h0ca814ce9278e422
  60:     0x7ffacd9fb9ec - rustc_typeck::check::FnCtxt::check_decl_local::he78cc21692c86e5b
  61:     0x7ffacd9fbe03 - rustc_typeck::check::FnCtxt::check_stmt::hcff3dc6a1015e719
  62:     0x7ffacd9fc726 - rustc_typeck::check::FnCtxt::check_block_no_value::h30619d76466cd3f8
  63:     0x7ffacd9bb772 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  64:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  65:     0x7ffacd9bb3ae - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  66:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  67:     0x7ffacd9fc764 - rustc_typeck::check::FnCtxt::check_block_no_value::h30619d76466cd3f8
  68:     0x7ffacd9bb772 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  69:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  70:     0x7ffacd9c8b8e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  71:     0x7ffacd9e68bf - <rustc_typeck::check::GatherLocalsVisitor as rustc::hir::intravisit::Visitor>::visit_pat::h4c7251dcac30d4e1
  72:     0x7ffacd9da694 - rustc_typeck::check::closure::<impl rustc_typeck::check::FnCtxt>::check_expr_closure::h0fea02b47d7c163f
  73:     0x7ffacd9bb392 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  74:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  75:     0x7ffacd9f8ab3 - rustc_typeck::check::FnCtxt::self_type_matches_expected_vid::h7fe56008994db4e9
  76:     0x7ffacd9dee07 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h5564bd803335aae4
  77:     0x7ffacd9dce25 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h5564bd803335aae4
  78:     0x7ffacd9bb75b - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  79:     0x7ffacd9bac4e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  80:     0x7ffacd9c8b8e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::ha50a9bce1da0e041
  81:     0x7ffacd9e68bf - <rustc_typeck::check::GatherLocalsVisitor as rustc::hir::intravisit::Visitor>::visit_pat::h4c7251dcac30d4e1
  82:     0x7ffacd93caae - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
  83:     0x7ffacd9e561f - <rustc_typeck::check::CheckItemTypesVisitor as rustc::hir::itemlikevisit::ItemLikeVisitor>::visit_item::h68ee94f62923f0ab
  84:     0x7ffacd87251f - <rustc_typeck::check::autoderef::AutoderefKind as core::fmt::Debug>::fmt::h30c18b8ae1ae903e
  85:     0x7ffacd89b23c - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
  86:     0x7ffacda90920 - <rustc_typeck::variance::test::VarianceTest as rustc::hir::itemlikevisit::ItemLikeVisitor>::visit_item::hfd5a16d343a6a78f
  87:     0x7ffacd8d30d3 - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
  88:     0x7ffacd87251f - <rustc_typeck::check::autoderef::AutoderefKind as core::fmt::Debug>::fmt::h30c18b8ae1ae903e
  89:     0x7ffacd89b23c - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
  90:     0x7ffacda90920 - <rustc_typeck::variance::test::VarianceTest as rustc::hir::itemlikevisit::ItemLikeVisitor>::visit_item::hfd5a16d343a6a78f
  91:     0x7ffacd8d30d3 - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
  92:     0x7ffacd974283 - rustc_typeck::collect::checked_type_of::hdca92e0dbef378db
  93:     0x7ffacd9733fc - <rustc_typeck::collect::has_late_bound_regions::LateBoundRegionsDetector as rustc::hir::intravisit::Visitor>::visit_lifetime::h3e50b77d783b7191
  94:     0x7ffacd8741fc - <rustc_typeck::check::autoderef::AutoderefKind as core::fmt::Debug>::fmt::h30c18b8ae1ae903e
  95:     0x7ffacd89ae3c - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
  96:     0x7ffacda99b20 - <rustc_typeck::variance::test::VarianceTest as rustc::hir::itemlikevisit::ItemLikeVisitor>::visit_item::hfd5a16d343a6a78f
  97:     0x7ffacd9048e4 - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
  98:     0x7ffacda80322 - <rustc_typeck::variance::test::VarianceTest as rustc::hir::itemlikevisit::ItemLikeVisitor>::visit_item::hfd5a16d343a6a78f
  99:     0x7ffacd9541c3 - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
 100:     0x7ffacda87728 - <rustc_typeck::variance::test::VarianceTest as rustc::hir::itemlikevisit::ItemLikeVisitor>::visit_item::hfd5a16d343a6a78f
 101:     0x7ffacd96f661 - <rustc_typeck::collect::CollectItemTypesVisitor as rustc::hir::intravisit::Visitor>::visit_item::h083fc1a618ad5da1
 102:     0x7ffacd875389 - <rustc_typeck::check::autoderef::AutoderefKind as core::fmt::Debug>::fmt::h30c18b8ae1ae903e
 103:     0x7ffacd96ee04 - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
 104:     0x7ffacd87352d - <rustc_typeck::check::autoderef::AutoderefKind as core::fmt::Debug>::fmt::h30c18b8ae1ae903e
 105:     0x7ffacd89b4fc - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
 106:     0x7ffacda927b9 - <rustc_typeck::variance::test::VarianceTest as rustc::hir::itemlikevisit::ItemLikeVisitor>::visit_item::hfd5a16d343a6a78f
 107:     0x7ffacd8e31af - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
 108:     0x7ffacd89bd13 - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::he86427c31a261a0c
 109:     0x7ffacd8671b7 - rustc_typeck::check_crate::h0c1d8c4e90985630
 110:     0x7ffacd86596d - rustc_typeck::check_crate::h0c1d8c4e90985630
 111:     0x7ffacd40cef2 - rustc_interface::passes::BoxedResolver::to_resolver_outputs::haf1c08e8f06e50a4
 112:     0x7ffacd37db93 - <rustc_driver::Compilation as core::fmt::Debug>::fmt::h95cfe5dcbe5f474b
 113:     0x7ffacd399d2d - <rustc_driver::Compilation as core::fmt::Debug>::fmt::h95cfe5dcbe5f474b
 114:     0x7ffacd30d0bf - <rustc_traits::chalk_context::ChalkContext as chalk_engine::context::ContextOps<rustc_traits::chalk_context::ChalkArenas>>::canonical::hebd46e34a4bbaab5
 115:     0x7ffacd32149d - <syntax_pos::symbol::LocalInternedString as core::fmt::Display>::fmt::hbc988d2f67a63424
 116:     0x7ffacd39b14b - <rustc_driver::Compilation as core::fmt::Debug>::fmt::h95cfe5dcbe5f474b
 117:     0x7ffacd435e9e - rustc_interface::passes::BoxedGlobalCtxt::complete::hd244c8335d3f3c57
 118:     0x7ffacd39af1e - <rustc_driver::Compilation as core::fmt::Debug>::fmt::h95cfe5dcbe5f474b
 119:     0x7ffacd36e51b - <rustc_driver::Compilation as core::fmt::Debug>::fmt::h95cfe5dcbe5f474b
 120:     0x7ffacd351416 - <rustc_driver::Compilation as core::fmt::Debug>::fmt::h95cfe5dcbe5f474b
 121:     0x7ffacd35395f - <rustc_driver::Compilation as core::fmt::Debug>::fmt::h95cfe5dcbe5f474b
 122:     0x7ffacd39256c - <rustc_driver::Compilation as core::fmt::Debug>::fmt::h95cfe5dcbe5f474b
 123:     0x7ffaf8e0c032 - _rust_maybe_catch_panic
 124:     0x7ffacd3931e2 - <rustc_driver::Compilation as core::fmt::Debug>::fmt::h95cfe5dcbe5f474b
 125:     0x7ffaf8dd7ab7 - ZN244_$LT$std..error..$LT$impl$u20$core..convert..From$LT$alloc..string..String$GT$$u20$for$u20$alloc..boxed..Box$LT$dyn$u20$std..error..Error$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$GT$..from..StringError$u20$as$u20$core..fmt..Display$GT$3fmt17
 126:     0x7ffaf8e098f7 - std::sys::windows::thread::Thread::new::h4eef306d20d6310e
 127:     0x7ffb3aba7bd4 - BaseThreadInitThunk
 128:     0x7ffb3b3eced1 - RtlUserThreadStart

error: internal compiler error: unexpected panic

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.40.0 (73528e339 2019-12-16) running on x86_64-pc-windows-msvc

note: compiler flags: -C debuginfo=2 -C incremental --crate-type bin
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.40.0 (73528e339 2019-12-16) running on x86_64-pc-windows-msvc

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

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

query stack during panic:
#0 [typeck_tables_of] processing `create_wall`
#1 [typeck_tables_of] processing `create_wall::{{closure}}#0`
#2 [type_of] processing `create_wall::{{closure}}#0`
#3 [collect_mod_item_types] collecting item types in top-level module
#4 [analysis] running analysis passes on this crate
end of query stack
error: could not compile `test_ops_client`.

bug_sample.zip

Simple crate is attached. It's an attempt at generating a tonic client from protobuffer files.

@Centril Centril added A-typesystem Area: The type system I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ I-nominated T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 21, 2020
@swilcox3
Copy link
Author

The root cause seems to be a build error inside of the async_stream::stream! macro:

    let outbound = async_stream::stream! {
        let input = CreateWallInput {
            file: String::from("test_ops_client"),
            user: String::from("test_ops_user"),
            wall: Some(WallMsg {
                first_pt: Point3Msg {
                    x: 0.0,
                    y: 0.0,
                    z: 0.0,
                },
                second_pt: Some(Point3Msg {
                    x: 1.0,
                    y: 0.0,
                    z: 0.0,
                }),
                width: 1.0,
                height: 1.0,
            }),
        };
        yield input;
    };

first_pt is supposed to be an Option, but I've just put in a Point3Msg instead. Instead of getting a build error as expected, we get this panic. If I fix the build error by putting in an Option, the panic goes away.

@Centril Centril added the E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example label Feb 21, 2020
@Centril
Copy link
Contributor

Centril commented Feb 21, 2020

Could you please try this on nightly and see if it reproduces?

Additionally, could you try to create a reproducer that fits in the playground (without using any external crate save for the standard library)?

Thanks.

@Centril Centril added the A-async-await Area: Async & Await label Feb 21, 2020
@swilcox3
Copy link
Author

I'm pretty sure this error is specifically because of async_stream::stream!, which is a proc macro hack. I'm not reproducing this panic on the latest nightly, though. Instead I get this output:

error[E0308]: mismatched types
  --> operations\test-ops-client\src\main.rs:24:27
   |
8  | |   }
   | |                                                    ^
   | |                                                    |
   | |____________________________________________________expected enum `std::option::Option`, found struct `geom_kernel::Point3Msg`
   |                                                      help: try using a variant of the expected enum: `Some(Point3Msg{x: 0.0, y: 0.0, z: 0.0,})`
...
19 | |       let outbound = async_stream::stream! {
   | |  ____________________-
20 | | |         let input = CreateWallInput {
21 | | |             file: String::from("test_ops_client"),
22 | | |             user: String::from("test_ops_user"),
23 | | |             wall: Some(WallMsg {
24 |   |                 first_pt: Point3Msg {
   |  _|___________________________^
...    |
38 |   |         yield input;
39 |   |     };
   |   |_____- in this macro invocation
   |
   = note: expected enum `std::option::Option<geom_kernel::Point3Msg>`
            found struct `geom_kernel::Point3Msg`
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

This is in line with what I expect, so it does look like this is fixed in nightly.

@Centril
Copy link
Contributor

Centril commented Feb 21, 2020

How about beta? Maybe there's a PR we should backport?

@swilcox3
Copy link
Author

Same panic on latest beta.

thread 'rustc' panicked at 'called `Result::unwrap()` on an `Err` value: DistinctSources(DistinctSources { begin: (Real("operations\\test-ops-client\\src\\main.rs"), BytePos(0)), end: (Macros("::async_stream::stream"), BytePos(9087160)) })', src\librustc_errors\emitter.rs:2111:17
stack backtrace:
   0:     0x7ffac93a7659 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h625fdcbc2a9694d5
   1:     0x7ffac93d20bb - core::fmt::write::h235756b81a8b440f
   2:     0x7ffac9399294 - <std::io::IoSliceMut as core::fmt::Debug>::fmt::h6e5f44856ecf3f04
   3:     0x7ffac93abcfc - std::panicking::take_hook::he2dd45ee22ea221f
   4:     0x7ffac93ab94c - std::panicking::take_hook::he2dd45ee22ea221f
   5:     0x7ffac33180ca - rustc_driver::report_ice::hcbf9bbe620d9cecc
   6:     0x7ffac93ac504 - std::panicking::rust_panic_with_hook::hd8b8e2d75c42801f
   7:     0x7ffac93ac065 - rust_begin_unwind
   8:     0x7ffac93cec70 - core::panicking::panic_fmt::h886688db175bdb2e
   9:     0x7ffac93ce903 - core::result::unwrap_failed::h121585868e30f490
  10:     0x7ffac6d4e45d - rustc_errors::emitter::is_case_difference::h1c1bd965681311fc
  11:     0x7ffac6d40591 - rustc_errors::emitter::HumanReadableErrorType::new_emitter::h3912f470f18b8c9e
  12:     0x7ffac6d42312 - <rustc_errors::emitter::EmitterWriter as rustc_errors::emitter::Emitter>::emit_diagnostic::h2684bc7a0b02c2a7
  13:     0x7ffac6d59bb4 - <rustc_errors::json::JsonEmitter as rustc_errors::emitter::Emitter>::emit_diagnostic::hda2d893071c06bb6
  14:     0x7ffac6d3e8e6 - rustc_errors::HandlerInner::emit_diagnostic::h42ed1343a44b0cc5
  15:     0x7ffac6d4fab5 - rustc_errors::diagnostic_builder::DiagnosticBuilder::emit::h47f2baf3bc188133
  16:     0x7ffac56399f8 - rustc_typeck::check::demand::<impl rustc_typeck::check::FnCtxt>::demand_coerce::hb78b4f38c95bbf5d
  17:     0x7ffac564456f - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  18:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  19:     0x7ffac5685eba - rustc_typeck::check::FnCtxt::self_type_matches_expected_vid::h6928db0ede289609
  20:     0x7ffac5630352 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h2c4d5a631e8148f7
  21:     0x7ffac562de5c - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h2c4d5a631e8148f7
  22:     0x7ffac563f571 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  23:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  24:     0x7ffac5644558 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  25:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  26:     0x7ffac5689243 - rustc_typeck::check::FnCtxt::check_decl_initializer::h7e8fd8a039af1b50
  27:     0x7ffac56892ef - rustc_typeck::check::FnCtxt::check_decl_local::h145f96877dd64543
  28:     0x7ffac56897bf - rustc_typeck::check::FnCtxt::check_stmt::he4a62204237b1b76
  29:     0x7ffac568a166 - rustc_typeck::check::FnCtxt::check_block_no_value::he5cd3b4c3f8672a2
  30:     0x7ffac563f588 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  31:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  32:     0x7ffac568a1a4 - rustc_typeck::check::FnCtxt::check_block_no_value::he5cd3b4c3f8672a2
  33:     0x7ffac563f588 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  34:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  35:     0x7ffac564d60e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  36:     0x7ffac56710d0 - <rustc_typeck::check::GatherLocalsVisitor as rustc_hir::intravisit::Visitor>::visit_pat::h6cc40edee6bc0f9e
  37:     0x7ffac5633011 - rustc_typeck::check::closure::<impl rustc_typeck::check::FnCtxt>::check_expr_closure::h658039c54cd63e23
  38:     0x7ffac563f16c - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  39:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  40:     0x7ffac5685eba - rustc_typeck::check::FnCtxt::self_type_matches_expected_vid::h6928db0ede289609
  41:     0x7ffac5630352 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h2c4d5a631e8148f7
  42:     0x7ffac562de5c - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h2c4d5a631e8148f7
  43:     0x7ffac563f571 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  44:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  45:     0x7ffac5685eba - rustc_typeck::check::FnCtxt::self_type_matches_expected_vid::h6928db0ede289609
  46:     0x7ffac5630352 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h2c4d5a631e8148f7
  47:     0x7ffac562de5c - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h2c4d5a631e8148f7
  48:     0x7ffac563f571 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  49:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  50:     0x7ffac568a1a4 - rustc_typeck::check::FnCtxt::check_block_no_value::he5cd3b4c3f8672a2
  51:     0x7ffac563f588 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  52:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  53:     0x7ffac5689243 - rustc_typeck::check::FnCtxt::check_decl_initializer::h7e8fd8a039af1b50
  54:     0x7ffac56892ef - rustc_typeck::check::FnCtxt::check_decl_local::h145f96877dd64543
  55:     0x7ffac56897bf - rustc_typeck::check::FnCtxt::check_stmt::he4a62204237b1b76
  56:     0x7ffac568a166 - rustc_typeck::check::FnCtxt::check_block_no_value::he5cd3b4c3f8672a2
  57:     0x7ffac563f588 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  58:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  59:     0x7ffac563f188 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  60:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  61:     0x7ffac568a1a4 - rustc_typeck::check::FnCtxt::check_block_no_value::he5cd3b4c3f8672a2
  62:     0x7ffac563f588 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  63:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  64:     0x7ffac564d60e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  65:     0x7ffac56710d0 - <rustc_typeck::check::GatherLocalsVisitor as rustc_hir::intravisit::Visitor>::visit_pat::h6cc40edee6bc0f9e
  66:     0x7ffac5633011 - rustc_typeck::check::closure::<impl rustc_typeck::check::FnCtxt>::check_expr_closure::h658039c54cd63e23
  67:     0x7ffac563f16c - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  68:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  69:     0x7ffac5685eba - rustc_typeck::check::FnCtxt::self_type_matches_expected_vid::h6928db0ede289609
  70:     0x7ffac5630352 - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h2c4d5a631e8148f7
  71:     0x7ffac562de5c - rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call::h2c4d5a631e8148f7
  72:     0x7ffac563f571 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  73:     0x7ffac563eb87 - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  74:     0x7ffac564d60e - rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation::h4645e25389d427d7
  75:     0x7ffac56710d0 - <rustc_typeck::check::GatherLocalsVisitor as rustc_hir::intravisit::Visitor>::visit_pat::h6cc40edee6bc0f9e
  76:     0x7ffac55b68ab - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::hc2e8371c3078742d
  77:     0x7ffac566f836 - <rustc_typeck::check::fixup_opaque_types::FixupFolder as rustc::ty::fold::TypeFolder>::fold_ty::h592aee909a4c47ac
  78:     0x7ffac56a084f - <rustc_typeck::check::check_opaque_for_inheriting_lifetimes::ProhibitOpaqueVisitor as core::fmt::Debug>::fmt::h03b9ea941dd82de1
  79:     0x7ffac55098fc - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::hc2e8371c3078742d
  80:     0x7ffac570eb86 - <rustc_typeck::check::regionck::RegionCtxt as rustc_hir::intravisit::Visitor>::visit_expr::h2bdabc9927600410
  81:     0x7ffac55172c7 - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::hc2e8371c3078742d
  82:     0x7ffac566f848 - <rustc_typeck::check::fixup_opaque_types::FixupFolder as rustc::ty::fold::TypeFolder>::fold_ty::h592aee909a4c47ac
  83:     0x7ffac56a084f - <rustc_typeck::check::check_opaque_for_inheriting_lifetimes::ProhibitOpaqueVisitor as core::fmt::Debug>::fmt::h03b9ea941dd82de1
  84:     0x7ffac55098fc - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::hc2e8371c3078742d
  85:     0x7ffac570eb86 - <rustc_typeck::check::regionck::RegionCtxt as rustc_hir::intravisit::Visitor>::visit_expr::h2bdabc9927600410
  86:     0x7ffac55172c7 - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::hc2e8371c3078742d
  87:     0x7ffac54cd5bb - <rustc_typeck::collect::has_late_bound_regions::LateBoundRegionsDetector as rustc_hir::intravisit::Visitor>::visit_lifetime::hc3b965261ecca9b1
  88:     0x7ffac56a252c - <rustc_typeck::check::check_opaque_for_inheriting_lifetimes::ProhibitOpaqueVisitor as core::fmt::Debug>::fmt::h03b9ea941dd82de1
  89:     0x7ffac550950c - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::hc2e8371c3078742d
  90:     0x7ffac5710256 - <rustc_typeck::check::regionck::RegionCtxt as rustc_hir::intravisit::Visitor>::visit_expr::h2bdabc9927600410
  91:     0x7ffac558992c - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::hc2e8371c3078742d
  92:     0x7ffac56f5402 - <rustc_typeck::namespace::Namespace as core::fmt::Debug>::fmt::hbfbf22bb8d996fcc
  93:     0x7ffac54c6d57 - <rustc_typeck::collect::CollectItemTypesVisitor as rustc_hir::intravisit::Visitor>::visit_item::h16809ad5598ca4cb
  94:     0x7ffac55d0399 - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::hc2e8371c3078742d
  95:     0x7ffac54c5ed4 - <rustc_typeck::check::upvar::InferBorrowKind as rustc_typeck::expr_use_visitor::Delegate>::mutate::hb458d05bec4d68dd
  96:     0x7ffac56a17dd - <rustc_typeck::check::check_opaque_for_inheriting_lifetimes::ProhibitOpaqueVisitor as core::fmt::Debug>::fmt::h03b9ea941dd82de1
  97:     0x7ffac5509bbc - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::hc2e8371c3078742d
  98:     0x7ffac570e3f0 - <rustc_typeck::check::regionck::RegionCtxt as rustc_hir::intravisit::Visitor>::visit_expr::h2bdabc9927600410
  99:     0x7ffac55723e9 - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::hc2e8371c3078742d
 100:     0x7ffac5509f74 - <rustc_typeck::outlives::explicit::ExplicitPredicatesMap as core::fmt::Debug>::fmt::hc2e8371c3078742d
 101:     0x7ffac54b97cb - rustc_typeck::check_crate::h3487626fb3d3b3cf
 102:     0x7ffac34348c1 - rustc_interface::passes::QueryContext::print_stats::h25b51332ab3c20f8
 103:     0x7ffac32b4293 - <rustc_span::symbol::SymbolStr as core::fmt::Display>::fmt::h6ddbe188959d8aa3
 104:     0x7ffac33078a5 - rustc_driver::pretty::print_after_hir_lowering::h40bb6c52d19325cc
 105:     0x7ffac331a91c - <rustc_driver::DEFAULT_HOOK as core::ops::deref::Deref>::deref::h11dcec2ec1184e59
 106:     0x7ffac330522d - rustc_driver::pretty::print_after_hir_lowering::h40bb6c52d19325cc
 107:     0x7ffac32c03c4 - rustc_driver::pretty::print_after_hir_lowering::h40bb6c52d19325cc
 108:     0x7ffac32b0cee - <env_logger::filter::inner::Filter as core::fmt::Display>::fmt::h43fd01c0e47a0ed1
 109:     0x7ffac32ae6b9 - <env_logger::filter::inner::Filter as core::fmt::Display>::fmt::h43fd01c0e47a0ed1
 110:     0x7ffac32b260c - <env_logger::filter::inner::Filter as core::fmt::Display>::fmt::h43fd01c0e47a0ed1
 111:     0x7ffac93bdd22 - _rust_maybe_catch_panic
 112:     0x7ffac32c3ba2 - rustc_driver::pretty::print_after_hir_lowering::h40bb6c52d19325cc
 113:     0x7ffac9387a07 - ZN244_$LT$std..error..$LT$impl$u20$core..convert..From$LT$alloc..string..String$GT$$u20$for$u20$alloc..boxed..Box$LT$dyn$u20$std..error..Error$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$GT$..from..StringError$u20$as$u20$core..fmt..Display$GT$3fmt17
 114:     0x7ffac93bb5d7 - std::sys::windows::thread::Thread::new::h641608bd6db7dfca
 115:     0x7ffb3aba7bd4 - BaseThreadInitThunk
 116:     0x7ffb3b3eced1 - RtlUserThreadStart

error: internal compiler error: unexpected panic

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.42.0-beta.3 (86f329b41 2020-02-07) running on x86_64-pc-windows-msvc

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

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

query stack during panic:
#0 [typeck_tables_of] processing `create_wall`
#1 [typeck_tables_of] processing `create_wall::{{closure}}#0`
#2 [type_of] processing `create_wall::{{closure}}#0`
#3 [collect_mod_item_types] collecting item types in top-level module
#4 [analysis] running analysis passes on this crate
end of query stack

By the way, the tooling for Rust is the best I've ever seen. I can't think of any other language where I can try three different versions of the language on any platform with only three command line calls. Everybody who worked on rustup and cargo deserves every reward you could possibly give them.

@Centril Centril added the E-needs-bisection Call for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustc label Feb 21, 2020
@Centril
Copy link
Contributor

Centril commented Feb 21, 2020

Let's find the PR that fixed this on nightly and see if we should beta backport.

@rustbot ping icebreakers-cleanup-crew

@rustbot
Copy link
Collaborator

rustbot commented Feb 21, 2020

Hey Cleanup Crew ICE-breakers! This bug has been identified as a good
"Cleanup ICE-breaking candidate". In case it's useful, here are some
instructions for tackling these sorts of bugs. Maybe take a look?
Thanks! <3

cc @AminArria @chrissimpkins @DutchGhost @elshize @ethanboxx @h-michael @HallerPatrick @hdhoang @hellow554 @imtsuki @jakevossen5 @KarlK90 @LeSeulArtichaut @matheus-consoli @mental32 @nmccarty @Noah-Kennedy @pard68 @PeytonT @pierreN @Redblueflame @RobbieClarken @RobertoSnap @robjtede @senden9 @shekohex @sinato @spastorino @turboladen @woshilapin @yerke

@rustbot rustbot added the ICEBreaker-Cleanup-Crew Helping to "clean up" bugs with minimal examples and bisections label Feb 21, 2020
@elshize
Copy link

elshize commented Feb 21, 2020

If anyone's working on that now, I was able to narrow it down between 2020-01-14 (panic) and 2020-02-01(regular fail); will continue shortly if no one comes up with the answer soon.

@senden9
Copy link

senden9 commented Feb 21, 2020

I did a bisect test with PANIC = baseline, NORMAL-FAIL-TO-COMPILE = regression. Based on the dates from @elshize (thanks).

Command used:

cargo-bisect-rustc --prompt --preserve --start 2020-01-14 --end 2020-02-01

Bisect Output:

eed12bc finished with exit code Some(101).
please select an action to take:
tested eed12bc, got Yes
searched toolchains 3761dcd through 9ed29b6
regression in eed12bc

Regression found in the compiler

searched nightlies: from nightly-2020-01-14 to nightly-2020-02-01
regressed nightly: nightly-2020-01-30
searched commits: from 3761dcd to 9ed29b6
regressed commit: eed12bc

@LeSeulArtichaut
Copy link
Contributor

Could the fix PR be #68611? Seems likely given its title

@Centril
Copy link
Contributor

Centril commented Feb 21, 2020

That's the only plausible PR that could have fixed this. As it is already beta/stable-accepted, there's nothing left to be done here. Thanks y'all.

@Centril Centril closed this as completed Feb 21, 2020
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 A-typesystem Area: The type system E-needs-bisection Call for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustc E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ ICEBreaker-Cleanup-Crew Helping to "clean up" bugs with minimal examples and bisections T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

6 participants