Rust: Impossible case reached: src/librustc_ty/needs_drop.rs:111

Created on 28 May 2020  路  12Comments  路  Source: rust-lang/rust

I can't share the code, but I have a commit at which problem surfaced in case I need to check it again.

With rustc 1.45.0-nightly (664fcd3f0 2020-05-27):

error: internal compiler error: src/librustc_ty/needs_drop.rs:110: impossible case reached

thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:907:9
stack backtrace:
   0:        0x1158b7e5e - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::haddd67525bfc5efd
   1:        0x1158f14ac - core::fmt::write::h26bd57c1fd6e9c98
   2:        0x1158a9367 - std::io::Write::write_fmt::he98312d4cdda2998
   3:        0x1158bc995 - std::panicking::default_hook::{{closure}}::h972739288f683b01
   4:        0x1158bc6d2 - std::panicking::default_hook::hb37535587742c590
   5:        0x10ea6c318 - rustc_driver::report_ice::h7e82cb45a804e7ac
   6:        0x1158bcfe5 - std::panicking::rust_panic_with_hook::h282a3815a0dbd960
   7:        0x112e22836 - std::panicking::begin_panic::h3347aa79e2bd0001
   8:        0x112a2bb47 - rustc_errors::HandlerInner::bug::hdd3d3d4df8ecc812
   9:        0x112a2a587 - rustc_errors::Handler::bug::hfdb40f11e1ec6375
  10:        0x11268b8d9 - rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}::h672ee7bf29d2e585
  11:        0x112683856 - rustc_middle::ty::context::tls::with_opt::{{closure}}::h180e0d128cf5a691
  12:        0x1126837db - rustc_middle::ty::context::tls::with_opt::h3dd865e1673fd5c3
  13:        0x11268b7e8 - rustc_middle::util::bug::opt_span_bug_fmt::h11c4561b989ea294
  14:        0x112e0a25b - rustc_middle::util::bug::bug_fmt::heb0671f45a3fced7
  15:        0x110b86245 - rustc_ty::needs_drop::needs_drop_raw::h5f1b2d46b1fe1310
  16:        0x1115197e2 - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::needs_drop_raw>::compute::hfebf1463447e93e9
  17:        0x11146e167 - rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::h408ef90e215ff458
  18:        0x1117d23eb - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h6ad91f3c6bd1184b
  19:        0x111748941 - rustc_query_system::query::plumbing::get_query_impl::{{closure}}::h78d6d7ad62a98123
  20:        0x1116f6f6c - rustc_query_system::query::plumbing::get_query_impl::hb404b598357f155e
  21:        0x11151913f - rustc_middle::ty::util::<impl rustc_middle::ty::TyS>::needs_drop::hec2a1d98b017a984
  22:        0x11153e633 - rustc_mir::dataflow::drop_flag_effects::on_all_children_bits::on_all_children_bits::h945d86a5f582fc5a
  23:        0x111893af1 - <rustc_mir::transform::elaborate_drops::ElaborateDrops as rustc_mir::transform::MirPass>::run_pass::h6ddb718a55e42b2e
  24:        0x11189cdf6 - rustc_mir::transform::run_passes::hae0f8213abc898bd
  25:        0x11189e4a8 - rustc_mir::transform::run_optimization_passes::h8d4e073ac16d4b4a
  26:        0x11189e797 - rustc_mir::transform::optimized_mir::hed469a7ecc9c2f75
  27:        0x111b4d5db - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::optimized_mir>::compute::h8fda8cd262fe2387
  28:        0x111c34e94 - rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::h9e4689433b3bec8a
  29:        0x111cdba42 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::he4a31e2f27add82c
  30:        0x111ce4614 - rustc_data_structures::stack::ensure_sufficient_stack::hc6d3d3b43db324d6
  31:        0x111ca880e - rustc_query_system::query::plumbing::get_query_impl::haec7a438c772d019
  32:        0x111b5ea39 - rustc_metadata::rmeta::encoder::EncodeContext::encode_optimized_mir::h36ec3fe0bfcce890
  33:        0x111b5f7d9 - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_expr::hfcf00eaa21e37df6
  34:        0x111d0a04f - rustc_hir::intravisit::walk_expr::he05489e90d3f9167
  35:        0x111b5f4ca - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_expr::hfcf00eaa21e37df6
  36:        0x111d099d5 - rustc_hir::intravisit::walk_fn::hdba1b43e9f186e02
  37:        0x111d0a7f2 - rustc_hir::intravisit::walk_item::h671e77f4156655d5
  38:        0x111b5fd8f - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_item::h16757bad83b9ba4c
  39:        0x111c55706 - rustc_hir::hir::Crate::visit_all_item_likes::h06250e40e6b25714
  40:        0x111b679d5 - rustc_metadata::rmeta::encoder::encode_metadata_impl::hf580f14b5e5ed365
  41:        0x111c4b7b9 - rustc_data_structures::sync::join::he6c503409ba48db1
  42:        0x111b9ba93 - rustc_metadata::rmeta::decoder::cstore_impl::<impl rustc_middle::middle::cstore::CrateStore for rustc_metadata::creader::CStore>::encode_metadata::h2a4dc82724a70bb8
  43:        0x112682254 - rustc_middle::ty::context::TyCtxt::encode_metadata::hcbc9b148077f4a74
  44:        0x10ebbfcb4 - rustc_interface::passes::start_codegen::h566b590c93aad30d
  45:        0x10ebceae8 - rustc_middle::ty::context::tls::enter_global::h3137fb999bf26770
  46:        0x10ebc9b1b - rustc_interface::queries::Queries::ongoing_codegen::h1a6016b31f7ff214
  47:        0x10ea36752 - rustc_interface::interface::run_compiler_in_existing_thread_pool::h5e937ba6fd9f8f01
  48:        0x10ea7c9a5 - rustc_ast::attr::with_globals::hcdba3f2dccfd96ec
  49:        0x10ea7db89 - std::sys_common::backtrace::__rust_begin_short_backtrace::h530da67482db7b0b
  50:        0x10ea3951c - core::ops::function::FnOnce::call_once{{vtable.shim}}::hdb3c595dbde36cc1
  51:        0x1158cb0dd - std::sys::unix::thread::Thread::new::thread_start::h7f9271978e0efa0c
  52:     0x7fff70077109 - _ZL12preoptimized

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.45.0-nightly (664fcd3f0 2020-05-27) running on x86_64-apple-darwin

note: compiler flags: -C panic=abort -C embed-bitcode=no -C debuginfo=2 -C incremental --crate-type lib

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

query stack during panic:
#0 [needs_drop_raw] computing whether `std::future::from_generator::GenFuture<[static generator@src/peer/coordinator.rs:129:21: 161:2 ctx:[type error], stream:[type error], buf:[type error], peers:[type error], server:[type error] [type error]]>` needs drop
#1 [optimized_mir] processing `peer::coordinator::relay::{{closure}}#0`
end of query stack
error: aborting due to previous error

error: could not compile `MY_CRATE`.

To learn more, run the command again with --verbose.
A-async-await A-generators AsyncAwait-Triaged C-bug E-easy E-help-wanted E-needs-mcve I-ICE T-compiler

Most helpful comment

@jonas-schievink The compiler now outputs a bit more information, but still panics. However I think I have a reproducer now:

fn main() {
    println!("Hello, world!");
}

const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;

async fn my_fn(_a: usize, _b: usize) -> Result<(), ()> {
    Ok(())
}

Note that I'm not 100% this triggered the original ICEs, but this at least triggers the following one:

error: internal compiler error: bad_placeholder_type
 --> src/main.rs:7:27
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  |                           ^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: bad_placeholder_type
 --> src/main.rs:7:18
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  |                  ^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: bad_placeholder_type
 --> src/main.rs:7:21
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  |                     ^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: TyKind::Error constructed but no error reported
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: cat_expr Errd
 --> src/main.rs:7:31
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  |                               ^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: cat_expr Errd
 --> src/main.rs:1:11
  |
1 |   fn main() {
  |  ___________^
2 | |     println!("Hello, world!");
3 | |     drop(FN_PTR);
4 | |     drop(my_fn);
5 | | }
  | |_^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: cat_expr Errd
 --> src/main.rs:3:5
  |
3 |     drop(FN_PTR);
  |     ^^^^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: cat_expr Errd
 --> src/main.rs:3:10
  |
3 |     drop(FN_PTR);
  |          ^^^^^^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: PromoteTemps: MIR had errors
 --> src/main.rs:1:1
  |
1 | / fn main() {
2 | |     println!("Hello, world!");
3 | |     drop(FN_PTR);
4 | |     drop(my_fn);
5 | | }
  | |_^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: broken MIR in DefId(0:3 ~ test[e008]::main[0]) ("return type"): bad type [type error]
 --> src/main.rs:1:1
  |
1 | / fn main() {
2 | |     println!("Hello, world!");
3 | |     drop(FN_PTR);
4 | |     drop(my_fn);
5 | | }
  | |_^
  |
  = note: delayed at src/librustc_mir/borrow_check/type_check/mod.rs:258:27

error: internal compiler error: broken MIR in DefId(0:3 ~ test[e008]::main[0]) (LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: [type error], user_ty: None, source_info: SourceInfo { span: src/main.rs:1:1: 5:2 (#0), scope: scope[0] } }): bad type [type error]
 --> src/main.rs:1:1
  |
1 | / fn main() {
2 | |     println!("Hello, world!");
3 | |     drop(FN_PTR);
4 | |     drop(my_fn);
5 | | }
  | |_^
  |
  = note: delayed at src/librustc_mir/borrow_check/type_check/mod.rs:258:27

error: internal compiler error: mir_const_qualif: MIR had errors
 --> src/main.rs:7:1
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: PromoteTemps: MIR had errors
 --> src/main.rs:7:1
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: broken MIR in DefId(0:4 ~ test[e008]::FN_PTR[0]) ("return type"): bad type [type error]
 --> src/main.rs:7:1
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: delayed at src/librustc_mir/borrow_check/type_check/mod.rs:258:27

error: internal compiler error: broken MIR in DefId(0:4 ~ test[e008]::FN_PTR[0]) (LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: [type error], user_ty: None, source_info: SourceInfo { span: src/main.rs:7:1: 7:54 (#0), scope: scope[0] } }): bad type [type error]
 --> src/main.rs:7:1
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: delayed at src/librustc_mir/borrow_check/type_check/mod.rs:258:27

thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:367:17
stack backtrace:
   0:        0x10834cd4e - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h13e6f26430148ff2
   1:        0x10838632c - core::fmt::write::h45a9bd04db15c24f
   2:        0x10833e567 - std::io::Write::write_fmt::h8ae61696f13218d5
   3:        0x108351885 - std::panicking::default_hook::{{closure}}::hc98fe2390b6284e5
   4:        0x1083515c2 - std::panicking::default_hook::h9a63cea866a4c14a
   5:        0x10139c988 - rustc_driver::report_ice::h6811b1f05e3fd746
   6:        0x108351ed5 - std::panicking::rust_panic_with_hook::h4d446ca45c8e1faa
   7:        0x105822abd - std::panicking::begin_panic::hba65cd1eb2ce6d69
   8:        0x105429e3f - <rustc_errors::HandlerInner as core::ops::drop::Drop>::drop::h3a03d7831429fa48
   9:        0x1013d92ca - core::ptr::drop_in_place::he612e23a92ff1daf
  10:        0x1013dd728 - <alloc::rc::Rc<T> as core::ops::drop::Drop>::drop::h86e165f15f416390
  11:        0x1013f3532 - core::ptr::drop_in_place::h6c089220cd3fa404
  12:        0x1013e92be - rustc_span::with_source_map::hcb5ea084b59b822f
  13:        0x101363d1a - rustc_interface::interface::run_compiler_in_existing_thread_pool::h4842a91ac763f9d6
  14:        0x101389479 - scoped_tls::ScopedKey<T>::set::haf496b5dd75c374f
  15:        0x1013a0cc2 - std::sys_common::backtrace::__rust_begin_short_backtrace::hac103380d443010e
  16:        0x10136acac - core::ops::function::FnOnce::call_once{{vtable.shim}}::hce68202ad15837a7
  17:        0x10835ff2d - std::sys::unix::thread::Thread::new::thread_start::h545d31fdf79b3d9e
  18:     0x7fff72d67109 - _ZL12preoptimized

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.46.0-nightly (50fc24d8a 2020-06-25) running on x86_64-apple-darwin

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

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

query stack during panic:
end of query stack
error: could not compile `test`.

To learn more, run the command again with --verbose.

All 12 comments

It seems like it might be this code

https://github.com/rust-lang/rust/blob/da57cedd215564385b1c0ea09d553121fe09c32e/src/librustc_ty/needs_drop.rs#L101-L116

@jonas-schievink do you think this might have been introduced in https://github.com/rust-lang/rust/pull/70015? (Particularly given the comment https://github.com/rust-lang/rust/pull/70015/files#r392633710.)

@Thomasdezeeuw could you try running the nightly from April 18th and tell us what the output is?

Yeah, probably introduced there. Though the erase_late_bound_regions is probably not involved as the ICE is in the line below.

I'll take a look. I thought that only a GeneratorWitness would be expected there, but according to the query stack there's a [type error] there? I guess we need a delay_span_bug instead of a bug!() then.

@estebank April 18th compiler has the same problem:

error: internal compiler error: src/librustc_mir/transform/generator.rs:1244: impossible case reached

thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:904:9
stack backtrace:
   0:        0x1085a0f0f - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h5f94faac0175417e
   1:        0x1085dacfe - core::fmt::write::h6df182023d9a3b95
   2:        0x108591ed7 - std::io::Write::write_fmt::h01d91a9263b8b567
   3:        0x1085a5a2a - std::panicking::default_hook::{{closure}}::h224eeb9bf4f57784
   4:        0x1085a576c - std::panicking::default_hook::h075ef9f55ab1c87b
   5:        0x1020119d8 - rustc_driver::report_ice::h839668b6f6ee766f
   6:        0x1085a6145 - std::panicking::rust_panic_with_hook::h073aa5d47393da95
   7:        0x106090596 - std::panicking::begin_panic::hd440e6b088740f3c
   8:        0x105c85547 - rustc_errors::HandlerInner::bug::h9e8ac091d8db35b5
   9:        0x105c83f37 - rustc_errors::Handler::bug::h36ed9541a04885fc
  10:        0x105713570 - rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}::hbddccb624994634d
  11:        0x105708076 - rustc_middle::ty::context::tls::with_opt::{{closure}}::ha492a72378e6816b
  12:        0x105707ffc - rustc_middle::ty::context::tls::with_opt::he38cce9a6e4c498c
  13:        0x105713478 - rustc_middle::util::bug::opt_span_bug_fmt::he731295bda299d43
  14:        0x10607120b - rustc_middle::util::bug::bug_fmt::h7ff1313c812cc524
  15:        0x104aef609 - <rustc_mir::transform::generator::StateTransform as rustc_mir::transform::MirPass>::run_pass::ha35fc414cb2df94a
  16:        0x104bf082e - rustc_mir::transform::run_passes::hd827a4539f07877a
  17:        0x104bf18aa - rustc_mir::transform::run_optimization_passes::h2ce109868df11098
  18:        0x104bf1ab3 - rustc_mir::transform::optimized_mir::h35bf6652bd5a6764
  19:        0x104f57393 - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::optimized_mir>::compute::h3cc19ec9d9ea6a15
  20:        0x104eacc39 - rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::h64cb36ddad128472
  21:        0x104fb1548 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::hf1ebe5defb932a5c
  22:        0x104f7458c - rustc_query_system::query::plumbing::get_query::h6671a0528e0184a0
  23:        0x104f4c892 - rustc_metadata::rmeta::encoder::EncodeContext::encode_optimized_mir::h7c0bfeb60ffe9485
  24:        0x104f4d3ba - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_expr::h17a738155897d005
  25:        0x104fbc0ef - rustc_hir::intravisit::walk_expr::h5c5d575bc47a8b59
  26:        0x104f4d19c - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_expr::h17a738155897d005
  27:        0x104fbba45 - rustc_hir::intravisit::walk_fn::hbfa2c41a46c256db
  28:        0x104fbc82e - rustc_hir::intravisit::walk_item::h37fc828aa3395968
  29:        0x104f4d88f - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_item::h42b42f8ddccf1e2a
  30:        0x104f0bce6 - rustc_hir::hir::Crate::visit_all_item_likes::h142036d1dede4a40
  31:        0x104f53a9b - rustc_metadata::rmeta::encoder::encode_metadata_impl::h36ec3570fac288ed
  32:        0x104fd6461 - rustc_data_structures::sync::join::h1884a05288217c60
  33:        0x104febec3 - rustc_metadata::rmeta::decoder::cstore_impl::<impl rustc_middle::middle::cstore::CrateStore for rustc_metadata::creader::CStore>::encode_metadata::hae3a892f144578cd
  34:        0x1057bc554 - rustc_middle::ty::context::TyCtxt::encode_metadata::h753a833bb8acea4f
  35:        0x1023174cc - rustc_interface::passes::start_codegen::h2cca674743f6e9f4
  36:        0x1022803eb - rustc_middle::ty::context::tls::enter_global::h6a39e126a61c050f
  37:        0x1023621c3 - rustc_interface::queries::Queries::ongoing_codegen::h16dfba2279957de2
  38:        0x10216cdcf - rustc_interface::interface::run_compiler_in_existing_thread_pool::h28920202dc32f459
  39:        0x10201a229 - scoped_tls::ScopedKey<T>::set::h72ccfda3e4bc20d9
  40:        0x102017125 - rustc_ast::attr::with_globals::hb7cd589acd2b132f
  41:        0x10201f6e0 - std::sys_common::backtrace::__rust_begin_short_backtrace::h8439916d1c647f2e
  42:        0x10216f66c - core::ops::function::FnOnce::call_once{{vtable.shim}}::hd9041fd5dcffbd35
  43:        0x10858236e - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::hca40cbe33b61149d
  44:        0x1085b4776 - std::sys::unix::thread::Thread::new::thread_start::hbe6d5a098d8adb9e
  45:     0x7fff70077109 - _ZL12preoptimized

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.44.0-nightly (52fa23add 2020-04-18) running on x86_64-apple-darwin

note: compiler flags: -C panic=abort -C debuginfo=2 -C incremental --crate-type lib

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

query stack during panic:
#0 [optimized_mir] processing `peer::coordinator::read_known_peers::{{closure}}#0`
end of query stack
error: aborting due to previous error

error: could not compile `MY_CRATE`.

April 17th:

error: internal compiler error: src/librustc_mir/transform/generator.rs:1244: impossible case reached

thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:904:9
stack backtrace:
   0:        0x10b15ff1f - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h8e33e558833d1956
   1:        0x10b199d0e - core::fmt::write::h9d197fdfdd3a8aba
   2:        0x10b150ee7 - std::io::Write::write_fmt::h489d814bafdb2fc0
   3:        0x10b164a3a - std::panicking::default_hook::{{closure}}::hd5cc0ed2514a340f
   4:        0x10b16477c - std::panicking::default_hook::h7e2bc667d2c8e4db
   5:        0x104bd5588 - rustc_driver::report_ice::hda8844815682ab6b
   6:        0x10b165155 - std::panicking::rust_panic_with_hook::h88adf9321de60790
   7:        0x108c628a6 - std::panicking::begin_panic::h40a3b10abbe0b486
   8:        0x108855147 - rustc_errors::HandlerInner::bug::h5510f64ec98175e7
   9:        0x108853b37 - rustc_errors::Handler::bug::h70245619acd154d8
  10:        0x1082e2a89 - rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}::hf97180823c881ffc
  11:        0x1082d76b6 - rustc_middle::ty::context::tls::with_opt::{{closure}}::hee471a2db74159be
  12:        0x1082d763c - rustc_middle::ty::context::tls::with_opt::ha1f589eb9df81f6e
  13:        0x1082e2998 - rustc_middle::util::bug::opt_span_bug_fmt::hd6250c66736c06a0
  14:        0x108c4115b - rustc_middle::util::bug::bug_fmt::hf584f902a66a7db2
  15:        0x1076bac09 - <rustc_mir::transform::generator::StateTransform as rustc_mir::transform::MirPass>::run_pass::hdfea4658ad32071f
  16:        0x1077ba1ce - rustc_mir::transform::run_passes::hf0a88394d36da281
  17:        0x1077bb70a - rustc_mir::transform::run_optimization_passes::h8914b8bf00cb929a
  18:        0x1077bbaad - rustc_mir::transform::optimized_mir::ha7de39a4cf9f4a5b
  19:        0x107b21373 - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::optimized_mir>::compute::h42faf9beb2921343
  20:        0x107a79149 - rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::had2b2adaaca5ae3e
  21:        0x107b7ac08 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::hdb5c7e7885571969
  22:        0x107b4f5bc - rustc_query_system::query::plumbing::get_query::h7ee3cf724a5d148d
  23:        0x107b16872 - rustc_metadata::rmeta::encoder::EncodeContext::encode_optimized_mir::he774ebbbf385ac39
  24:        0x107b1739a - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_expr::h1d09417378a8e4e0
  25:        0x107b860cf - rustc_hir::intravisit::walk_expr::h37385670f6547fc0
  26:        0x107b1717c - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_expr::h1d09417378a8e4e0
  27:        0x107b85a25 - rustc_hir::intravisit::walk_fn::h935265b2fbb3e35a
  28:        0x107b8680e - rustc_hir::intravisit::walk_item::ha1cfa26dbfa4ca6f
  29:        0x107b1786f - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_item::h8fa511149a8b9845
  30:        0x107ad7046 - rustc_hir::hir::Crate::visit_all_item_likes::hb510a1643aca4d80
  31:        0x107b1da7b - rustc_metadata::rmeta::encoder::encode_metadata_impl::hd10c91e6f0356ac2
  32:        0x107b9fc41 - rustc_data_structures::sync::join::he7dd775e0f210822
  33:        0x107bb54f3 - rustc_metadata::rmeta::decoder::cstore_impl::<impl rustc_middle::middle::cstore::CrateStore for rustc_metadata::creader::CStore>::encode_metadata::hade3754e7cd7f82e
  34:        0x10838bca4 - rustc_middle::ty::context::TyCtxt::encode_metadata::ha4b006894b0490da
  35:        0x104eef0ad - rustc_interface::passes::start_codegen::h883662f922a42a2b
  36:        0x104e4840b - rustc_middle::ty::context::tls::enter_global::heca5eb3952d054ea
  37:        0x104f25873 - rustc_interface::queries::Queries::ongoing_codegen::h7dce60ab7d36285f
  38:        0x104d310ef - rustc_interface::interface::run_compiler_in_existing_thread_pool::h941b4802c24f9c9f
  39:        0x104bdd499 - scoped_tls::ScopedKey<T>::set::h19bc66da3554c573
  40:        0x104bdabf5 - rustc_ast::attr::with_globals::hc6f50c98b5adfc21
  41:        0x104be3490 - std::sys_common::backtrace::__rust_begin_short_backtrace::hbdd06d733493d2c5
  42:        0x104d32e9c - core::ops::function::FnOnce::call_once{{vtable.shim}}::hbf0703c87d11ebad
  43:        0x10b14137e - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h63df79cdef197011
  44:        0x10b173786 - std::sys::unix::thread::Thread::new::thread_start::ha540b6bb74f6bd73
  45:     0x7fff70077109 - _ZL12preoptimized

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.44.0-nightly (ce93331e2 2020-04-17) running on x86_64-apple-darwin

note: compiler flags: -C panic=abort -C debuginfo=2 -C incremental --crate-type lib

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

query stack during panic:
#0 [optimized_mir] processing `peer::coordinator::read_known_peers::{{closure}}#0`
end of query stack
error: aborting due to previous error

error: could not compile `MY_CRATE`.

Ok, so this is a pre-existing bug, not introduced in the PR I linked.

I thought that only a GeneratorWitness would be expected there, but according to the query stack there's a [type error] there? I guess we need a delay_span_bug instead of a bug!() then.

Sadly we need to account for TyErr everywhere where you fail if you expect something else. delay_span_bug is appropriate because an error will have been emitted already.

@Thomasdezeeuw can you check this again on a current nightly? It should be fixed.

@jonas-schievink Not sure if its the same problem but I got another impossible case:

error: internal compiler error: src/librustc_mir/transform/generator.rs:1225: impossible case reached

thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:907:9
stack backtrace:
   0:        0x10b0da7ae - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h663935c3ade921d4
   1:        0x10b113f0c - core::fmt::write::h45a9bd04db15c24f
   2:        0x10b0cc2a7 - std::io::Write::write_fmt::h0e6cabb1f767eb66
   3:        0x10b0df2e5 - std::panicking::default_hook::{{closure}}::h45f8ee2074ad82b4
   4:        0x10b0df022 - std::panicking::default_hook::hd48caf78d696bd9a
   5:        0x10b80d9c8 - rustc_driver::report_ice::h20209cc7d5e9b721
   6:        0x10b0df935 - std::panicking::rust_panic_with_hook::h468218923d76a6d7
   7:        0x10fc37886 - std::panicking::begin_panic::h6f663bec8c63636d
   8:        0x10f8459f7 - rustc_errors::HandlerInner::bug::hcf0983b48acbbacf
   9:        0x10f844337 - rustc_errors::Handler::bug::h2d11699c9caf6729
  10:        0x10f4801f9 - rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}::h6df69a2a3dd903a9
  11:        0x10f4781e6 - rustc_middle::ty::context::tls::with_opt::{{closure}}::h08953dcab9277843
  12:        0x10f47816b - rustc_middle::ty::context::tls::with_opt::h3ea04b0ab6091eff
  13:        0x10f480108 - rustc_middle::util::bug::opt_span_bug_fmt::h5a2e586f8e52e067
  14:        0x10fc2130b - rustc_middle::util::bug::bug_fmt::h0e03d94765b73e41
  15:        0x10e4c0bcc - <rustc_mir::transform::generator::StateTransform as rustc_mir::transform::MirPass>::run_pass::h3ef22c1710d372cd
  16:        0x10e66e996 - rustc_mir::transform::run_passes::hd42a628b56c379fa
  17:        0x10e670048 - rustc_mir::transform::run_optimization_passes::h7aaac24e50e622f9
  18:        0x10e670337 - rustc_mir::transform::optimized_mir::h42c99d0a316f684f
  19:        0x10e9348fb - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::optimized_mir>::compute::ha47e246c174bdb06
  20:        0x10ea182c8 - rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::h6415c816156b8a28
  21:        0x10eabb2f2 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::hc594217cb7a84d83
  22:        0x10eae3254 - rustc_data_structures::stack::ensure_sufficient_stack::h127eb72d4b2f7a5e
  23:        0x10eaa0dfe - rustc_query_system::query::plumbing::get_query_impl::hf23da1e9f1218c25
  24:        0x10e945f99 - rustc_metadata::rmeta::encoder::EncodeContext::encode_optimized_mir::h1f1755936c71f94a
  25:        0x10e946d39 - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_expr::h930b558cca40452a
  26:        0x10eafbf9f - rustc_hir::intravisit::walk_expr::h61856d0f7e90f3d9
  27:        0x10e946a2a - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_expr::h930b558cca40452a
  28:        0x10eafb7b5 - rustc_hir::intravisit::walk_fn::h16f7cd7c49739edc
  29:        0x10eafc754 - rustc_hir::intravisit::walk_item::h5c459e923d44349a
  30:        0x10e9472ef - <rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_item::h677f6dc9c4004353
  31:        0x10eafd546 - rustc_hir::hir::Crate::visit_all_item_likes::h804ca1112e64a269
  32:        0x10e94eee5 - rustc_metadata::rmeta::encoder::encode_metadata_impl::he7196de0938d43b1
  33:        0x10ea2de0f - rustc_data_structures::sync::join::h4f6a3d1460736199
  34:        0x10e97bb54 - rustc_metadata::rmeta::decoder::cstore_impl::<impl rustc_middle::middle::cstore::CrateStore for rustc_metadata::creader::CStore>::encode_metadata::h9b154f4f413b549a
  35:        0x10f476c24 - rustc_middle::ty::context::TyCtxt::encode_metadata::h9900cc31cdbd1748
  36:        0x10b98528a - rustc_interface::passes::start_codegen::he1887f2bb9a360fe
  37:        0x10b9a3648 - rustc_middle::ty::context::tls::enter_global::h5234796652c04bbe
  38:        0x10b98f2ab - rustc_interface::queries::Queries::ongoing_codegen::h8127070cc894d6fb
  39:        0x10b81693d - rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter::hb63f149f7d127d23
  40:        0x10b877c91 - rustc_span::with_source_map::hff02123913f3c9fc
  41:        0x10b818b17 - rustc_interface::interface::run_compiler_in_existing_thread_pool::hfade9e67fe3dc88a
  42:        0x10b80f499 - scoped_tls::ScopedKey<T>::set::ha23c73df790e47d2
  43:        0x10b819bbd - std::sys_common::backtrace::__rust_begin_short_backtrace::hebfd2a8940a25d1c
  44:        0x10b7f9f3c - core::ops::function::FnOnce::call_once{{vtable.shim}}::h302f2854e9369da4
  45:        0x10b0edb0d - std::sys::unix::thread::Thread::new::thread_start::h15652ee16771ed61
  46:     0x7fff67dba109 - _ZL12preoptimized

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.46.0-nightly (feb3536eb 2020-06-09) running on x86_64-apple-darwin

note: compiler flags: -C panic=abort -C embed-bitcode=no -C debuginfo=2 -C incremental --crate-type lib

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

query stack during panic:
#0 [optimized_mir] optimizing MIR for `module::{{closure}}#0`
end of query stack
error: aborting due to previous error

error: could not compile `MY_CRATE`.

To learn more, run the command again with --verbose.

Rust version: rustc 1.46.0-nightly (feb3536eb 2020-06-09).

Thanks, opened https://github.com/rust-lang/rust/pull/73339 to try to fix this one too.

@Thomasdezeeuw Now that #73339 has landed, could you check this again?

@jonas-schievink The compiler now outputs a bit more information, but still panics. However I think I have a reproducer now:

fn main() {
    println!("Hello, world!");
}

const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;

async fn my_fn(_a: usize, _b: usize) -> Result<(), ()> {
    Ok(())
}

Note that I'm not 100% this triggered the original ICEs, but this at least triggers the following one:

error: internal compiler error: bad_placeholder_type
 --> src/main.rs:7:27
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  |                           ^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: bad_placeholder_type
 --> src/main.rs:7:18
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  |                  ^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: bad_placeholder_type
 --> src/main.rs:7:21
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  |                     ^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: TyKind::Error constructed but no error reported
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: cat_expr Errd
 --> src/main.rs:7:31
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  |                               ^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: cat_expr Errd
 --> src/main.rs:1:11
  |
1 |   fn main() {
  |  ___________^
2 | |     println!("Hello, world!");
3 | |     drop(FN_PTR);
4 | |     drop(my_fn);
5 | | }
  | |_^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: cat_expr Errd
 --> src/main.rs:3:5
  |
3 |     drop(FN_PTR);
  |     ^^^^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: cat_expr Errd
 --> src/main.rs:3:10
  |
3 |     drop(FN_PTR);
  |          ^^^^^^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: PromoteTemps: MIR had errors
 --> src/main.rs:1:1
  |
1 | / fn main() {
2 | |     println!("Hello, world!");
3 | |     drop(FN_PTR);
4 | |     drop(my_fn);
5 | | }
  | |_^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: broken MIR in DefId(0:3 ~ test[e008]::main[0]) ("return type"): bad type [type error]
 --> src/main.rs:1:1
  |
1 | / fn main() {
2 | |     println!("Hello, world!");
3 | |     drop(FN_PTR);
4 | |     drop(my_fn);
5 | | }
  | |_^
  |
  = note: delayed at src/librustc_mir/borrow_check/type_check/mod.rs:258:27

error: internal compiler error: broken MIR in DefId(0:3 ~ test[e008]::main[0]) (LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: [type error], user_ty: None, source_info: SourceInfo { span: src/main.rs:1:1: 5:2 (#0), scope: scope[0] } }): bad type [type error]
 --> src/main.rs:1:1
  |
1 | / fn main() {
2 | |     println!("Hello, world!");
3 | |     drop(FN_PTR);
4 | |     drop(my_fn);
5 | | }
  | |_^
  |
  = note: delayed at src/librustc_mir/borrow_check/type_check/mod.rs:258:27

error: internal compiler error: mir_const_qualif: MIR had errors
 --> src/main.rs:7:1
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: PromoteTemps: MIR had errors
 --> src/main.rs:7:1
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: delayed at /rustc/50fc24d8a172a853b5dfe40702d6550e3b8562ba/src/librustc_session/session.rs:436:27

error: internal compiler error: broken MIR in DefId(0:4 ~ test[e008]::FN_PTR[0]) ("return type"): bad type [type error]
 --> src/main.rs:7:1
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: delayed at src/librustc_mir/borrow_check/type_check/mod.rs:258:27

error: internal compiler error: broken MIR in DefId(0:4 ~ test[e008]::FN_PTR[0]) (LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: [type error], user_ty: None, source_info: SourceInfo { span: src/main.rs:7:1: 7:54 (#0), scope: scope[0] } }): bad type [type error]
 --> src/main.rs:7:1
  |
7 | const FN_PTR: fn(_, _) -> _ = my_fn as fn(_, _) -> _;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: delayed at src/librustc_mir/borrow_check/type_check/mod.rs:258:27

thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:367:17
stack backtrace:
   0:        0x10834cd4e - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h13e6f26430148ff2
   1:        0x10838632c - core::fmt::write::h45a9bd04db15c24f
   2:        0x10833e567 - std::io::Write::write_fmt::h8ae61696f13218d5
   3:        0x108351885 - std::panicking::default_hook::{{closure}}::hc98fe2390b6284e5
   4:        0x1083515c2 - std::panicking::default_hook::h9a63cea866a4c14a
   5:        0x10139c988 - rustc_driver::report_ice::h6811b1f05e3fd746
   6:        0x108351ed5 - std::panicking::rust_panic_with_hook::h4d446ca45c8e1faa
   7:        0x105822abd - std::panicking::begin_panic::hba65cd1eb2ce6d69
   8:        0x105429e3f - <rustc_errors::HandlerInner as core::ops::drop::Drop>::drop::h3a03d7831429fa48
   9:        0x1013d92ca - core::ptr::drop_in_place::he612e23a92ff1daf
  10:        0x1013dd728 - <alloc::rc::Rc<T> as core::ops::drop::Drop>::drop::h86e165f15f416390
  11:        0x1013f3532 - core::ptr::drop_in_place::h6c089220cd3fa404
  12:        0x1013e92be - rustc_span::with_source_map::hcb5ea084b59b822f
  13:        0x101363d1a - rustc_interface::interface::run_compiler_in_existing_thread_pool::h4842a91ac763f9d6
  14:        0x101389479 - scoped_tls::ScopedKey<T>::set::haf496b5dd75c374f
  15:        0x1013a0cc2 - std::sys_common::backtrace::__rust_begin_short_backtrace::hac103380d443010e
  16:        0x10136acac - core::ops::function::FnOnce::call_once{{vtable.shim}}::hce68202ad15837a7
  17:        0x10835ff2d - std::sys::unix::thread::Thread::new::thread_start::h545d31fdf79b3d9e
  18:     0x7fff72d67109 - _ZL12preoptimized

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.46.0-nightly (50fc24d8a 2020-06-25) running on x86_64-apple-darwin

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

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

query stack during panic:
end of query stack
error: could not compile `test`.

To learn more, run the command again with --verbose.

The reproducer above doesn't ICE anymore. Leaving this open to track adding a regression test.

@rustbot modify labels: +E-easy +E-help-wanted

Was this page helpful?
0 / 5 - 0 ratings