Skip to content

Internal compiler error: aliasability violation with closure #21600

Closed
@nhaehnle

Description

@nhaehnle

I ran across the error mentioned in the title and was prompted to report it here. rustc --version says:

rustc 1.0.0-dev (a0f86de 2015-01-20 16:05:33 +0000)

I boiled the problematic source down to the following:

use std::rand::{Rng, StdRng};

fn maker<T, F: Fn(usize) -> T>(count: usize, f: F) -> Vec<T> {
    let mut vec = Vec::with_capacity(count);
    for i in (0..count) {
        vec.push(f(i))
    }
    vec
}

fn main() {
    let mut rng = StdRng::new().unwrap();
    let outer = maker(10, |i: usize| {
        maker(10, |j: usize| {
            rng.gen::<i32>()
        })
    });
}

Compiling this with rustc results in the following:

divmod.rs:14:19: 16:10 error: internal compiler error: aliasability violation with closure
divmod.rs:14         maker(10, |j: usize| {
divmod.rs:15             rng.gen::<i32>()
divmod.rs:16         })
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'Box<Any>', /home/haehnle/software/rust/rust/src/libsyntax/diagnostic.rs:126

stack backtrace:
   1:     0x7f21c4060770 - sys::backtrace::write::hbfbe574d5ac79465eRt
   2:     0x7f21c4082640 - failure::on_fail::hac49ad8bfddefde2J4z
   3:     0x7f21c3ff0ec0 - rt::unwind::begin_unwind_inner::hd718a69632d588d7XJz
   4:     0x7f21beba4880 - rt::unwind::begin_unwind::h8730598182994992412
   5:     0x7f21beba4810 - diagnostic::SpanHandler::span_bug::h1e2d9daefb0dc2baEpF
   6:     0x7f21c1f328c0 - session::Session::span_bug::hceb8496714e777dfAcp
   7:     0x7f21c2abbfd0 - borrowck::BorrowckCtxt<'a, 'tcx>::report_aliasability_violation::hfb956e845bfbedc6i3f
   8:     0x7f21c2ac35c0 - borrowck::gather_loans::check_aliasability::h6869eada53537427Ouc
   9:     0x7f21c2ac1120 - borrowck::gather_loans::GatherLoanCtxt<'a, 'tcx>.euv..Delegate<'tcx>::borrow::h766d85cacc46a23cBpc
  10:     0x7f21c2ab3a30 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_captures::unboxed_closure.13697
  11:     0x7f21c2aae650 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_expr::h5881053512374983811
  12:     0x7f21c2ab33f0 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::consume_expr::h15904022551803142840
  13:     0x7f21c2aae650 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_expr::h5881053512374983811
  14:     0x7f21c2ab33f0 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::consume_expr::h15904022551803142840
  15:     0x7f21c2aae160 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_block::h6225175670038727907
  16:     0x7f21c2aae650 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_expr::h5881053512374983811
  17:     0x7f21c2ab33f0 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::consume_expr::h15904022551803142840
  18:     0x7f21c2aae160 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_block::h6225175670038727907
  19:     0x7f21c2ad88f0 - borrowck::build_borrowck_dataflow_data::h20fbbabc08a99758cQe
  20:     0x7f21c2ad5630 - borrowck::borrowck_fn::h7db236c4f7804f18zNe
  21:     0x7f21c2ad7770 - visit::walk_expr::h9297717943178526058
  22:     0x7f21c2ad7770 - visit::walk_expr::h9297717943178526058
  23:     0x7f21c2ad7d20 - visit::walk_block::h2927548346589881657
  24:     0x7f21c2ad5630 - borrowck::borrowck_fn::h7db236c4f7804f18zNe
  25:     0x7f21c2ad6540 - borrowck::borrowck_item::h0f3b90d02a71b9f1xMe
  26:     0x7f21c2ad6ab0 - borrowck::check_crate::hc5485323970718eapHe
  27:     0x7f21c45bf480 - driver::phase_3_run_analysis_passes::hd1f98033b42f7478WFa
  28:     0x7f21c45acca0 - driver::compile_input::hfc013628096d192cCba
  29:     0x7f21c4677a10 - run_compiler::h017fe6509f8a740fl9b
  30:     0x7f21c4676180 - thunk::F.Invoke<A, R>::invoke::h5504034000784657795
  31:     0x7f21c46750e0 - rt::unwind::try::try_fn::h6064716710695359836
  32:     0x7f21c40f3e10 - rust_try_inner
  33:     0x7f21c40f3e00 - rust_try
  34:     0x7f21c4675390 - thunk::F.Invoke<A, R>::invoke::h9170660814324098360
  35:     0x7f21c40702b0 - sys::thread::thread_start::he7e2984bcefcedbdzGw
  36:     0x7f21be3bbfe0 - start_thread
  37:     0x7f21c3c91859 - __clone

Metadata

Metadata

Assignees

No one assigned

    Labels

    I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions