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

NLL: Suggest extraction of subcomputation into a new binding #53305

Closed
wants to merge 1 commit into from

Conversation

KiChjang
Copy link
Member

@KiChjang KiChjang commented Aug 13, 2018

Fixes #47349.

r? @nikomatsakis

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Aug 13, 2018
--> $DIR/borrowck-suggest-extraction-of-subcomputation.rs:25:70
|
LL | buckets.slice_mut()[(key as usize).wrapping_add(22).wrapping_rem(buckets.sweep())] = 22;
| -----------------------------------------------------------------^^^^^^^----------
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if there's an issue filed for this diagnostic change? It looks to be a worse version of what we have in the AST borrowck.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you referring to the "really big span"?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if there is an issue but I agree it's a diagnostic regression

@rust-highfive

This comment has been minimized.

@KiChjang
Copy link
Member Author

KiChjang commented Aug 13, 2018

The complete MIR for the foo function in the test file is:

// MIR for `foo`
// source = MirSource { def_id: DefId(0/0:9 ~ borrowck_suggest_extraction_of_subcomputation[317d]::foo[0]), promoted: None }
// pass_name = SimplifyCfg-initial
// disambiguator = after

fn foo(_1: B) -> (){
    let mut _0: ();                      // return place
    scope 1 {
    }
    scope 2 {
        let _2: u32;                     // "key" in scope 2 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:24:9: 24:12
    }
    let mut _3: &mut [u32];
    let mut _4: &mut B;
    let mut _5: usize;
    let mut _6: usize;
    let mut _7: usize;
    let mut _8: u32;
    let mut _9: usize;
    let mut _10: &B;
    let mut _11: usize;
    let mut _12: bool;

    bb0: {                              
        StorageLive(_2);                 // bb0[0]: scope 0 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:24:9: 24:12
        _2 = const 0u32;                 // bb0[1]: scope 0 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:24:15: 24:19
                                         // ty::Const
                                         // + ty: u32
                                         // + val: Scalar(Bits { size: 4, bits: 0 })
                                         // mir::Constant
                                         // + span: .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:24:15: 24:19
                                         // + ty: u32
                                         // + literal: Const { ty: u32, val: Scalar(Bits { size: 4, bits: 0 }) }
        StorageLive(_3);                 // bb0[2]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:5: 25:24
        StorageLive(_4);                 // bb0[3]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:5: 25:12
        _4 = &mut _1;                    // bb0[4]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:5: 25:12
        _3 = const SliceWrapperMut::slice_mut(move _4) -> [return: bb2, unwind: bb3]; // bb0[5]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:5: 25:24
                                         // ty::Const
                                         // + ty: for<'r> fn(&'r mut B) -> &'r mut [u32] {<B as SliceWrapperMut<u32>>::slice_mut}
                                         // + val: Scalar(Bits { size: 0, bits: 0 })
                                         // mir::Constant
                                         // + span: .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:5: 25:24
                                         // + ty: for<'r> fn(&'r mut B) -> &'r mut [u32] {<B as SliceWrapperMut<u32>>::slice_mut}
                                         // + literal: Const { ty: for<'r> fn(&'r mut B) -> &'r mut [u32] {<B as SliceWrapperMut<u32>>::slice_mut}, val: Scalar(Bits { size: 0, bits: 0 }) }
    }

    bb1: {                               // cleanup
        resume;                          // bb1[0]: scope 0 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:23:1: 27:2
    }

    bb2: {                              
        StorageDead(_4);                 // bb2[0]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:23: 25:24
        StorageLive(_5);                 // bb2[1]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:25: 25:86
        StorageLive(_6);                 // bb2[2]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:25: 25:56
        StorageLive(_7);                 // bb2[3]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:25: 25:39
        StorageLive(_8);                 // bb2[4]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:26: 25:29
        _8 = _2;                         // bb2[5]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:26: 25:29
        _7 = move _8 as usize (Misc);    // bb2[6]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:25: 25:39
        StorageDead(_8);                 // bb2[7]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:38: 25:39
        _6 = const core::num::<impl usize>::wrapping_add(move _7, const 22usize) -> [return: bb4, unwind: bb3]; // bb2[8]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:25: 25:56
                                         // ty::Const
                                         // + ty: fn(usize, usize) -> usize {core::num::<impl usize>::wrapping_add}
                                         // + val: Scalar(Bits { size: 0, bits: 0 })
                                         // mir::Constant
                                         // + span: .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:25: 25:56
                                         // + ty: fn(usize, usize) -> usize {core::num::<impl usize>::wrapping_add}
                                         // + literal: Const { ty: fn(usize, usize) -> usize {core::num::<impl usize>::wrapping_add}, val: Scalar(Bits { size: 0, bits: 0 }) }
                                         // ty::Const
                                         // + ty: usize
                                         // + val: Scalar(Bits { size: 8, bits: 22 })
                                         // mir::Constant
                                         // + span: .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:53: 25:55
                                         // + ty: usize
                                         // + literal: Const { ty: usize, val: Scalar(Bits { size: 8, bits: 22 }) }
    }

    bb3: {                               // cleanup
        EndRegion();                     // bb3[0]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:5: 25:87
        drop(_1) -> bb1;                 // bb3[1]: scope 0 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:27:1: 27:2
    }

    bb4: {                              
        StorageDead(_7);                 // bb4[0]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:55: 25:56
        StorageLive(_9);                 // bb4[1]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:70: 25:85
        StorageLive(_10);                // bb4[2]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:70: 25:77
        _10 = &_1;                       // bb4[3]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:70: 25:77
        _9 = const Sweep::sweep(move _10) -> [return: bb5, unwind: bb6]; // bb4[4]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:70: 25:85
                                         // ty::Const
                                         // + ty: for<'r> fn(&'r B) -> usize {<B as Sweep>::sweep}
                                         // + val: Scalar(Bits { size: 0, bits: 0 })
                                         // mir::Constant
                                         // + span: .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:70: 25:85
                                         // + ty: for<'r> fn(&'r B) -> usize {<B as Sweep>::sweep}
                                         // + literal: Const { ty: for<'r> fn(&'r B) -> usize {<B as Sweep>::sweep}, val: Scalar(Bits { size: 0, bits: 0 }) }
    }

    bb5: {                              
        EndRegion();                     // bb5[0]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:70: 25:85
        StorageDead(_10);                // bb5[1]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:84: 25:85
        _5 = const core::num::<impl usize>::wrapping_rem(move _6, move _9) -> [return: bb7, unwind: bb3]; // bb5[2]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:25: 25:86
                                         // ty::Const
                                         // + ty: fn(usize, usize) -> usize {core::num::<impl usize>::wrapping_rem}
                                         // + val: Scalar(Bits { size: 0, bits: 0 })
                                         // mir::Constant
                                         // + span: .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:25: 25:86
                                         // + ty: fn(usize, usize) -> usize {core::num::<impl usize>::wrapping_rem}
                                         // + literal: Const { ty: fn(usize, usize) -> usize {core::num::<impl usize>::wrapping_rem}, val: Scalar(Bits { size: 0, bits: 0 }) }
    }

    bb6: {                               // cleanup
        EndRegion();                     // bb6[0]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:70: 25:85
        goto -> bb3;                     // bb6[1]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:70: 25:85
    }

    bb7: {                              
        StorageDead(_9);                 // bb7[0]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:85: 25:86
        StorageDead(_6);                 // bb7[1]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:85: 25:86
        _11 = Len((*_3));                // bb7[2]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:5: 25:87
        _12 = Lt(_5, _11);               // bb7[3]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:5: 25:87
        assert(move _12, "index out of bounds: the len is move _11 but the index is _5") -> [success: bb8, unwind: bb3]; // bb7[4]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:5: 25:87
    }

    bb8: {                              
        EndRegion();                     // bb8[0]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:5: 25:87
        (*_3)[_5] = const 22u32;         // bb8[1]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:5: 25:92
                                         // ty::Const
                                         // + ty: u32
                                         // + val: Scalar(Bits { size: 4, bits: 22 })
                                         // mir::Constant
                                         // + span: .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:90: 25:92
                                         // + ty: u32
                                         // + literal: Const { ty: u32, val: Scalar(Bits { size: 4, bits: 22 }) }
        StorageDead(_3);                 // bb8[2]: scope 1 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:25:92: 25:93
        _0 = ();                         // bb8[3]: scope 0 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:23:77: 27:2
        StorageDead(_2);                 // bb8[4]: scope 0 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:27:1: 27:2
        drop(_1) -> [return: bb9, unwind: bb1]; // bb8[5]: scope 0 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:27:1: 27:2
    }

    bb9: {                              
        return;                          // bb9[0]: scope 0 at .\src\test\ui\borrowck\borrowck-suggest-extraction-of-subcomputation.rs:27:2: 27:2
    }
}

@rust-highfive

This comment has been minimized.

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-5.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
    30% |█████████▉                      | 1.4MB 13.7MB/s eta 0:00:01
    30% |██████████                      | 1.4MB 15.1MB/s eta 0:00:01
    31% |██████████                      | 1.4MB 14.0MB/s eta 0:00:01
    31% |██████████                      | 1.4MB 12.3MB/s eta 0:00:01
    31% |█████████��[K    56% |██████████████████              | 2.5MB 22.4MB/s eta 0:00:01
    56% |██████████████████▏             | 2.5MB 15.9MB/s eta 0:00:01
    56% |██████████████████▏             | 2.5MB 15.9MB/s eta 0:00:01
    57% |██████████████████▎             | 2.5MB 19.6MB/s eta 0:00:01
    57% |██████████████████▍             | 2.5MB 19.5MB/s eta 0:00:01
---
travis_time:start:test_ui_nll
Check compiletest suite=ui mode=ui compare_mode=nll (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
[00:50:10] 
[00:50:10] running 2253 tests
[00:50:14] ............................................ii..........iii..F........F.............................
[00:50:18] ..............F...i.................................................................................
[00:50:23] ....................................................................................................
[00:50:26] ....................................................................................................
[00:50:28] ....................................................................................................
[00:50:30] ....................................................................................................
[00:50:30] ....................................................................................................
[00:50:34] ...........................F........................................................................
[00:50:37] ....................................................................................................
[00:50:39] .............................i........................................................F.............
[00:50:44] ....................................................................................................
[00:50:46] ....................................................................................................
[00:50:46] ....................................................................................................
[00:50:50] ...........................................................................F........................
[00:50:52] .................iiiiiiiii..........................................................................
[00:50:59] ....................................................................................................
[00:51:02] .......................i............................................................................
[00:51:05] ..................................i.................................................................
[00:51:08] ....................................................................................................
---
[00:51:17] 
[00:51:17] ---- [ui (nll)] ui/borrowck/issue-51117.rs stdout ----
[00:51:17] diff of stderr:
[00:51:17] 
[00:51:17] 7    |             ^^^ second mutable borrow occurs here
[00:51:17] 8 LL |             drop(baz);
[00:51:17] +    |
[00:51:17] +    |
[00:51:17] + note: consider extracting this into a `let`-binding
[00:51:17] +   --> $DIR/issue-51117.rs:20:13
[00:51:17] +    |
[00:51:17] + LL |             bar.take(); //~ ERROR cannot borrow
[00:51:17] 10 
[00:51:17] 11 error: aborting due to previous error
[00:51:17] 12 
[00:51:17] 
[00:51:17] 
[00:51:17] 
[00:51:17] The actual stderr differed from the expected stderr.
[00:51:17] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/borrowck/issue-51117.nll/issue-51117.nll.stderr
[00:51:17] To update references, rerun the tests and pass the `--bless` flag
[00:51:17] To only update this specific test, also pass `--test-args borrowck/issue-51117.rs`
[00:51:17] error: 1 errors occurred comparing output.
[00:51:17] status: exit code: 1
[00:51:17] status: exit code: 1
[00:51:17] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/borrowck/issue-51117.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/borrowck/issue-51117.nll/a" "-Zborrowck=mir" "-Ztwo-phase-borrows" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/borrowck/issue-51117.nll/auxiliary" "-A" "unused"
[00:51:17] ------------------------------------------
[00:51:17] 
[00:51:17] ------------------------------------------
[00:51:17] stderr:
[00:51:17] stderr:
[00:51:17] ------------------------------------------
[00:51:17] {"message":"cannot borrow `*bar` as mutable more than once at a time","code":{"code":"E0499","explanation":"\nA variable was borrowed as mutable more than once. Erroneous code example:\n\n```compile_fail,E0499\nlet mut i = 0;\nlet mut x = &mut i;\nlet mut a = &mut i;\n// error: cannot borrow `i` as mutable more than once at a time\n```\n\nPlease note that in rust, you can either have many immutable references, or one\nmutable reference. Take a look at\nhttps://doc.rust-lang.org/stable/book/references-and-borrowing.html for more\ninformation. Example:\n\n\n```\nlet mut i = 0;\nlet mut x = &mut i; // ok!\n\n// or:\nlet mut i = 0;\nlet a = &i; // ok!\nlet b = &i; // still ok!\nlet c = &i; // still ok!\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/borrowck/issue-51117.rs","byte_start":760,"byte_end":763,"line_start":19,"line_end":19,"column_start":14,"column_end":17,"is_primary":false,"text":[{"text":"        Some(baz) => {","highlight_start":14,"highlight_end":17}],"label":"first mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/borrowck/issue-51117.rs","byte_start":782,"byte_end":785,"line_start":20,"line_end":20,"column_start":13,"column_end":16,"is_primary":true,"text":[{"text":"            bar.take(); //~ ERROR cannot borrow","highlight_start":13,"highlight_end":16}],"label":"second mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/borrowck/issue-51117.rs","byte_start":835,"byte_end":838,"line_start":21,"line_end":21,"column_start":18,"column_end":21,"is_primary":false,"text":[{"text":"            drop(baz);","highlight_start":18,"highlight_end":21}],"label":"borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider extracting this into a `let`-binding","code":null,"level":"note","spans":[{"file_name":"/checkout/src/test/ui/borrowck/issue-51117.rs","byte_start":782,"byte_end":792,"line_start":20,"line_end":20,"column_start":13,"column_end":23,"is_primary":true,"text":[{"text":"            bar.take(); //~ ERROR cannot borrow","highlight_start":13,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"error[E0499]: cannot borrow `*bar` as mutable more than once at a time\n  --> /checkout/src/test/ui/borrowck/issue-51117.rs:20:13\n   |\nLL |         Some(baz) => {\n   |              --- first mutable borrow occurs here\nLL |             bar.take(); //~ ERROR cannot borrow\n   |             ^^^ second mutable borrow occurs here\nLL |             drop(baz);\n   |                  --- borrow later used here\n   |\nnote: consider extracting this into a `let`-binding\n  --> /checkout/src/test/ui/borrowck/issue-51117.rs:20:13\n   |\nLL |             bar.take(); //~ ERROR cannot borrow\n   |             ^^^^^^^^^^\n\n"}
[00:51:17] {"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to previous error\n\n"}
[00:51:17] {"message":"For more information about this error, try `rustc --explain E0499`.","code":null,"level":"","spans":[],"children":[],"rendered":"For more information about this error, try `rustc --explain E0499`.\n"}
[00:51:17] ------------------------------------------
[00:51:17] 
[00:51:17] thread '[ui (nll)] ui/borrowck/issue-51117.rs' panicked at 'explicit panic', tools/compiletest/src/runtest.rs:3149:9
[00:51:17] note: Run with `RUST_BACKTRACE=1` for a backtrace.
[00:51:17] note: Run with `RUST_BACKTRACE=1` for a backtrace.
[00:51:17] 
[00:51:17] ---- [ui (nll)] ui/borrowck/mut-borrow-in-loop.rs stdout ----
[00:51:17] diff of stderr:
[00:51:17] 
[00:51:17] 9    |
[00:51:17] 10 LL | impl<'a, T : 'a> FuncWrapper<'a, T> {
[00:51:17] 11    |      ^^
[00:51:17] + note: consider extracting this into a `let`-binding
[00:51:17] +   --> $DIR/mut-borrow-in-loop.rs:20:13
[00:51:17] +    |
[00:51:17] + LL |             (self.func)(arg) //~ ERROR cannot borrow
[00:51:17] 12 
[00:51:17] 12 
[00:51:17] 13 error[E0499]: cannot borrow `*arg` as mutable more than once at a time
[00:51:17] 
[00:51:17] 21    |
[00:51:17] 21    |
[00:51:17] 22 LL | impl<'a, T : 'a> FuncWrapper<'a, T> {
[00:51:17] 23    |      ^^
[00:51:17] + note: consider extracting this into a `let`-binding
[00:51:17] +   --> $DIR/mut-borrow-in-loop.rs:26:13
[00:51:17] +    |
[00:51:17] + LL |             (self.func)(arg) //~ ERROR cannot borrow
[00:51:17] 24 
[00:51:17] 24 
[00:51:17] 25 error[E0499]: cannot borrow `*arg` as mutable more than once at a time
[00:51:17] 
[00:51:17] 33    |
[00:51:17] 33    |
[00:51:17] 34 LL | impl<'a, T : 'a> FuncWrapper<'a, T> {
[00:51:17] 35    |      ^^
[00:51:17] + note: consider extracting this into a `let`-binding
[00:51:17] +   --> $DIR/mut-borrow-in-loop.rs:33:13
[00:51:17] +    |
[00:51:17] + LL |             (self.func)(arg) //~ ERROR cannot borrow
[00:51:17] 36 
[00:51:17] 37 error: aborting due to 3 previous errors
[00:51:17] 38 
[00:51:17] 
[00:51:17] 
[00:51:17] 
[00:51:17] The actual stderr differed from the expected stderr.
[00:51:17] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/borrowck/mut-borrow-in-loop.nll/mut-borrow-in-loop.nll.stderr
[00:51:17] To update references, rerun the tests and pass the `--bless` flag
[00:51:17] To only update this specific test, also pass `--test-args borrowck/mut-borrow-in-loop.rs`
[00:51:17] error: 1 errors occurred comparing output.
[00:51:17] status: exit code: 1
[00:51:17] status: exit code: 1
[00:51:17] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/borrowck/mut-borrow-in-loop.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/borrowck/mut-borrow-in-loop.nll/a" "-Zborrowck=mir" "-Ztwo-phase-borrows" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/borrowck/mut-borrow-in-loop.nll/auxiliary" "-A" "unused"
[00:51:17] ------------------------------------------
[00:51:17] 
[00:51:17] ------------------------------------------
[00:51:17] stderr:
[00:51:17] stderr:
[00:51:17] ------------------------------------------
[00:51:17] thread 'main' panicked at 'Some tests failed', tools/compiletest/src/main.rs:497:22
[00:51:17] {"message":"cannot borrow `*arg` as mutable more than once at a time","code":{"code":"E0499","explanation":"\nA variable was borrowed as mutable more than once. Erroneous code example:\n\n```compile_fail,E0499\nlet mut i = 0;\nlet mut x = &mut i;\nlet mut a = &mut i;\n// error: cannot borrow `i` as mutable more than once at a time\n```\n\nPlease note that in rust, you can either have many immutable references, or one\nmutable reference. Take a look at\nhttps://doc.rust-lang.org/sta~ ERROR cannot borrow\n   |                         ^^^ mutable borrow starts here in previous iteration of loop\n   |\nnote: borrowed value must be valid for the lifetime 'a as defined on the impl at 17:6...\n  --> /checkout/src/test/ui/borrowck/mut-borrow-in-loop.rs:17:6\n   |\nLL | impl<'a, T : 'a> FuncWrapper<'a, T> {\n   |      ^^\nnote: consider extracting this into a `let`-binding\n  --> /checkout/src/test/ui/borrowck/mut-borrow-in-loop.rs:26:13\n   |\nLL |             (self.func)(arg) //~ ERROR cannot borrow\n   |             ^^^^^^^^^^^^^^^^\n\n"}
[00:51:17] {"message":"cannot borrow `*arg` as mutable more than once at a time","code":{"code":"E0499","explanation":"\nA variable was borrowed as mutable more than once. Erroneous code example:\n\n```compile_fail,E0499\nlet mut i = 0;\nlet mut x = &mut i;\nlet mut a = &mut i;\n// error: cannot borrow `i` as mutable more than once at a time\n```\n\nPlease note that in rust, you can either have many immutable references, or one\nmutable reference. Take a look at\nhttps://doc.rust-lang.org/stable/book/references-and-borrowing.html for more\ninformation. Example:\n\n\n```\nlet mut i = 0;\nlet mut x = &mut i; // ok!\n\n// or:\nlet mut i = 0;\nlet a = &i; // ok!\nlet b = &i; // still ok!\nlet c = &i; // still ok!\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/borrowck/mut-borrow-in-loop.rs","byte_start":1017,"byte_end":1020,"line_start":33,"line_end":33,"column_start":25,"column_end":28,"is_primary":true,"text":[{"text":"            (self.func)(arg) //~ ERROR cannot borrow","highlight_start":25,"highlight_end":28}],"label":"mutable borrow starts here in previous iteration of loop","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"borrowed value must be valid for the lifetime 'a as defined on the impl at 17:6...","code":null,"level":"note","spans":[{"file_name":"/checkout/src/test/ui/borrowck/mut-borrow-in-loop.rs","byte_start":602,"byte_end":604,"line_start":17,"line_end":17,"column_start":6,"column_end":8,"is_primary":true,"text":[{"text":"impl<'a, T : 'a> FuncWrapper<'a, T> {","highlight_start":6,"highlight_end":8}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null},{"message":"consider extracting this into a `let`-binding","code":null,"level":"note","spans":[{"file_name":"/checkout/src/test/ui/borrowck/mut-borrow-in-loop.rs","byte_start":1005,"byte_end":1021,"line_start":33,"line_end":33,"column_start":13,"column_end":29,"is_primary":true,"text":[{"text":"            (self.func)(arg) //~ ERROR cannot borrow","highlight_start":13,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"error[E0499]: cannot borrow `*arg` as mutable more than once at a time\n  --> /checkout/src/test/ui/borrowck/mut-borrow-in-loop.rs:33:25\n   |\nLL |             (self.func)(arg) //~ ERROR cannot borrow\n   |                         ^^^ mutable borrow starts here in previous iteration of loop\n   |\nnote: borrowed value must be valid for the lifetime 'a as defined on the impl at 17:6...\n  --> /checkout/src/test/ui/borrowck/mut-borrow-in-loop.rs:17:6\n   |\nLL | impl<'a, T : 'a> FuncWrapper<'a, T> {\n   |      ^^\nnote: consider extracting this into a `let`-binding\n  --> /checkout/src/test/ui/borrowck/mut-borrow-in-loop.rs:33:13\n   |\nLL |             (self.func)(arg) //~ ERROR cannot borrow\n   |             ^^^^^^^^^^^^^^^^\n\n"}
[00:51:17] {"message":"aborting due to 3 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 3 previous errors\n\n"}
[00:51:17] {"message":"For more information about this error, try `rustc --explain E0499`.","code":null,"level":"","spans":[],"children":[],"rendered":"For more information about this error, try `rustc --explain E0499`.\n"}
[00:51:17] ------------------------------------------
[00:51:17] 
[00:51:17] thread '[ui (nll)] ui/borrowck/mut-borrow-in-loop.rs' panicked at 'explicit panic', tools/compiletest/src/runtest.rs:3149:9
[00:51:17] 
[00:51:17] 
[00:51:17] ---- [ui (nll)] ui/codemap_tests/one_line.rs stdout ----
[00:51:17] diff of stderr:
[00:51:17] 
[00:51:17] 7    |     |      second mutable borrow occurs here
[00:51:17] 8    |     first mutable borrow occurs here
[00:51:17] 9    |     borrow later used here
[00:51:17] +    |
[00:51:17] + note: consider extracting this into a `let`-binding
[00:51:17] +   --> $DIR/one_line.rs:13:12
[00:51:17] +    |
[00:51:17] + LL |     v.push(v.pop().unwrap()); //~ ERROR cannot borrow
[00:51:17] 10 
[00:51:17] 11 error: aborting due to previous error
[00:51:17] 12 
[00:51:17] 
[00:51:17] 
[00:51:17] 
[00:51:17] The actual stderr differed from the expected stderr.
[00:51:17] Actual stderr saved to /checkout/o-lang.org/stable/book/references-and-borrowing.html for more\ninformation. Example:\n\n\n```\nlet mut i = 0;\nlet mut x = &mut i; // ok!\n\n// or:\nlet mut i = 0;\nlet a = &i; // ok!\nlet b = &i; // still ok!\nlet c = &i; // still ok!\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/codemap_tests/one_line.rs","byte_start":531,"byte_end":532,"line_start":13,"line_end":13,"column_start":5,"column_end":6,"is_primary":false,"text":[{"text":"    v.push(v.pop().unwrap()); //~ ERROR cannot borrow","highlight_start":5,"highlight_end":6}],"label":"first mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/codemap_tests/one_line.rs","byte_start":538,"byte_end":539,"line_start":13,"line_end":13,"column_start":12,"column_end":13,"is_primary":true,"text":[{"text":"    v.push(v.pop().unwrap()); //~ ERROR cannot borrow","highlight_start":12,"highlight_end":13}],"label":"second mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/codemap_tests/one_line.rs","byte_start":531,"byte_end":555,"line_start":13,"line_end":13,"column_start":5,"column_end":29,"is_primary":false,"text":[{"text":"    v.push(v.pop().unwrap()); //~ ERROR cannot borrow","highlight_start":5,"highlight_end":29}],"label":"borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider extracting this into a `let`-binding","code":null,"level":"note","spans":[{"file_name":"/checkout/src/test/ui/codemap_tests/tdout ----
[00:51:17] 
[00:51:17] 20    |                      ^ immutable borrow occurs here
[00:51:17] 20    |                      ^ immutable borrow occurs here
[00:51:17] 21 LL |       b.resume();
[00:51:17] +    |
[00:51:17] +    |
[00:51:17] + note: consider extracting this into a `let`-binding
[00:51:17] +   --> $DIR/yield-while-iterating.rs:67:20
[00:51:17] +    |
[00:51:17] + LL |     println!("{}", x[0]); //~ ERROR
[00:51:17] 23 
[00:51:17] 24 error: aborting due to 2 previous errors
[00:51:17] 25 
[00:51:17] 
[00:51:17] 
[00:51:17] 
[00:51:17] The actual stderr differed from the expected stderr.
[00:51:17] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/yield-while-iterating.nll/yield-while-iterating.nll.stderr
[00:51:17] To update references, rerun the tests and pass the `--bless` flag
[00:51:17] To only update this specific test, also pass `--test-args generator/yield-while-iterating.rs`
[00:51:17] error: 1 errors occurred comparing output.
[00:51:17] status: exit code: 1
[00:51:17] status: exit code: 1
[00:51:17] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/generator/yield-while-iterating.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/yield-while-iterating.nll/a" "-Zborrowck=mir" "-Ztwo-phase-borrows" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/generator/yield-while-iterating.nll/auxiliary" "-A" "unused"
[00:51:17] ------------------------------------------
[00:51:17] 
[00:51:17] ------------------------------------------
[00:51:17] stderr:
[00:51:17] stderr:
[00:51:17] ------------------------------------------
[00:51:17] {"message":"borrow may still be in use when generator yields","code":{"code":"E0626","explanation":"\nThis error occurs because a borrow in a generator persists across a\nyield point.\n\n```compile_fail,E0626\n# #![feature(generators, generator_trait)]\n# use std::ops::Generator;\nlet mut b = || {\n    let a = &String::new(); // <-- This borrow...\n    yield (); // ...is still in scope here, when the yield occurs.\n    println!(\"{}\", a);\n};\nunsafe { b.resume() };\n```\n\nAt present, it is not permitted to have a yield that occurs while a\nborrow is still in scope. To resolve this error, the borrow must\neither be \"contained\" to a smaller scope that does not overlap the\nyield or else eliminated in another way. So, for example, we might\nresolve the previous example by removing the borrow and just storing\nthe integer by value:\n\n```\n# #![feature(generators, generator_trait)]\n# use std::ops::Generator;\nlet mut b = || {\n    let a = 3;\n    yield ();\n    println!(\"{}\", a);\n};\nunsafe { b.resume() };\n```\n\nThis is a very simple case, of course. In more complex cases, we may\nwish to have more than one reference to the value that was borrowed --\nin those cases, something like the `Rc` or `Arc` types may be useful.\n\nThis error also frequently arises with iteration:\n\n```compile_fail,E0626\n# #![feature(generators, generator_trait)]\ext":[{"text":"        for p in &x { //~ ERROR","highlight_start":18,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0626]: borrow may still be in use when generator yields\n  --> /checkout/src/test/ui/generator/yield-while-iterating.rs:22:18\n   |\nLL |         for p in &x { //~ ERROR\n   |                  ^^\nLL |             yield();\n   |             ------- possible yield occurs here\n\n"}
[00:51:17] {"message":"cannot borrow `x` as immutable because it is also borrowed as mutable","code":{"code":"E0502","explanation":"\nThis error indicates that you are trying to borrow a variable as mutable when it\nhas already been borrowed as immutable.\n\nExample of erroneous code:\n\n```compile_fail,E0502\nfn bar(x: &mut i32) {}\nfn foo(a: &mut i32) {\n    let ref y = a; // a is borrowed as immutable.\n    bar(a); // error: cannot borrow `*a` as mutable because `a` is also borrowed\n            //        as immutable\n}\n```\n\nTo fix this error, ensure that you don't have any other references to the\nvariable before trying to access it mutably:\n\n```\nfn bar(x: &mut i32) {}\nfn foo(a: &mut i32) {\n    bar(a);\n    let ref y = a; // ok!\n}\n```\n\nFor more information on the rust ownership system, take a look at\nhttps://doc.rust-lang.org/stable/book/references-and-borrowing.html.\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/generator/yield-while-iterating.rs","byte_start":1798,"byte_end":1799,"line_start":67,"line_end":67,"column_start":20,"column_end":21,"is_primary":true,"text":[{"text":"    println!(\"{}\", ability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable\n  --> /checkout/src/test/ui/generator/yield-while-iterating.rs:67:20\n   |\nLL |       let mut b = || {\n   |  _________________-\nLL | |         for p in &mut x {\nLL | |             yield p;\nLL | |         }\nLL | |     };\n   | |_____- mutable borrow occurs here\nLL |       println!(\"{}\", x[0]); //~ ERROR\n   |                      ^ immutable borrow occurs here\nLL |       b.resume();\n   |       - borrow later used here\n   |\nnote: consider extracting this into a `let`-binding\n  --> /checkout/src/test/ui/generator/yield-while-iterating.rs:67:20\n   |\nLL |     println!(\"{}\", x[0]); //~ ERROR\n   |                    ^^^^\n\n"}
[00:51:17] {"message":"aborting due to 2 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 2 previous errors\n\n"}
[00:51:17] {"message":"Some errors occurred: E0502, E0626.","code":null,"level":"","spans":[],"children":[],"rendered":"Some errors occurred: E0502, E0626.\n"}
[00:51:17] {"message":"For more information about an error, try `rustc --explain E0502`.","code":null,"level":"","spans":[],"children":[],"rendered":"For more information about an error, try `rustc --explain E0502`.\n"}
[00:51:17] ------------------------------------------
[00:51:17] 
[00:51:17] thread '[ui (nll)] ui/generator/yield-while-iterating.rs' panicked at 'explicit panic', tools/compiletest/src/runtest.rs:3149:9
[00:51:17] 
[00:51:17] 
[00:51:17] ---- [ui (nll)] ui/issue-18566.rs stdout ----
[00:51:17] diff of stderr:
[00:51:17] 
[00:51:17] 7    |     |     |       second mutable borrow occurs here
[00:51:17] 8    |     |     first mutable borrow occurs here
[00:51:17] 9    |     borrow later used here
[00:51:17] +    |
[00:51:17] + note: consider extracting this into a `let`-binding
[00:51:17] +   --> $DIR/issue-18566.rs:33:5
[00:51:17] +    |
[00:51:17] + LL |     MyPtr(s).poke(s);
[00:51:17] 10 
[00:51:17] 11 error: aborting due to previous error
[00:51:17] 12 
[00:51:17] 
[00:51:17] 
[00:51:17] 
[00:51:17] The actual stderr differed from the expected stderr.
[00:51:17] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issue-18566.nll/issue-18566.nll.stderr
[00:51:17] To update references, rerun the tests and pass the `--bless` flag
[00:51:17] To only update this specific test, also pass `--test-args issue-18566.rs`
[00:51:17] error: 1 errors occurred comparing output.
[00:51:17] status: exit code: 1
[00:51:17] status: exit code: 1
[00:51:17] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/issue-18566.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issue-18566.nll/a" "-Zborrowck=mir" "-Ztwo-phase-borrows" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issue-18566.nll/auxiliary" "-A" "unused"
[00:51:17] ------------------------------------------
[00:51:17] 
[00:51:17] ------------------------------------------
[00:51:17] stderr:
[00:51:17] stderr:
[00:51:17] ------------------------------------------
[00:51:17] {"message":"cannot borrow `*s` as mutable more than once at a time","code":{"code":"E0499","explanation":"\nA variable was borrowed as mutable more than once. Erroneous code example:\n\n```compile_fail,E0499\nlet mut i = 0;\nlet mut x = &mut i;\nlet mut a = &mut i;\n// error: cannot borrow `i` as mutable more than once at a time\n```\n\nPlease note that in rust, you can either have many immutable references, or one\nmutable reference. Take a look at\nhttps://doc.rust-lang.org/stable/book/references-and-borrowing.html for more\ninformation. Example:\n\n\n```\nlet mut i = 0;\nlet mut x = &mut i; // ok!\n\n// or:\nlet mut i = 0;\nlet a = &i; // ok!\nlet b = &i; // still ok!\nlet c = &i; // still ok!\n```\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/issue-18566.rs","byte_start":807,"byte_end":808,"line_start":33,"line_end":33,"column_start":11,"column_end":12,"is_primary":false,"text":[{"text":"    MyPtr(s).poke(s);","highlight_start":11,"highlight_end":12}],"label":"first mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/issue-18566.rs","byte_start":815,"byte_end":816,"line_start":33,"line_end":33,"column_start":19,"column_end":20,"is_primary":true,"text":[{"text":"    MyPtr(s).poke(s);","highlight_start":19,"highlight_end":20}],"label":"second mutable borrow occurs here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/issue-18566.rs","byte_start":801,"byte_end":817,"line_start":33,"line_end":33,"column_start":5,"column_end":21,"is_primary":false,"text":[{"text":"    MyPtr(s).poke(s);","highlight_start":5,"highlight_end":21}],"label":"borrow later used here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider extracting this into a `let`-binding","code":null,"level":"note","spans":[{"file_name":"/checkout/src/test/ui/issue-18566.rs","byte_start":801,"byte_end":817,"line_start":33,"line_end":33,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    MyPtr(s).poke(s);","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"error[E0499]: cannot borrow `*s` as mutable more than once at a time\n  --> /checkout/src/test/ui/issue-18566.rs:33:19\n   |\nLL |     MyPtr(s).poke(s);\n   |     --------------^-\n   |     |     |       |\n   |     |     |       second mutable borrow occurs here\n   |     |     first mutable borrow occurs here\n   |     borrow later used here\n   |\nnote: consider extracting this into a `let`-binding\n  --> /checkout/src/test/ui/issue-18566.rs:33:5\n   |\nLL |     MyPtr(s).poke(s);\n   |     ^^^^^^^^^^^^^^^^\n\n"}
[00:51:17] {"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to previous error\n\n"}
[00:51:17] {"message":"For more information about this error, try `rustc --explain E0499`.","code":null,"level":"","spans":[],"children":[],"rendered":"For more information about this error, try `rustc --explain E0499`.\n"}
[00:51:17] ------------------------------------------
[00:51:17] 
[00:51:17] thread '[ui (nll)] ui/issue-18566.rs' panicked at 'explicit panic', tools/compiletest/src/runtest.rs:3149:9
[00:51:17] 
[00:51:17] 
[00:51:17] ---- [ui (nll)] ui/issue-42106.rs stdout ----
[00:51:17] diff of stderr:
[00:51:17] 
[00:51:17] 7    |     ^^^^^^^^^^ mutable borrow occurs here
[00:51:17] 8 LL |     _a.use_ref();
[00:51:17] +    |
[00:51:17] +    |
[00:51:17] + note: consider extracting this into a `let`-binding
[00:51:17] +   --> $DIR/issue-42106.rs:13:5
[00:51:17] +    |
[00:51:17] + LL |     collection.swap(1, 2); //~ ERROR also borrowed as immutable
[00:51:17] 10 
[00:51:17] 11 error: aborting due to previous error
[00:51:17] 12 
[00:51:17] 
[00:51:17] 
[00:51:17] 
[00:51:17] The actual stderr differed from the expected stderr.
[00:51:17] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issue-42106.nll/issue-42106.nll.stderr
[00:51:17] To update references, rerun the tests and pass the `--bless` flag
[00:51:17] To only update this specific test, also pass `--test-args issue-42106.rs`
[00:51:17] error: 1 errors occurred comparing output.
[00:51:17] status: exit code: 1
[00:51:17] status: exit code: 1
[00:51:17] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/issue-42106.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnuools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/ui" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "ui" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-5.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Zunstable-options " "--target-rustcflags" "-Crpath -O -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "5.0.0\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always" "--compare-mode" "nll"
[00:51:17] 
[00:51:17] 
[00:51:17] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
[00:51:17] Build completed unsuccessfully in 0:03:25
[00:51:17] Build completed unsuccessfully in 0:03:25
[00:51:17] Makefile:58: recipe for target 'check' failed
[00:51:17] make: *** [check] Error 1
is-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: Local APIC address 0xfee00000
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] SRAT: PXM 0 -> APIC 0x00 -> Node 0
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] SRAT: PXM 0 -> APIC 0x01 -> Node 0
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] SRAT: PXM 0 -> APIC 0x02 -> Node 0
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] SRAT: PXM 0 -> APIC 0x03 -> Node 0
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] SRAT: Node 0 PXM 0 [mem 0x00000000-0x0009ffff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] SRAT: Node 0 PXM 0 [mem 0x00100000-0xbfffffff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] SRAT: Node 0 PXM 0 [mem 0x100000000-0x3ffffffff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] NUMA: Node 0 [mem 0x00000000-0x0009ffff] + [mem 0x00100000-0xbfffffff] -> [mem 0x00000000-0xbfffffff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] NUMA: Node 0 [mem 0x00000000-0xbfffffff] + [mem 0x100000000-0x3ffffffff] -> [mem 0x00000000-0x3ffffffff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] NODE_DATA(0) allocated [mem 0x3ffff9000-0x3ffffdfff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] kvm-clock: Using msrs 4b564d01 and 4b56avis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000]   node   0: [mem 0x0000000100000000-0x00000003ffffffff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x00000003ffffffff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] On node 0 totalpages: 3932049
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000]   DMA zone: 64 pages used for memmap
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000]   DMA zone: 21 pages reserved
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000]   DMA zone: 3998 pages, LIFO batch:0
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000]   DMA32 zone: 12224 pages used for memmap
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000]   DMA32 zone: 782323 pages, LIFO batch:31
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000]   Normal zone: 49152 pages used for memmap
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000]   Normal zone: 3145728 pages, LIFO batch:31
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: PM-Timer IO Port: 0xb008
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: Local APIC address 0xfee00000
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] IOAPIC[0]: apic_id 0, version 17, address 0xfec00000, GSI 0-23
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: IRQ5 used by override.
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: IRQ9 used by override.
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: IRQ10 used by override.
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] ACPI: IRQ11 used by override.
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] Using ACPI (MADT) for SMP configuration information
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000effff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] PM: Registered nosave memory: [mem 0xbfff3000-0xbfffffff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] PM: Registered nosave memory: [mem 0xc0000000-0xfffbbfff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] PM: Registered nosave memory: [mem 0xfffbc000-0xffffffff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] e820: [mem 0xc0000000-0xfffbbfff] available for PCI devices
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] Booting paravirtualized kernel on KVM
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] setup_percpu: NR_CPUS:512 nr_cpumask_bits:512 nr_cpu_ids:4 nr_node_ids:1
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] PERCPU: Embedded 34 pages/cpu @ffff8803ffc00000 s98392 r8192 d32680 u524288
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] pcpu-alloc: s98392 r8192 d32680 u524288 alloc=1*2097152
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] pcpu-alloc: [0] 0 1 2 3 
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] Built 1 zonelists in Node order, mobility grouping on.  Total pages: 3870588
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] Policy zone: Normal
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-101-generic root=UUID=752b4ef1-0512-4cae-b541-f03ffd29be1b ro cgroup_enable=memory swapaccount=1 apparmor=0 console=ttyS0 console=ttyS0
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] Calgary: detecting Calgary via BIOS EBDA area
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] Memory: 15375492K/15728196K available (8272K kernel code, 1304K rwdata, 4004K rodata, 1496K init, 1316K bss, 352704K reserved, 0K cma-reserved)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Aug 13 09:56:43 travis-job-419f72a (18400.00 BogoMIPS)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.552624] devtmpfs: initialized
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.556302] evm: security.selinux
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.556890] evm: security.SMACK64
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.557368] evm: security.SMACK64EXEC
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.558022] evm: security.SMACK64TRANSMUTE
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.558969] evm: security.SMACK64MMAP
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.559662] evm: security.ima
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.560083] evm: security.capability
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.560881] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.562365] futex hash table entries: 1024 (order: 4, 65536 bytes)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.563477] pinctrl core: initialized pinctrl subsystem
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.564386] RTC time:  9:56:32, date: 08/13/18
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.565874] NET: Registered protocol family 16
Aug 13 09:56:43 travis-job-419271a0d3c9 kernel: [    0.633450] ACPI: Using IOAPIC for interrupt routing
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.634170] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.662913] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.663882] acpi PNP0A03:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.664810] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.665986] acpi PNP0A03:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.668401] PCI host bridge to bus 0000:00
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.669012] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.670140] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.671052] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.672198] pci_bus 0000:00: root bus resource [mem 0xc0000000-0xfebfffff window]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.673342] pci_bus 0000:00: root bus resource [bus 00-ff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.674179] pci 0000:00:00.0: [8086:1237] type 00 class 0x060000
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.674593] pci 0000:00:01.0: [8086:7110] type 00 class 0x060100
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.688132] pci 0000:00:01.3: [8086:7113] type 00 class 0x068000
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.701661] pci 0000:00:01.3: quirk: [io  0xb000-0xb03f] claimed by PIIX4 ACPI
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.703559] pci 0000:00:03.0: [1af4:1004] type 00 class 0x000000
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.708577] pci 0000:00:03.0: reg 0x10: [io  0xc000-0xc03f]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.712585] pci 0000:00:03.0: reg 0x14: [mem 0xfebfe000-0xfebfe07f]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.723901] pci 0000:00:04.0: [1af4:1000] type 00 class 0x020000
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.728574] pci 0000:00:04.0: reg 0x10: [io  0xc040-0xc07f]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.732914] pci 0000:00:04.0: reg 0x14: [mem 0xfebff000-0xfebff0ff]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.746981] ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.749373] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 *10 11)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.751775] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 10 *11)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.754059] ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 *11)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.756127] ACPI: PCI Interrupt Link [LNKS] (IRQs *9)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.775890] ACPI: Enabled 16 GPEs in block 00 to 0F
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.777379] vgaarb: loaded
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.778046] SCSI subsystem initialized
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.779017] libata version 3.00 loaded.
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.779050] ACPI: bus type USB registered
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.779685] usbcore: registered new interface driver usbfs
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.780458] usbcore: registered new interface driver hub
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.781241] usbcore: registered new device driver usb
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.782215] ioremap error for 0xbfffd000-0xc: Plug and Play ACPI device, IDs PNP0b00 (active)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.796859] pnp 00:01: Plug and Play ACPI device, IDs PNP0303 (active)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.796901] pnp 00:02: Plug and Play ACPI device, IDs PNP0f13 (active)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.796949] pnp 00:03: Plug and Play ACPI device, IDs PNP0501 (active)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.796989] pnp 00:04: Plug and Play ACPI device, IDs PNP0501 (active)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.797028] pnp 00:05: Plug and Play ACPI device, IDs PNP0501 (active)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.797076] pnp 00:06: Plug and Play ACPI device, IDs PNP0501 (active)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.797242] pnp: PnP ACPI: found 7 devices
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.804369] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.805794] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.805796] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.805798] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.805799] pci_bus 0000:00: resource 7 [mem 0xc0000000-0xfebfffff window]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.805828] NET: Registered protocol family 2
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.806648] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.808336] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.809461] TCP: Hash tables configured (established 131072 bind 65536)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.810592] UDP hash table entries: 8192 (order: 6, 262144 bytes)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.811513] UDP-Lite hash table entries: 8192 (order: 6, 262144 bytes)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.813456] NET: Registered protocol family 1
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.814099] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.814963] PCI: CLS 0 bytes, default 64
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    0.815007] Unpacking initramfs...
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.855191] Freeing initrd memory: 21432K
Aug 13 09:56:43 tra scheduler cfq registered
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.955900] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.959295] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.963167] intel_idle: does not run on family 6 model 63
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.963278] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.967813] ACPI: Power Button [PWRF]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.970218] input: Sleep Button as /devices/LNXSYSTM:00/LNXSLPBN:00/input/input1
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.975532] ACPI: Sleep Button [SLPF]
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.978411] GHES: HEST is not enabled!
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.983825] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.987305] virtio-pci 0000:00:03.0: virtio_pci: leaving for legacy driver
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    2.998144] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 10
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.002126] virtio-pci 0000:00:04.0: virtio_pci: leaving for legacy driver
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.014007] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.040330] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.066164] 00:04: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.094547] 00:05: ttyS2 at I/O 0x3e8 (irq = 6, base_baud = 115200) is a 16550A
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.120988] 00:06: ttyS3 at I/O 0x2e8 (irq = 7, base_baud = 115200) is a 16550A
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.130494] Linux agpgart interface v0.103
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.138619] loop: module loaded
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.141195] libphy: Fixed MDIO Bus: probed
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.143983] tun: Universal TUN/TAP device driver, 1.6
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.148106] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.201415] PPP generic driver version 2.4.2
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.204435] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.209544] ehci-pci: EHCI PCI platform driver
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.212129] ehci-platform: EHCI generic platform driver
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.215442] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.219864] ohci-pci: OHCI PCI platform driver
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.222839] ohci-platform: OHCI generic platform driver
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.225908] uhci_hcd: USB Universal Host Controller Interface driver
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.229952] i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.235567] i8042: Warning: Keylock active
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.238818] serio: i8042 KBD port at 0x60,0x64 irq 1
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.242877] serio: i8042 AUX port at 0x60,0x64 irq 12
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.246587] mousedev: PS/2 mouse device common for all mice
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.250296] rtc_cmos 00:00: RTC can wake from S4
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.253244] rtc_cmos 00:00: rtc core: registered rtc_cmos as rtc0
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.256573] rtc_cmos 00:00: alarms up to one day, 114 bytes nvram
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.260225] i2c /dev entries driver
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.261897] device-mapper: uevent: version 1.0.3
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.264373] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.270194] ledtrig-cpu: registered to indicate activity on CPUs
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.274273] NET: Registered protocol family 10
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.277159] NET: Registered protocol family 17
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.279172] Key type dns_resolver registered
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.281860] microcode: CPU0 sig=0x306f0, pf=0x1, revision=0x1
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.285014] microcode: CPU1 sig=0x306f0, pf=0x1, revision=0x1
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    3.288309] microcode: CPU2 sig=0x306f0, pf=0x1, revision=0x1
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c97048.000 MB/sec
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    8.247715] Btrfs loaded
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    8.320572] EXT4-fs (sda1): INFO: recovery required on readonly filesystem
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    8.324154] EXT4-fs (sda1): write access will be enabled during recovery
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    8.417228] EXT4-fs (sda1): orphan cleanup on readonly fs
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    8.427171] EXT4-fs (sda1): 6 orphan inodes deleted
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    8.430150] EXT4-fs (sda1): recovery complete
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    8.438972] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    8.691409] random: init: uninitialized urandom read (12 bytes read, 23 bits of entropy available)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    8.844714] random: mountall: uninitialized urandom read (12 bytes read, 26 bits of entropy available)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    8.907514] EXT4-fs (sda1): re-mounted. Opts: (null)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [    9.150678] random: cloud-init: uninitialized urandom read (32 bytes read, 32 bits of entropy available)
Aug 13 09:56:43 travis-job-ob-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [   10.977988] random: mktemp: uninitialized urandom read (6 bytes read, 54 bits of entropy available)
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [   11.066765] EXT4-fs (sda1): resizing filesystem from 3931904 to 7864064 blocks
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [   11.119967] EXT4-fs (sda1): resized filesystem to 7864064
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [   11.542107] init: failsafe main process (1096) killed by TERM signal
Aug 13 09:56:43 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 rsyslogd-2039: Could no open output pipe '/dev/xconsole': No such file or directory [try http://www.rsyslog.com/e/2039 ]
Aug 13 09:56:44 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 instance-setup: INFO Running set_multiqueue.
Aug 13 09:56:44 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 instance-setup: INFO Set channels for eth0 to 4.
Aug 13 09:56:44 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 instance-setup: INFO Setting /proc/irq/25/smp_affinity_list to 0 for device virtio1.
Aug 13 09:56:44 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 instance-setup: INFO /proc/irq/25/smp_affinity_list: real affinity 0
Aug 13 09:56:44 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 instance-setup: INFO Setting /proc/irq/26/smp_affinity_list to 0 for device virtio1.
Aug 13 09:56:44 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 instance-setup: INFO /proc/irq/26/smp_affinity_list: real affinity 0
Aug 13 09:56:44 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 instance-setup: INFO Sett:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [   13.154791] ctnetlink v0.93: registering with nfnetlink.
Aug 13 09:56:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 google-accounts: INFO Created user account carmen.
Aug 13 09:56:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 google-accounts: INFO Creating a new user account for maria.
Aug 13 09:56:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 google-accounts: INFO Created user account maria.
Aug 13 09:56:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 pollinate: system was previously seeded at [2017-12-05 19:31:29.715998981 +0000]
Aug 13 09:56:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 pollinate: To re-seed this system again, use the -r|--reseed option
Aug 13 09:56:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 google-accounts: INFO Removing user packer.
Aug 13 09:56:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 cron[1710]: (CRON) INFO (pidfile fd = 3)
Aug 13 09:56:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 cron[1744]: (CRON) STARTUP (fork ok)
Aug 13 09:56:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 cron[1744]: (CRON) INFO (Running @reboot jobs)
Aug 13 09:56:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 pollinate: system was previously seeded at [2017-12-05 19:31:29.715998981 +0000]
Aug 13 09:56:45 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 pollinate: To re-seed this system again, use the -r|--reseed option
Aug 13 09:56:46 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 acpid: starting up with netlink and the input layer
Aug 13 09:56:46 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 acpid: ]: Listening on routing socket on fd #21 for interface updates
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [   19.147249] init: plymouth-upstart-bridge main process ended, respawning
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 startup-script: INFO Found startup-script in metadata.
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 startup-script: INFO startup-script: warning: commands will be executed using /bin/sh
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 startup-script: INFO startup-script: job 1 at Mon Aug 13 13:06:00 2018
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 startup-script: INFO startup-script: Return code 0.
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 startup-script: INFO startup-script: Return code 0.
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 startup-script: INFO Finished running startup scripts.
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 ec2: 
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 ec2: #############################################################
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 ec2: -----BEGIN SSH HOST KEY FINGERPRINTS-----
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 ec2: 1024 8b:ad:af:1a:91:b9:13:2d:1b:48:51:39:64:31:d6:56  root@travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 (DSA)
Aug 13 09:56:51 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 ec2: 256 38:de:9b:90:d4:66:24:da:d1:18:3d:5f:ae:a4:f5:85  root@travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 (ECDSA)
Auor in the future.
Aug 13 09:59:18 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [  166.528642] cgroup: "memory" requires setting use_hierarchy to 1 on the root
Aug 13 09:59:18 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [  166.604174] eth0: renamed from vethe2394ba
Aug 13 09:59:18 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [  166.643740] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
Aug 13 09:59:18 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [  166.644854] docker0: port 1(veth1386b8a) entered forwarding state
Aug 13 09:59:18 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [  166.644870] docker0: port 1(veth1386b8a) entered forwarding state
Aug 13 09:59:18 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [  166.644894] IPv6: ADDRCONF(NETDEV_CHANGE): docker0: link becomes ready
Aug 13 09:59:22 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 ntpd[1846]: Listen normally on 5 docker0 fe80::42:93ff:fe97:6d02 UDP 123
Aug 13 09:59:22 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 ntpd[1846]: Listen normally on 6 docker0 fe80::1 UDP 123
Aug 13 09:59:22 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 ntpd[1846]: Listen normally on 7 docker0 fd9a:8454:6789:13f7::1 UDP 123
Aug 13 09:59:22 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 ntpd[1846]: peers refreshed
Aug 13 09:59:22 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 ntpd[1846]: new interface(s) found: waking up resolver
Aug 13 09:59:33 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [  181.679705] docker0: port 1(veth1386b8a) entered forwarding state
Aug 13 10:17:02 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 CRON[12951]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Aug 13 10:49:47 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [ 3194.923943] vethe2394ba: renamed from eth0
Aug 13 10:49:47 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [ 3194.960296] docker0: port 1(veth1386b8a) entered disabled state
Aug 13 10:49:47 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [ 3194.986895] docker0: port 1(veth1386b8a) entered disabled state
Aug 13 10:49:47 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [ 3194.988610] device veth1386b8a left promiscuous mode
Aug 13 10:49:47 travis-job-419f72aa-48e1-4c0b-975b-a13271a0d3c9 kernel: [ 3194.988618] docker0: port 1(veth1386b8a) entered disabled state
travis_fold:end:after_failure.1
travis_fold:start:after_failure.2
travis_time:start:1f9a796c

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@KiChjang
Copy link
Member Author

One of the failed tests is quite interesting:

[00:51:17] thread '[ui (nll)] ui/borrowck/mut-borrow-in-loop.rs' panicked at 'explicit panic', tools/compiletest/src/runtest.rs:3149:9
[00:51:17] 
[00:51:17] ---- [ui (nll)] ui/codemap_tests/one_line.rs stdout ----
[00:51:17] diff of stderr:
[00:51:17] 
[00:51:17] 7	   |     |      second mutable borrow occurs here
[00:51:17] 8	   |     first mutable borrow occurs here
[00:51:17] 9	   |     borrow later used here
[00:51:17] +	   |
[00:51:17] +	note: consider extracting this into a `let`-binding
[00:51:17] +	  --> $DIR/one_line.rs:13:12
[00:51:17] +	   |
[00:51:17] +	LL |     v.push(v.pop().unwrap()); //~ ERROR cannot borrow
[00:51:17] +	   |            ^^^^^^^
[00:51:17] 10	
[00:51:17] 11	error: aborting due to previous error

It does feel like this PR is making the right recommendation for this test, but the rest of the failed test cases indicate that the current check requires more refinement.

@KiChjang
Copy link
Member Author

KiChjang commented Aug 21, 2018

@nikomatsakis To explain more what I was suggesting in Zulip, consider the MIR I've posted above:

In bb0[4], we have an assignment of a mutable reference of _1 to _4, which then immediately gets used as an argument to a function in the next statement, the return value of which is stored in _3. Since there is no other statement between the assignment and the use of _4, there would not be a chance to run the analysis at all. I think a more correct formulation of the rule would be to check when _1 starts being borrowed and when its StorageDead statement is emitted.

@nikomatsakis
Copy link
Contributor

@KiChjang

I'm a bit confused by your comment.

...since there is no other statement between the assignment and the use of _4, there would not be a chance to run the analysis at all...

I'm not sure what you mean here -- run which analysis? Ah, I guess you are referring to these conditions that I wrote earlier:

I am imagining something like this:

  • If the "starting borrow" is written into a temporary, and that temporary (or some other temporary that it is copied into) winds up being ultimately used as the argument to a call;
  • and the "error case" comes between that starting borrow and the call

then we might add a note like

"consider extracting this into a fresh variable with a let"

I agree that what I wrote here doesn't seem exactly correct. When I wrote 'the call', of course, I was referring not to the call to IndexMut but rather the call to wrapping_rem that occurs later.

One challenge is that this suggestion is sort of a "tree-based" one -- we basically want to see whether we could re-order some subcomputation (like buckets.sweep()) so as to make it occur before the borrow that is causing the conflict.

Specifically I was looking for the case where you have foo(xxx, ..., yyy), where the computation xxx is causing the mutable borrow somehow, and the computation yyy is causing the (conflicting) shared borrow.

I don't really think that looking for StorageDead is necessarily what we are after.

@nikomatsakis
Copy link
Contributor

Sorry, that comment isn't really a "conclusion" -- more just me musing to myself. =) I have to run now though, will try to think a bit more in a bit.

@nikomatsakis
Copy link
Contributor

Let me know though if what I wrote makes sense and is 'aligned' with how you are thinking about the problem. =)

@nikomatsakis
Copy link
Contributor

@KiChjang so what do you think? After our discussion on Zulip I'm feeling a bit uncertain how to proceed here.

@KiChjang
Copy link
Member Author

@nikomatsakis Same here unfortunately, there doesn't seem to be a clear path forward, except for the "availability" analysis you mentioned, which is much more involved than what this PR is and I think that one is worth specc'ing out first. I have a feeling that anything else we do currently would be an inaccurate approximation of what the desired behavior is.

@nikomatsakis
Copy link
Contributor

OK, I guess we'll close this PR for now. We should raise the original issue for discussion today perhaps.

@KiChjang KiChjang deleted the issue-47439 branch September 3, 2018 11:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-review Status: Awaiting review from the assignee but also interested parties.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants