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 when merge join two btreemap #47211

Closed
WiSaGaN opened this issue Jan 5, 2018 · 3 comments
Closed

ICE when merge join two btreemap #47211

WiSaGaN opened this issue Jan 5, 2018 · 3 comments

Comments

@WiSaGaN
Copy link
Contributor

WiSaGaN commented Jan 5, 2018

ICE on 1.23 stable

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.23.0 (766bd11c8 2018-01-01) running on x86_64-unknown-linux-gnu

note: run with `RUST_BACKTRACE=1` for a backtrace

thread 'rustc' panicked at 'region_obligations not empty: [
    (
        NodeId(
            0
        ),
        RegionObligation(sub_region='_#15r, sup_type=bool)
    ),
    (
        NodeId(
            0
        ),
        RegionObligation(sub_region='_#15r, sup_type=())
    ),
    (
        NodeId(
            0
        ),
        RegionObligation(sub_region='_#16r, sup_type=bool)
    ),
    (
        NodeId(
            0
        ),
        RegionObligation(sub_region='_#16r, sup_type=())
    )
]', /checkout/src/librustc/infer/mod.rs:1161:8
stack backtrace:
   0:     0x7f979832ed93 - std::sys::imp::backtrace::tracing::imp::unwind_backtrace::hd278582b7bf125b4
                               at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1:     0x7f979832a46c - std::sys_common::backtrace::_print::h585aeaf99da81bd9
                               at /checkout/src/libstd/sys_common/backtrace.rs:68
   2:     0x7f979833c2e1 - std::panicking::default_hook::{{closure}}::h2cf5ae2c765258ee
                               at /checkout/src/libstd/sys_common/backtrace.rs:57
                               at /checkout/src/libstd/panicking.rs:381
   3:     0x7f979833bfee - std::panicking::default_hook::h4df9c6962fc8f370
                               at /checkout/src/libstd/panicking.rs:391
   4:     0x7f979833c7ea - std::panicking::rust_panic_with_hook::hec57cb9076b0053e
                               at /checkout/src/libstd/panicking.rs:577
   5:     0x7f979833c66e - std::panicking::begin_panic::hf1e5e0b8a9c20d4e
                               at /checkout/src/libstd/panicking.rs:538
   6:     0x7f979833c569 - std::panicking::begin_panic_fmt::hae9efc5efbaf8262
                               at /checkout/src/libstd/panicking.rs:522
   7:     0x7f979455d316 - rustc::infer::InferCtxt::resolve_regions_and_report_errors::h2489ea2ac57c357e
   8:     0x7f9794b8c7b7 - rustc_typeck::check::regionck::<impl rustc_typeck::check::FnCtxt<'a, 'gcx, 'tcx>>::regionck_fn::hc14e4293e3b679a8
   9:     0x7f9794c163ba - <std::thread::local::LocalKey<T>>::with::h01f73e03a15e8426
  10:     0x7f9794c8e67a - rustc::ty::context::GlobalCtxt::enter_local::h69d9e38a43681cbd
  11:     0x7f9794ba2e77 - _ZN12rustc_typeck5check16typeck_tables_of17hda1df5d1a781f516E.llvm.6CA2F5D0
  12:     0x7f979423d56f - rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_tables_of<'tcx>>::compute_result::ha75df1fb9b8d3d18
  13:     0x7f97944915f7 - _ZN5rustc9dep_graph5graph8DepGraph14with_task_impl17hfeaf2a9e09dd54d2E.llvm.F50A461C
  14:     0x7f97940e612d - rustc_errors::Handler::track_diagnostics::h164606659a2ac147
  15:     0x7f9794631c8d - rustc::ty::maps::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::cycle_check::h62e23c272a55a3c9
  16:     0x7f979423d605 - rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_tables_of<'tcx>>::force::hd19c6c4a34fec988
  17:     0x7f979423dd74 - rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_tables_of<'tcx>>::try_get::h68926bb8acb77cbb
  18:     0x7f97943f1caf - rustc::ty::maps::TyCtxtAt::typeck_tables_of::h7b9335e88bc1b0ba
  19:     0x7f979423d4e5 - rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_tables_of<'tcx>>::ensure::h439a01508b470686
  20:     0x7f9794c2ee75 - rustc::session::Session::track_errors::h4dcf1131057a0881
  21:     0x7f9794ba273a - _ZN12rustc_typeck5check18typeck_item_bodies17hab9b46dbfd42ae52E.llvm.6CA2F5D0
  22:     0x7f979423c2ef - rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_item_bodies<'tcx>>::compute_result::h1dbc736fd065c6cf
  23:     0x7f979448435b - _ZN5rustc9dep_graph5graph8DepGraph14with_task_impl17hc108b7b2e4ed98c4E.llvm.F50A461C
  24:     0x7f9794106c1f - rustc_errors::Handler::track_diagnostics::hc2b6cdaae0cd4c7a
  25:     0x7f9794637c8d - rustc::ty::maps::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::cycle_check::h7c1717b072245c43
  26:     0x7f979423c379 - rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_item_bodies<'tcx>>::force::h8f71571c8a351326
  27:     0x7f979423c991 - rustc::ty::maps::<impl rustc::ty::maps::queries::typeck_item_bodies<'tcx>>::try_get::h465200f11ebb0a04
  28:     0x7f97943f1bbd - rustc::ty::maps::TyCtxtAt::typeck_item_bodies::hf490bb31c6267e76
  29:     0x7f9794678673 - rustc::ty::maps::<impl rustc::ty::context::TyCtxt<'a, 'tcx, 'lcx>>::typeck_item_bodies::hee5e0ed807fbd890
  30:     0x7f9794c4c6f5 - rustc::util::common::time::h3d96e1b50037fb39
  31:     0x7f9794c807bb - rustc_typeck::check_crate::hc40e9fd329108497
  32:     0x7f97987757e8 - <std::thread::local::LocalKey<T>>::with::hab712da7b05f1721
  33:     0x7f9798774d2c - <std::thread::local::LocalKey<T>>::with::h860f3147313caedd
  34:     0x7f97986c0a0e - rustc::ty::context::TyCtxt::create_and_enter::h1e9eab2229a6f71b
  35:     0x7f9798708d31 - rustc_driver::driver::compile_input::h3ac66d54d480a26d
  36:     0x7f979876494a - rustc_driver::run_compiler::h189ce0baff261139
  37:     0x7f97986e4a02 - _ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h832a69c7866f656aE.llvm.E45E81C6
  38:     0x7f97983479de - __rust_maybe_catch_panic
                               at /checkout/src/libpanic_unwind/lib.rs:101
  39:     0x7f97987558c2 - _ZN50_$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$8call_box17h89fc984700f7576bE.llvm.5C5B5F27
  40:     0x7f979833b16b - std::sys::imp::thread::Thread::new::thread_start::h379d0fc65e150416
                               at /checkout/src/liballoc/boxed.rs:772
                               at /checkout/src/libstd/sys_common/thread.rs:24
                               at /checkout/src/libstd/sys/unix/thread.rs:90
  41:     0x7f979226d6b9 - start_thread
  42:     0x7f97980003dc - clone
  43:                0x0 - <unknown>

Minimal example I managed to reduce to:

extern crate itertools; 
use itertools::Itertools;
use std::collections::btree_map::BTreeMap;

pub fn foo() {
    let bar1 = BTreeMap::<(), ()>::new();
    let bar2 = BTreeMap::<(), ()>::new();
    let _ = bar1.iter().merge_join_by(bar2.iter(), |_, _| ::std::cmp::Ordering::Equal);
}

fn main() {}

Playground link: https://play.rust-lang.org/?gist=044e2ff3efea878618257649546c8753&version=stable

Works fine on 1.22.1, current beta, current nightly. ICE on 1.23.0.

@WiSaGaN
Copy link
Contributor Author

WiSaGaN commented Jan 5, 2018

Since this is fixed in nightly, I think we may only need to add a regression test if there isn't one already.

@bluss
Copy link
Member

bluss commented Jan 5, 2018

The ICE message is the same as #46069

@WiSaGaN
Copy link
Contributor Author

WiSaGaN commented Jan 6, 2018

Closing this because we already have a test added in #46069 fix: #46226.

@WiSaGaN WiSaGaN closed this as completed Jan 6, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants