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] Be more permissive when checking access due to Match #53438

Merged
merged 9 commits into from
Sep 25, 2018

Conversation

matthewjasper
Copy link
Contributor

@matthewjasper matthewjasper commented Aug 16, 2018

Partially addresses #53114. notably, we should now have parity with AST borrowck. Matching on uninitialized values is still forbidden.

  • Give fake borrows for match their own BorrowKind
  • Allow borrows with this kind to happen on values that are already mutably borrowed.
  • Track borrows with this type even behind shared reference dereferences and consider all accesses to be deep when checking for conflicts with this borrow type. See src/test/ui/issues/issue-27282-mutate-before-diverging-arm-3.rs for an example soundness issue this fixes (a case of Can mutate in match-arm using a closureΒ #27282 that wasn't handled correctly).
  • Create a new BorrowKind: Shallow (name can be bike-shed)
  • Shallow borrows differ from shared borrows in that
    • When we check for access we treat them as a Shallow(Some(_)) read
    • When we check for conflicts with them, if the borrow place is a strict prefix of the access place then we don't consider that a conflict.
      • For example, a Shallow borrow of x does not conflict with any access or borrow of x.0 or *x
  • Remove the current fake borrow in matches.
  • When building matches, we take a Shallow borrow of any Place that we switch on or bind in a match, and any prefix of those places. (There are some optimizations where we do fewer borrows, but this shouldn't change semantics)
    • match x { &Some(1) => (), _ => (), } would Shallow borrow x, *x and (*x as Some).0 (the *x borrow is unnecessary, but I'm not sure how easy it would be to remove.)
  • Replace the fake discriminant read with a ReadForMatch.
  • Change ReadForMatch to only check for initializedness (to prevent let x: !; match x {}), but not conflicting borrows. It is still considered a use for liveness and unsafe checking.
  • Give special cased error messages for this kind of borrow.

Table from the above issue after this PR

Thing AST MIR Want Example
let _ = <unsafe-field> πŸ’š πŸ’š ❌ playground
match <unsafe_field> { _ => () } ❌ ❌ ❌ playground
let _ = <moved> πŸ’š πŸ’š πŸ’š playground
match <moved> { _ => () } ❌ ❌ πŸ’š playground
let _ = <borrowed> πŸ’š πŸ’š πŸ’š playground
match <borrowed> { _ => () } πŸ’š πŸ’š πŸ’š playground

r? @nikomatsakis

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Aug 16, 2018
@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.
tidy check
[00:04:52] * 556 error codes
[00:04:52] * highest error code: E0712
[00:04:53] * 220 features
[00:04:54] Stray file with UI testing output: "/checkout/src/test/ui/issue-27282-move-match-input-into-guard.stderr"
[00:04:54] Stray file with UI testing output: "/checkout/src/test/ui/issue-27282-mutate-before-diverging-arm-1.stderr"
[00:04:54] Stray file with UI testing output: "/checkout/src/test/ui/issue-27282-mutate-before-diverging-arm-2.stderr"
[00:04:54] some tidy checks failed
[00:04:54] 
[00:04:54] 
[00:04:54] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor" "--quiet"
[00:04:54] 
[00:04:54] 
[00:04:54] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
[00:04:54] Build completed unsuccessfully in 0:00:49
[00:04:54] Build completed unsuccessfully in 0:00:49
[00:04:54] make: *** [tidy] Error 1
[00:04:54] Makefile:79: recipe for target 'tidy' failed

The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:0f00721a
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
---
The command "date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
" exited with 0.
travis_fold:start:after_failure.1
travis_time:start:1fc8a652
$ sudo tail -n 500 /var/log/syslog
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: Early table checksum verification disabled
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: RSDP 0x00000000000F27C0 000014 (v00 Google)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: RSDT 0x00000000BFFF3430 000038 (v01 Google GOOGRSDT 00000001 GOOG 00000001)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: FACP 0x00000000BFFFCF60 0000F4 (v02 Google GOOGFACP 00000001 GOOG 00000001)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: DSDT 0x00000000BFFF3470 0017B2 (v01 Google GOOGDSDT 00000001 GOOG 00000001)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: FACS 0x00000000BFFFCF00 000040
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: FACS 0x00000000BFFFCF00 000040
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: SSDT 0x00000000BFFF65F0 00690D (v01 Google GOOGSSDT 00000001 GOOG 00000001)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: APIC 0x00000000BFFF5D10 000086 (v01 Google GOOGAPIC 00000001 GOOG 00000001)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: WAET 0x00000000BFFF5CE0 000028 (v01 Google GOOGWAET 00000001 GOOG 00000001)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: SRAT 0x00000000BFFF4C30 0000E8 (v01 Google GOOGSRAT 00000001 GOOG 00000001)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: Local APIC address 0xfee00000
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] SRAT: PXM 0 -> APIC 0x00 -> Node 0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] SRAT: PXM 0 -> APIC 0x01 -> Node 0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] SRAT: PXM 0 -> APIC 0x02 -> Node 0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] SRAT: PXM 0 -> APIC 0x03 -> Node 0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] SRAT: Node 0 PXM 0 [mem 0x00000000-0x0009ffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] SRAT: Node 0 PXM 0 [mem 0x00100000-0xbfffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] SRAT: Node 0 PXM 0 [mem 0x100000000-0x3ffffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] NUMA: Node 0 [mem 0x00000000-0x0009ffff] + [mem 0x00100000-0xbfffffff] -> [mem 0x00000000-0xbfffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] NUMA: Node 0 [mem 0x00000000-0xbfffffff] + [mem 0x100000000-0x3ffffffff] -> [mem 0x00000000-0x3ffffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] NODE_DATA(0) allocated [mem 0x3ffff9000-0x3ffffdfff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] kvm-clock: cpu 0, msr 3:ffff1001, primary cpu clock
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] kvm-clock: using sched offset of 1549433429 cycles
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Zone ranges:
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   Normal   [mem 0x0000000100000000-0x00000003ffffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   Device   empty
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Movable zone start for each node
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Early memory node ranges
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   node   0: [mem 0x0000000000001000-0x000000000009efff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   node   0: [mem 0x0000000000100000-0x00000000bfff2fff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   node   0: [mem 0x0000000100000000-0x00000003ffffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x00000003ffffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] On node 0 totalpages: 3932049
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   DMA zone: 64 pages used for memmap
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   DMA zone: 21 pages reserved
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   DMA zone: 3998 pages, LIFO batch:0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   DMA32 zone: 12224 pages used for memmap
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   DMA32 zone: 782323 pages, LIFO batch:31
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   Normal zone: 49152 pages used for memmap
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]   Normal zone: 3145728 pages, LIFO batch:31
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: PM-Timer IO Port: 0xb008
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: Local APIC address 0xfee00000
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] IOAPIC[0]: apic_id 0, version 17, address 0xfec00000, GSI 0-23
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: IRQ5 used by override.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: IRQ9 used by override.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: IRQ10 used by override.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] ACPI: IRQ11 used by override.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Using ACPI (MADT) for SMP configuration information
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000effff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] PM: Registered nosave memory: [mem 0xbfff3000-0xbfffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] PM: Registered nosave memory: [mem 0xc0000000-0xfffbbfff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] PM: Registered nosave memory: [mem 0xfffbc000-0xffffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] e820: [mem 0xc0000000-0xfffbbfff] available for PCI devices
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Booting paravirtualized kernel on KVM
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] setup_percpu: NR_CPUS:512 nr_cpumask_bits:512 nr_cpu_ids:4 nr_node_ids:1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] PERCPU: Embedded 34 pages/cpu @ffff8803ffc00000 s98392 r8192 d32680 u524288
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] pcpu-alloc: s98392 r8192 d32680 u524288 alloc=1*2097152
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] pcpu-alloc: [0] 0 1 2 3 
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Built 1 zonelists in Node order, mobility grouping on.  Total pages: 3870588
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Policy zone: Normal
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 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 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Calgary: detecting Calgary via BIOS EBDA area
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Memory: 15375492K/15728196K available (8272K kernel code, 1304K rwdata, 4004K rodata, 1496K init, 1316K bss, 352704K reserved, 0K cma-reserved)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Hierarchical RCU implementation.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]  Build-time adjustment of leaf fanout to 64.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000]  RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=4.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=4
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] NR_IRQS:33024 nr_irqs:456 16
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] Console: colour VGA+ 80x25
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] console [ttyS0] enabled
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.000000] tsc: Detected 2500.000 MHz processor
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.323792] Calibrating delay loop (skipped) preset value.. 5000.00 BogoMIPS (lpj=10000000)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.325238] pid_max: default: 32768 minimum: 301
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.326067] ACPI: Core revision 20150930
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.332851] ACPI: 2 ACPI AML tables successfully acquired and loaded
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.333891] Security Framework initialized
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.334571] Yama: becoming mindful.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.335346] AppArmor: AppArmor disabled by boot time parameter
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.338210] Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.348270] Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.352933] Mount-cache hash table entries: 32768 (order: 6, 262144 bytes)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.354341] Mountpoint-cache hash table entries: 32768 (order: 6, 262144 bytes)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.355773] Initializing cgroup subsys io
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.356585] Initializing cgroup subsys memory
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.357338] Initializing cgroup subsys devices
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.358113] Initializing cgroup subsys freezer
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.358886] Initializing cgroup subsys net_cls
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.359801] Initializing cgroup subsys perf_event
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.360665] Initializing cgroup subsys net_prio
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.361669] Initializing cgroup subsys hugetlb
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.362338] Initializing cgroup subsys pids
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.363454] CPU: Physical Processor ID: 0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.364280] CPU: Processor Core ID: 0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.365992] mce: CPU supports 32 MCE banks
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.367164] Last level iTLB entries: 4KB 512, 2MB 8, 4MB 8
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.368122] Last level dTLB entries: 4KB 512, 2MB 0, 4MB 0, 1GB 4
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.371602] Freeing SMP alternatives memory: 32K
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.381943] ftrace: allocating 32185 entries in 126 pages
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.439306] smpboot: APIC(0) Converting physical 0 to logical package 0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.440396] smpboot: Max logical packages: 2
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.441662] x2apic enabled
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.443899] Switched APIC routing to physical x2apic.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.447618] ..TIMER: vector=0x30 apic1=0 pin1=0 apic2=-1 pin2=-1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.554841] smpboot: CPU0: Intel(R) Xeon(R) CPU @ 2.50GHz (family: 0x6, model: 0x3e, stepping: 0x4)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.556749] Performance Events: unsupported p6 CPU model 62 no PMU driver, software events only.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.560145] x86: Booting SMP configuration:
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.560910] .... node  #0, CPUs:      #1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.561868] kvm-clock: cpu 1, msr 3:ffff1041, secondary cpu clock
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.566497]  #2
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.566943] kvm-clock: cpu 2, msr 3:ffff1081, secondary cpu clock
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.571485]  #3
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.571979] kvm-clock: cpu 3, msr 3:ffff10c1, secondary cpu clock
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.576572] x86: Booted up 1 node, 4 CPUs
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.577396] smpboot: Total of 4 processors activated (20000.00 BogoMIPS)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.580506] devtmpfs: initialized
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.585017] evm: security.selinux
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.585729] evm: security.SMACK64
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.586306] evm: security.SMACK64EXEC
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.587005] evm: security.SMACK64TRANSMUTE
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.587697] evm: security.SMACK64MMAP
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.588228] evm: security.ima
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.588683] evm: security.capability
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.589549] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.591164] futex hash table entries: 1024 (order: 4, 65536 bytes)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.592360] pinctrl core: initialized pinctrl subsystem
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.593394] RTC time: 20:29:32, date: 08/16/18
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.595256] NET: Registered protocol family 16
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.606904] cpuidle: using governor ladder
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.618880] cpuidle: using governor menu
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.619656] PCCT header not found.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.620260] ACPI: bus type PCI registered
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.620835] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.622011] PCI: Using configuration type 1 for base access
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.635916] ACPI: Added _OSI(Module Device)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.636655] ACPI: Added _OSI(Processor Device)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.637319] ACPI: Added _OSI(3.0 _SCP Extensions)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.638244] ACPI: Added _OSI(Processor Aggregator Device)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.641854] ACPI: Executed 2 blocks of module-level executable AML code
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.666682] ACPI: Interpreter enabled
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.667402] ACPI: (supports S0 S3 S4 S5)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.667997] ACPI: Using IOAPIC for interrupt routing
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.668737] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.699611] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.700829] acpi PNP0A03:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.701905] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.703131] acpi PNP0A03:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.705667] PCI host bridge to bus 0000:00
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.706301] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.707292] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.708535] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.709821] pci_bus 0000:00: root bus resource [mem 0xc0000000-0xfebfffff window]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.710894] pci_bus 0000:00: root bus resource [bus 00-ff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.712223] pci 0000:00:00.0: [8086:1237] type 00 class 0x060000
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.712665] pci 0000:00:01.0: [8086:7110] type 00 class 0x060100
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.728744] pci 0000:00:01.3: [8086:7113] type 00 class 0x068000
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.744461] pci 0000:00:01.3: quirk: [io  0xb000-0xb03f] claimed by PIIX4 ACPI
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.746203] pci 0000:00:03.0: [1af4:1004] type 00 class 0x000000
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.752126] pci 0000:00:03.0: reg 0x10: [io  0xc000-0xc03f]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.756789] pci 0000:00:03.0: reg 0x14: [mem 0xfebfe000-0xfebfe07f]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.772121] pci 0000:00:04.0: [1af4:1000] type 00 class 0x020000
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.777506] pci 0000:00:04.0: reg 0x10: [io  0xc040-0xc07f]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.781678] pci 0000:00:04.0: reg 0x14: [mem 0xfebff000-0xfebff0ff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.796536] ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.798994] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 *10 11)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.801454] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 10 *11)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.803593] ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 *11)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.805731] ACPI: PCI Interrupt Link [LNKS] (IRQs *9)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.826648] ACPI: Enabled 16 GPEs in block 00 to 0F
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.828008] vgaarb: loaded
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.828693] SCSI subsystem initialized
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.829540] libata version 3.00 loaded.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.829565] ACPI: bus type USB registered
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.830254] usbcore: registered new interface driver usbfs
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.831329] usbcore: registered new interface driver hub
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.832668] usbcore: registered new device driver usb
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.834010] ioremap error for 0xbfffd000-0xc0000000, requested 0x2, got 0x0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.835077] dmi: Firmware registration failed.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.836146] PCI: Using ACPI for IRQ routing
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.836806] PCI: pci_cache_line_size set to 64 bytes
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.836954] e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.836956] e820: reserve RAM buffer [mem 0xbfff3000-0xbfffffff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.837096] NetLabel: Initializing
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.837737] NetLabel:  domain hash size = 128
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.838569] NetLabel:  protocols = UNLABELED CIPSOv4
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.839390] NetLabel:  unlabeled traffic allowed by default
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.840421] amd_nb: Cannot enumerate AMD northbridges
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.841305] clocksource: Switched to clocksource kvm-clock
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.849577] pnp: PnP ACPI init
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.850277] pnp 00:00: Plug and Play ACPI device, IDs PNP0b00 (active)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.850349] pnp 00:01: Plug and Play ACPI device, IDs PNP0303 (active)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.850391] pnp 00:02: Plug and Play ACPI device, IDs PNP0f13 (active)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.850439] pnp 00:03: Plug and Play ACPI device, IDs PNP0501 (active)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.850479] pnp 00:04: Plug and Play ACPI device, IDs PNP0501 (active)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.850519] pnp 00:05: Plug and Play ACPI device, IDs PNP0501 (active)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.850557] pnp 00:06: Plug and Play ACPI device, IDs PNP0501 (active)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.850721] pnp: PnP ACPI: found 7 devices
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.858465] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.859772] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.859774] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.859776] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.859777] pci_bus 0000:00: resource 7 [mem 0xc0000000-0xfebfffff window]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.859816] NET: Registered protocol family 2
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.860643] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.861938] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.863118] TCP: Hash tables configured (established 131072 bind 65536)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.864128] UDP hash table entries: 8192 (order: 6, 262144 bytes)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.865026] UDP-Lite hash table entries: 8192 (order: 6, 262144 bytes)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.866723] NET: Registered protocol family 1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.867535] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.868467] PCI: CLS 0 bytes, default 64
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    0.868530] Unpacking initramfs...
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.983181] Freeing initrd memory: 21432K
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.984075] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.985180] software IO TLB [mem 0xbbff3000-0xbfff3000] (64MB) mapped at [ffff8800bbff3000-ffff8800bfff2fff]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.986768] RAPL PMU detected, API unit is 2^-32 Joules, 3 fixed counters 10737418240 ms ovfl timer
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.988188] hw unit of domain pp0-core 2^-0 Joules
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.988913] hw unit of domain package 2^-0 Joules
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.989660] hw unit of domain dram 2^-0 Joules
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.990426] Scanning for low memory corruption every 60 seconds
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.991964] audit: initializing netlink subsys (disabled)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.992830] audit: type=2000 audit(1534451374.579:1): initialized
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.994683] Initialise system trusted keyring
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.995824] HugeTLB registered 1 GB page size, pre-allocated 0 pages
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.996922] HugeTLB registered 2 MB page size, pre-allocated 0 pages
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.998901] zbud: loaded
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    2.999774] VFS: Disk quotas dquot_6.6.0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.000621] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.001833] squashfs: version 4.0 (2009/01/31) Phillip Lougher
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.003274] fuse init (API version 7.23)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.004222] Key type big_key registered
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.004855] Allocating IMA MOK and blacklist keyrings.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.007008] Key type asymmetric registered
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.007676] Asymmetric key parser 'x509' registered
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.008620] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.009776] io scheduler noop registered
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.010356] io scheduler deadline registered (default)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.011139] io scheduler cfq registered
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.012047] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.012896] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.014119] intel_idle: does not run on family 6 model 62
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.014219] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.015622] ACPI: Power Button [PWRF]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.016777] input: Sleep Button as /devices/LNXSYSTM:00/LNXSLPBN:00/input/input1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.018225] ACPI: Sleep Button [SLPF]
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.019401] GHES: HEST is not enabled!
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.022128] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.023182] virtio-pci 0000:00:03.0: virtio_pci: leaving for legacy driver
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.027691] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 10
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.028883] virtio-pci 0000:00:04.0: virtio_pci: leaving for legacy driver
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.033827] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.056753] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.080847] 00:04: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.105860] 00:05: ttyS2 at I/O 0x3e8 (irq = 6, base_baud = 115200) is a 16550A
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.130271] 00:06: ttyS3 at I/O 0x2e8 (irq = 7, base_baud = 115200) is a 16550A
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.134400] Linux agpgart interface v0.103
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.138364] loop: module loaded
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.139243] libphy: Fixed MDIO Bus: probed
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.140164] tun: Universal TUN/TAP device driver, 1.6
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.141242] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.175784] PPP generic driver version 2.4.2
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.177150] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.178557] ehci-pci: EHCI PCI platform driver
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.179801] ehci-platform: EHCI generic platform driver
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.181040] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.182463] ohci-pci: OHCI PCI platform driver
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.183565] ohci-platform: OHCI generic platform driver
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.184712] uhci_hcd: USB Universal Host Controller Interface driver
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.186191] i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.188201] i8042: Warning: Keylock active
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.190346] serio: i8042 KBD port at 0x60,0x64 irq 1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.191308] serio: i8042 AUX port at 0x60,0x64 irq 12
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.192666] mousedev: PS/2 mouse device common for all mice
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.194327] rtc_cmos 00:00: RTC can wake from S4
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.195726] rtc_cmos 00:00: rtc core: registered rtc_cmos as rtc0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.197360] rtc_cmos 00:00: alarms up to one day, 114 bytes nvram
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.198618] i2c /dev entries driver
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.199489] device-mapper: uevent: version 1.0.3
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.200603] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.202652] ledtrig-cpu: registered to indicate activity on CPUs
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.204632] NET: Registered protocol family 10
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.206168] NET: Registered protocol family 17
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.207240] Key type dns_resolver registered
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.208656] microcode: CPU0 sig=0x306e4, pf=0x1, revision=0x1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.210716] microcode: CPU1 sig=0x306e4, pf=0x1, revision=0x1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.212023] microcode: CPU2 sig=0x306e4, pf=0x1, revision=0x1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.213326] microcode: CPU3 sig=0x306e4, pf=0x1, revision=0x1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.214802] microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.217119] registered taskstats version 1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.218135] Loading compiled-in X.509 certificates
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.219826] Loaded X.509 cert 'Build time autogenerated kernel key: 56232512f0584176d25dbc659499b922e518c1c1'
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.222397] zswap: loaded using pool lzo/zbud
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.225606] Key type trusted registered
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.229896] Key type encrypted registered
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.230706] ima: No TPM chip found, activating TPM-bypass!
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.232201] evm: HMAC attrs: 0x1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.233482]   Magic number: 14:263:498
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.234842] rtc_cmos 00:00: setting system clock to 2018-08-16 20:29:35 UTC (1534451375)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.237850] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.239701] EDD information not available.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.240799] PM: Hibernation image not present or could not be loaded.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.242237] Freeing unused kernel memory: 1496K
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.242928] Write protecting the kernel read-only data: 14336k
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.244729] Freeing unused kernel memory: 1956K
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.245634] Freeing unused kernel memory: 92K
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.259652] systemd-udevd[118]: starting version 204
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.318440] scsi host0: Virtio SCSI HBA
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.322427] scsi 0:0:1:0: Direct-Access     Google   PersistentDisk   1    PQ: 0 ANSI: 6
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.326497] AVX version of gcm_enc/dec engaged.
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.327556] AES CTR mode by8 optimization enabled
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.358835] sd 0:0:1:0: Attached scsi generic sg0 type 0
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.359839] sd 0:0:1:0: [sda] 62914560 512-byte logical blocks: (32.2 GB/30.0 GiB)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.361187] sd 0:0:1:0: [sda] 4096-byte physical blocks
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.362646] sd 0:0:1:0: [sda] Write Protect is off
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.363490] sd 0:0:1:0: [sda] Mode Sense: 1f 00 00 08
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.363649] sd 0:0:1:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.366958]  sda: sda1
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.368437] sd 0:0:1:0: [sda] Attached SCSI disk
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.393978] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.989425] tsc: Refined TSC clocksource calibration: 2499.783 MHz
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    3.990632] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x24086cd64eb, max_idle_ns: 440795280575 ns
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    4.231118] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input4
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    6.337555] floppy0: no floppy controllers found
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.509322] raid6: sse2x1   gen()  9084 MB/s
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.577323] raid6: sse2x1   xor()  6754 MB/s
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.645318] raid6: sse2x2   gen() 11256 MB/s
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.713321] raid6: sse2x2   xor()  7761 MB/s
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.781317] raid6: sse2x4   gen() 12546 MB/s
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.849315] raid6: sse2x4   xor()  8431 MB/s
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.850368] raid6: using algorithm sse2x4 gen() 12546 MB/s
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.851501] raid6: .... xor() 8431 MB/s, rmw enabled
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.852205] raid6: using ssse3x2 recovery algorithm
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.854604] xor: automatically using best checksumming function:
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.893318]    avx       : 22040.000 MB/sec
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.908451] Btrfs loaded
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.951453] EXT4-fs (sda1): INFO: recovery required on readonly filesystem
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    7.952543] EXT4-fs (sda1): write access will be enabled during recovery
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    8.000871] EXT4-fs (sda1): orphan cleanup on readonly fs
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    8.012390] EXT4-fs (sda1): 6 orphan inodes deleted
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    8.013836] EXT4-fs (sda1): recovery complete
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    8.019023] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    8.208932] random: init: uninitialized urandom read (12 bytes read, 25 bits of entropy available)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    8.315047] random: mountall: uninitialized urandom read (12 bytes read, 29 bits of entropy available)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    8.359080] EXT4-fs (sda1): re-mounted. Opts: (null)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    8.540116] random: cloud-init: uninitialized urandom read (32 bytes read, 37 bits of entropy available)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    9.044248] random: cloud-init: uninitialized urandom read (32 bytes read, 45 bits of entropy available)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    9.171483] systemd-udevd[701]: starting version 204
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    9.262044] piix4_smbus 0000:00:01.3: SMBus base address uninitialized - upgrade BIOS or use force_addr=0xaddr
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    9.358094] ppdev: user-space parallel port driver
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    9.467323] random: mktemp: uninitialized urandom read (6 bytes read, 56 bits of entropy available)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    9.516746] random: mktemp: uninitialized urandom read (6 bytes read, 57 bits of entropy available)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    9.580666] random: cloud-init: uninitialized urandom read (32 bytes read, 58 bits of entropy available)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [    9.739800] random: cloud-init: uninitialized urandom read (32 bytes read, 58 bits of entropy available)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   10.004668] random: mktemp: uninitialized urandom read (12 bytes read, 60 bits of entropy available)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   10.070939] random: mktemp: uninitialized urandom read (6 bytes read, 61 bits of entropy available)
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   10.155375] EXT4-fs (sda1): resizing filesystem from 3931904 to 7864064 blocks
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   10.193993] EXT4-fs (sda1): resized filesystem to 7864064
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   10.482801] init: failsafe main process (1092) killed by TERM signal
Aug 16 20:29:42 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 rsyslogd-2039: Could no open output pipe '/dev/xconsole': No such file or directory [try http://www.rsyslog.com/e/2039 ]
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Running set_multiqueue.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Set channels for eth0 to 4.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Setting /proc/irq/25/smp_affinity_list to 0 for device virtio1.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO /proc/irq/25/smp_affinity_list: real affinity 0
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Setting /proc/irq/26/smp_affinity_list to 0 for device virtio1.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO /proc/irq/26/smp_affinity_list: real affinity 0
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Setting /proc/irq/27/smp_affinity_list to 1 for device virtio1.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO /proc/irq/27/smp_affinity_list: real affinity 1
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Setting /proc/irq/28/smp_affinity_list to 1 for device virtio1.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO /proc/irq/28/smp_affinity_list: real affinity 1
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Setting /proc/irq/29/smp_affinity_list to 2 for device virtio1.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO /proc/irq/29/smp_affinity_list: real affinity 2
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Setting /proc/irq/30/smp_affinity_list to 2 for device virtio1.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO /proc/irq/30/smp_affinity_list: real affinity 2
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Setting /proc/irq/31/smp_affinity_list to 3 for device virtio1.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO /proc/irq/31/smp_affinity_list: real affinity 3
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Setting /proc/irq/32/smp_affinity_list to 3 for device virtio1.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO /proc/irq/32/smp_affinity_list: real affinity 3
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Queue 0 XPS=1 for /sys/class/net/eth0/queues/tx-0/xps_cpus
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Queue 1 XPS=2 for /sys/class/net/eth0/queues/tx-1/xps_cpus
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Queue 2 XPS=4 for /sys/class/net/eth0/queues/tx-2/xps_cpus
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 instance-setup: INFO Queue 3 XPS=8 for /sys/class/net/eth0/queues/tx-3/xps_cpus
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   11.185653] random: nonblocking pool is initialized
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Starting Google Accounts daemon.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-clock-skew: INFO Clock drift token has changed: 0.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-clock-skew: INFO Clock drift token has changed: 0.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-ip-forwarding: INFO Starting Google IP Forwarding daemon.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for me.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account me.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for henrik.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account henrik.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for emma.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account emma.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for igor.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account igor.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for konstantinhaase.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 pollinate: system was previously seeded at [2017-12-05 19:31:29.715998981 +0000]
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 pollinate: To re-seed this system again, use the -r|--reseed option
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 cron[1424]: (CRON) INFO (pidfile fd = 3)
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 cron[1471]: (CRON) STARTUP (fork ok)
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 cron[1471]: (CRON) INFO (Running @reboot jobs)
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account konstantinhaase.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 acpid: starting up with netlink and the input layer
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 acpid: 1 rule loaded
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 acpid: waiting for events: event logging is off
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for aj.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account aj.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 haveged: haveged starting up
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 pollinate: system was previously seeded at [2017-12-05 19:31:29.715998981 +0000]
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 pollinate: To re-seed this system again, use the -r|--reseed option
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for solarce.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   11.705493] ip_tables: (C) 2000-2006 Netfilter Core Team
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account solarce.
Aug 16 20:29:43 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   11.715166] ip6_tables: (C) 2000-2006 Netfilter Core Team
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for asari.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account asari.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for bogdana.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account bogdana.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   11.832346] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   11.836525] Bridge firewalling registered
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for konstantin.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   11.849738] nf_conntrack version 0.5.0 (65536 buckets, 262144 max)
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account konstantin.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for carmen.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   11.914617] Initializing XFRM netlink socket
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   11.921145] Netfilter messages via NETLINK v0.30.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   11.924330] ctnetlink v0.93: registering with nfnetlink.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account carmen.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Creating a new user account for maria.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Created user account maria.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-accounts: INFO Removing user packer.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 google-clock-skew: INFO Synced system time with hardware clock.
Aug 16 20:29:44 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   12.345491] floppy0: no floppy controllers found
Aug 16 20:30:06 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpdate[1841]: adjust time server 169.254.169.254 offset 0.012859 sec
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1877]: ntpd 4.2.6p5@1.2349-o Wed Jul 12 12:22:58 UTC 2017 (1)
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: proto: precision = 0.101 usec
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: ntp_io: estimated max descriptors: 1024, initial socket boundary: 16
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: ntp_io: estimated max descriptors: 1024, initial socket boundary: 16
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: Listen and drop on 1 v6wildcard :: UDP 123
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: Listen normally on 2 lo 127.0.0.1 UDP 123
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: Listen normally on 3 eth0 10.20.0.69 UDP 123
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: Listen normally on 4 docker0 172.17.0.1 UDP 123
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: peers refreshed
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: Listening on routing socket on fd #21 for interface updates
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   41.905467] init: plymouth-upstart-bridge main process ended, respawning
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 startup-script: INFO Found startup-script in metadata.
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 startup-script: INFO startup-script: warning: commands will be executed using /bin/sh
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 startup-script: INFO startup-script: job 1 at Thu Aug 16 23:40:00 2018
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 startup-script: INFO startup-script: Return code 0.
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 startup-script: INFO startup-script: Return code 0.
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 startup-script: INFO Finished running startup scripts.
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ec2: 
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ec2: #############################################################
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ec2: -----BEGIN SSH HOST KEY FINGERPRINTS-----
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ec2: 1024 d6:76:8c:56:31:dc:69:7a:e1:05:6f:70:02:7d:ba:a5  root@travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 (DSA)
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ec2: 256 bc:76:d1:eb:fb:f7:b3:69:8b:bb:ed:ea:ac:cb:4b:46  root@travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 (ECDSA)
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ec2: 256 71:3d:be:4f:e6:25:ef:01:bc:15:bf:72:a4:29:99:65  root@travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 (ED25519)
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ec2: 2048 e8:db:3b:0d:0f:e2:48:f5:c2:39:bc:23:57:08:bc:be  root@travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 (RSA)
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ec2: -----END SSH HOST KEY FINGERPRINTS-----
Aug 16 20:30:13 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ec2: #############################################################
Aug 16 20:30:46 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [   74.438030] IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready
Aug 16 20:32:30 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  178.797901] device veth5a04153 entered promiscuous mode
Aug 16 20:32:30 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  178.797963] docker0: port 1(veth5a04153) entered forwarding state
Aug 16 20:32:30 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  178.797970] docker0: port 1(veth5a04153) entered forwarding state
Aug 16 20:32:30 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  178.798617] docker0: port 1(veth5a04153) entered disabled state
Aug 16 20:32:30 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  178.882977] cgroup: docker-runc (4962) created nested cgroup for controller "memory" which has incomplete hierarchy support. Nested cgroups may change behavior in the future.
Aug 16 20:32:30 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  178.882980] cgroup: "memory" requires setting use_hierarchy to 1 on the root
Aug 16 20:32:30 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  178.942536] eth0: renamed from vetha105d17
Aug 16 20:32:30 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  178.973162] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
Aug 16 20:32:30 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  178.974503] docker0: port 1(veth5a04153) entered forwarding state
Aug 16 20:32:30 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  178.974529] docker0: port 1(veth5a04153) entered forwarding state
Aug 16 20:32:30 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  178.974555] IPv6: ADDRCONF(NETDEV_CHANGE): docker0: link becomes ready
Aug 16 20:32:34 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: Listen normally on 5 docker0 fe80::42:98ff:feef:7694 UDP 123
Aug 16 20:32:34 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: Listen normally on 6 docker0 fe80::1 UDP 123
Aug 16 20:32:34 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: Listen normally on 7 docker0 fd9a:8454:6789:13f7::1 UDP 123
Aug 16 20:32:34 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: peers refreshed
Aug 16 20:32:34 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 ntpd[1878]: new interface(s) found: waking up resolver
Aug 16 20:32:45 travis-job-2cbdd25a-45be-4527-967b-ad397a357c10 kernel: [  194.025753] docker0: port 1(veth5a04153) entered forwarding state
---
travis_time:end:0252f948:start=1534451742023722866,finish=1534451742032807437,duration=9084571
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:213e48a0
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:341ade4b
travis_time:start:341ade4b
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.6
travis_fold:start:after_failure.7
travis_time:start:138e805b
$ dmesg | grep -i kill

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)

@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.
[00:46:59] ....................................................................................................
[00:47:01] ....................................................................................................
[00:47:04] ....................................i...............................................................
[00:47:07] ....................................................................................................
[00:47:10] ....................................................................F.FF............................
[00:47:16] ....................................................................................................
[00:47:19] ....................................................................................................
[00:47:22] ....................................................................................................
[00:47:25] ....................................................................................................
---
[00:48:18] diff of stderr:
[00:48:18] 
[00:48:18] 2   --> $DIR/issue-27282-move-match-input-into-guard.rs:28:14
[00:48:18] 3    |
[00:48:18] 4 LL |         _ if { (|| { let bar = b; *bar = false; })();
[00:48:18] -    |                ----------------------------------- value moved here
[00:48:18] +    |                 --             - variable moved due to use in closure
[00:48:18] +    |                 value moved into closure here
[00:48:18] +    |                 value moved into closure here
[00:48:18] 6 LL |                      false } => { },
[00:48:18] 7 LL |         &mut true => { println!("You might think we should get here"); },
[00:48:18] 8    |              ^^^^ value used here after move
[00:48:18] 
[00:48:18] The actual stderr differed from the expected stderr.
[00:48:18] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issues/issue-27282-move-match-input-into-guard/issue-27282-move-match-input-into-guard.stderr
[00:48:18] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issues/issue-27282-move-match-input-into-guard/issue-27282-move-match-input-into-guard.stderr
[00:48:18] To update references, rerun the tests and pa cannot be owned by more than one variable.\n\nSometimes we don't need to move the value. Using a reference, we can let another\nfunction borrow the value without changing its ownership. In the example below,\nwe don't actually have to move our string to `calculate_length`, we can give it\na reference to it with `&` instead.\n\n```\nfn main() {\n    let s1 = String::from(\"hello\");\n\n    let len = calculate_length(&s1);\n\n    println!(\"The length of '{}' is {}.\", s1, len);\n}\n\nfn calculate_length(s: &String) -> usize {\n    s.len()\n}\n```\n\nA mutable reference can be created with `&mut`.\n\nSometimes we don't want a reference, but a duplicate. All types marked `Clone`\ncan be duplicated by calling `.clone()`. Subsequent changes to a clone do not\naffect the original variable.\n\nMost types in the standard library are marked `Clone`. The example below\ndemonstrates using `clone()` on a string. `s1` is first set to \"many\", and then\ncopied to `s2`. Then the first character of `s1` is removed, without affecting\n`s2`. \"any many\" is printed to the console.\n\n```\nfn main() {\n    let mut s1 = String::from(\"many\");\n    let s2 = s1.clone();\n    s1.remove(0);\n    println!(\"{} {}\", s1, s2);\n}\n```\n\nIf we control the definition of a type, we can implement `Clone` on it ourselves\nwith `#[derive(Clone)]`.\n\nSome types have no ownership semantics at all and are trivial to duplicate. An\nexample is `i32` and the other number types. We don't have to call `.clone()` to\nclone them, because they are marked `Copy` in addition to `Clone`.  Implicit\ncloning is more convenient in this case. We can mark our own types `Copy` if\nall their members also are marked `Copy`.\n\nIn the example below, we implement a `Point` type. Because it only stores two\nintegers, we opt-out of ownership semantics with `Copy`. Then we can\n`let p2 = p1` without `p1` being moved.\n\n```\n#[derive(Copy, Clone)]\nstruct Point { x: i32, y: i32 }\n\nfn main() {\n    let mut p1 = Point{ x: -1, y: 2 };\n    let p2 = p1;\n    p1.x = 1;\n    println!(\"p1: {}, {}\", p1.x, p1.y);\n    println!(\"p2: {}, {}\", p2.x, p2.y);\n}\n```\n\nAlternatively, if we don't control the struct's definition, or mutable shared\nownership is truly required, we can use `Rc` and `RefCell`:\n\n```\nuse std::cell::RefCell;\nuse std::rc::Rc;\n\nstruct MyStruct { s: u32 }\n\nfn main() {\n    let mut x = Rc::new(RefCell::new(MyStruct{ s: 5u32 }));\n    let y = x.clone();\n    x.borrow_mut().s = 6;\n    println!(\"{}\", x.borrow().s);\n}\n```\n\nWith this approach, x and y share ownership of the data via the `Rc` (reference\ncount type). `RefCell` essentially performs runtime borrow checking: ensuring\nthat at most one writer or multiple readers can access the data at any one time.\n\nIf you wish to learn more about ownership in Rust, start with the chapter in the\nBook:\n\nhttps://doc.rust-lang.org/book/first-edition/ownership.html\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/issues/issue-27282-move-match-input-into-guard.rs","byte_start":980,"byte_end":982,"line_start":26,"line_end":26,"column_start":17,"column_end":19,"is_primary":false,"text":[{"text":"        _ if { (|| { let bar = b; *bar = false; })();","highlight_start":17,"highlight_end":19}],"label":"value moved into closure here","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/issues/issue-27282-move-match-input-into-guard.rs","byte_start":995,"byte_end":996,"line_start":26,"line_end":26,"column_start":32,"column_end":33,"is_primary":false,"text":[{"text":"        _ if { (|| { let bar = b; *bar = false; })();","highlight_start":32,"highlight_end":33}],"label":"variable moved due to use in closure","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/issues/issue-27282-move-match-input-into-guard.rs","byte_start":1068,"byte_end":1072,"line_start":28,"line_end":28,"column_start":14,"column_end":18,"is_primary":true,"text":[{"text":"        &mut true => { println!(\"You might think we should get here\"); },","highlight_start":14,"highlight_end":18}],"label":"value used here after move","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0382]: use of moved value: `*b`\n  --> /checkout/src/test/ui/issues/issue-27282-move-match-input-into-guard.rs:28:14\n   |\nLL |         _ if { (|| { let bar = b; *bar = false; })();\n   |                 --             - variable moved due to use in closure\n   |                 |\n   |                 value moved into closure here\nLL |                      false } => { },\nLL |         &mut true => { println!(\"You might think we should get here\"); },\n   |              ^^^^ value used here after move\n\n"}
[00:48:18] {"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to previous error\n\n"}
[00:48:18] {"message":"For more information about this error, try `rustc --explain E0382`.","code":null,"level":"","spans":[],"children":[],"rendered":"For more information about this error, try `rustc --explain E0382`.\n"}
[00:48:18] ------------------------------------------
[00:48:18] 
[00:48:18] thread '[ui] ui/issues/issue-27282-move-match-input-into-guard.rs' panicked at 'explicit panic', tools/compiletest/src/runtest.rs:3166:9
[00:48:18] note: Run with `RUST_BACKTRACE=1` for a backtrace.
[00:48:18] note: Run with `RUST_BACKTRACE=1` for a backtrace.
[00:48:18] 
[00:48:18] ---- [ui] ui/issues/issue-27282-mutate-before-diverging-arm-1.rs stdout ----
[00:48:18] diff of stderr:
[00:48:18] 
[00:48:18] 2   --> $DIR/issue-27282-mutate-before-diverging-arm-1.rs:33:14
[00:48:18] 3    |
[00:48:18] 4 LL |     match x {
[00:48:18] -    |           |
[00:48:18] -    |           value is immutable due to match
[00:48:18] -    |           borrow later used here
[00:48:18] -    |           borrow later used here
[00:48:18] +    |           - value is immutable in match guard
[00:48:18] 9 ...
[00:48:18] 10 LL |             (|| { *x = None; drop(force_fn_once); })();
[00:48:18] 11    |              ^^    - borrow occurs due to use of `x` in closure
[00:48:18] 
[00:48:18] The actual stderr differed from the expected stderr.
[00:48:18] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issues/issue-27282-mutate-before-diverging-arm-1/issue-27282-mutate-before-diverging-arm-1.stderr
[00:48:18] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issues/issue-27282-mutate-before-diverging-arm-1/issue-27282-mutate-before-diverging-arm-1.stderr
[00:48:18] To update references, rerun the tests and pass the `--bless` flag
[00:48:18] To only update this specific test, also pass `--test-args issues/issue-27282-mutate-before-diverging-arm-1.rs`
[00:48:18] error: 1 errors occurred comparing output.
[00:48:18] status: exit code: 1
[00:48:18] status: exit code: 1
[00:48:18] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/issues/issue-27282-mutate-before-diverging-arm-1.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/issues/issue-27282-mutate-before-diverging-arm-1/a" "-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/issues/issue-27282-mutate-before-diverging-arm-1/auxiliary" "-A" "unused"
[00:48:18] ------------------------------------------
[00:48:18] 
[00:48:18] ------------------------------------------
[00:48:18] stderr:
[00:48:18] stderr:
[00:48:18] ------------------------------------------
[00:48:18] {"message":"cannot mutably borrow `x` in match guard","code":{"code":"E0510","explanation":"\nCannot mutate place in this match guard.\n\nWhen matching on a variable it cannot be mutated in the match guards, as this\ncould cause the match to be non-exhaustive:\n\n```compile_fail\nlet mut x = Some(0);\nmatch x {\n    None => (),\n    Some(v) if { x = None; false } => (),\n    Some(_) => (), // No longer matches\n}\n```\n\nNote: This error is usually hidden by E0301 or E0302. This may change in the\nfuture.\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/issues/issue-27282-mutate-before-diverging-arm-1.rs","byte_start":1245,"byte_end":1247,"line_start":33,"line_end":33,"column_start":14,"column_end":16,"is_primary":true,"text":[{"text":"            (|| { *x = None; drop(force_fn_once); })();","highlight_start":14,"highlight_end":16}],"label":"cannot mutably borrow","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/issues/issue-27282-mutate-before-diverging-arm-1.rs","byte_start":1105,"byte_end":1106,"line_start":29,"line_end":29,"column_start":11,"column_end":12,"is_primary":false,"text":[{"text":"    match x {","highlight_start":11,"highlight_end":12}],"label":"value is immutable in match guard","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/issues/issue-27282-mutate-before-diverging-arm-1.rs","byte_start":1251,"byte_end":1252,"line_start":33,"line_end":33,"column_start":20,"column_end":21,"is_primary":false,"text":[{"text":"            (|| { *x = None; drop(force_fn_once); })();","highlight_start":20,"highlight_end":21}],"label":"borrow occurs due to use of `x` in closure","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0510]: cannot mutably borrow `x` in match guard\n  --> /checkout/src/test/ui/issues/issue-27282-mutate-before-diverging-arm-1.rs:33:14\n   |\nLL |     match x {\n   |           - value is immutable in match guard\n...\nLL |             (|| { *x = None; drop(force_fn_once); })();\n   |              ^^    - borrow occurs due to use of `x` in closure\n   |              |\n   |              cannot mutably borrow\n\n"}
[00:48:18] {"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to previous error\n\n"}
[00:48:18] {"message":"For more information about this error, try `rustc --explain E0510`.","code":null,"level":"","spans":[],"children":[],"rendered":"For more information about this error, try `rustc --explain E0510`.\n"}
[00:48:18] ------------------------------------------
[00:48:18] 
[00:48:18] thread '[ui] ui/issues/issue-27282-mutate-before-diverging-arm-1.rs' panicked at 'explicit panic', tools/compiletest/src/runtest.rs:3166:9
[00:48:18] 
[00:48:18] 
[00:48:18] ---- [ui] ui/issues/issue-27282-mutate-before-diverging-arm-2.rs stdout ----
[00:48:18] diff of stderr:
[00:48:18] 
[00:48:18] 2   --> $DIR/issue-27282-mutate-before-diverging-arm-2.rs:38:18
[00:48:18] 3    |
[00:48:18] 4 LL |     match x {
[00:48:18] -    |           |
[00:48:18] -    |           value is immutable due to match
[00:48:18] -    |           borrow later used here
[00:48:18] -    |           borrow later used here
[00:48:18] +    |           - value is immutable in match guard
[00:48:18] 9 ...
[00:48:18] 10 LL |                 (|| { *x = None; drop(force_fn_once); })();
[00:48:18] 11    |                  ^^    - borrow occurs due to use of `x` in closure
[00:48:18] 
[00:48:18] The actual stderr differed from the expected stderr.
[00:48:18] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issues/issue-27282-mutate-before-diverging-arm-2/issue-27282-mutate-before-diverging-arm-2.stderr
[00:48:18] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issues/issue-27282-mutate-before-diverging-arm-2/issue-27282-mutate-before-diverging-arm-2.stderr
[00:48:18] To update references, rerun the tests and pass the `--bless` flag
[00:48:18] To only update this specific test, also pass `--test-args issues/issue-27282-mutate-before-diverging-arm-2.rs`
[00:48:18] error: 1 errors occurred comparing output.
[00:48:18] status: exit code: 1
[00:48:18] status: exit code: 1
[00:48:18] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/issues/issue-27282-mutate-before-diverging-arm-2.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/issues/issue-27282-mutate-before-diverging-arm-2/a" "-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/issues/issue-27282-mutate-before-diverging-arm-2/auxiliary" "-A" "unused"
[00:48:18] ------------------------------------------
[00:48:18] 
[00:48:18] ------------------------------------------
[00:48:18] stderr:
[00:48:18] stderr:
[00:48:18] ------------------------------------------
[00:48:18] {"message":"cannot mutably borrow `x` in match guard","code":{"code":"E0510","explanation":"\nCannot mutate place in this match guard.\n\nWhen matching on a variable it cannot be mutated in the match guards, as this\ncould cause the match to be non-exhaustive:\n\n```compile_fail\nlet mut x = Some(0);\nmatch x {\n    None => (),\n    Some(v) if { x = None; false } => (),\n    Some(_) => (), // No longer matches\n}\n```\n\nNote: This error is usually hidden by E0301 or E0302. This may change in the\nfuture.\n"},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/issues/issue-27282-mutate-before-diverging-arm-2.rs","byte_start":1410,"byte_end":1412,"line_start":38,"line_end":38,"column_start":18,"column_end":20,"is_primary":true,"text":[{"text":"                (|| { *x = None; drop(force_fn_once); })();","highlight_start":18,"highlight_end":20}],"label":"cannot mutably borrow","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/issues/issue-27282-mutate-before-diverging-arm-2.rs","byte_start":1250,"byte_end":1251,"line_start":33,"line_end":33,"column_start":11,"column_end":12,"is_primary":false,"text":[{"text":"    match x {","highlight_start":11,"highlight_end":12}],"label":"value is immutable in match guard","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"/checkout/src/test/ui/issues/issue-27282-mutate-before-diverging-arm-2.rs","byte_start":1416,"byte_end":1417,"line_start":38,"line_end":38,"column_start":24,"column_end":25,"is_primary":false,"text":[{"text":"                (|| { *x = None; drop(force_fn_once); })();","highlight_start":24,"highlight_end":25}],"label":"borrow occurs due to use of `x` in closure","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0510]: cannot mutably borrow `x` in match guard\n  --> /checkout/src/test/ui/issues/issue-27282-mutate-before-diverging-arm-2.rs:38:18\n   |\nLL |     match x {\n   |           - value is immutable in match guard\n...\nLL |                 (|| { *x = None; drop(force_fn_once); })();\n   |                  ^^    - borrow occurs duec-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"
[00:48:18] 
[00:48:18] 
[00:48:18] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
[00:48:18] Build completed unsuccessfully in 0:03:12
[00:48:18] Build completed unsuccessfully in 0:03:12
[00:48:18] make: *** [check] Error 1
[00:48:18] Makefile:58: recipe for target 'check' failed

The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:04b70b24
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
---
travis_time:end:083e754a:start=1534455711505465015,finish=1534455711513945812,duration=8480797
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:20f3cc41
$ ln -s . checkout && f

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)

@matthewjasper matthewjasper changed the title Permissive match access [NLL] Be more permissive when checking access due to Match Aug 16, 2018
@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.
[00:48:03] ....................................................................................................
[00:48:07] ....................................................................................................
[00:48:09] i...................................................................................................
[00:48:13] ....................................................................................................
[00:48:15] .................................................iiiiiiiii..........................................
[00:48:21] ....................................................................................................
[00:48:25] ....................................................................................................
[00:48:28] .............................i......................................................................
[00:48:31] ................................i...............................................i.i..ii.............
---
travis_time:start:test_mir-opt
Check compiletest suite=mir-opt mode=mir-opt (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
[00:55:18] 
[00:55:18] running 46 tests
[00:55:24] ERROR 2018-08-16T23:32:04Z: compiletest::runtest: None
[00:55:26] ERROR 2018-08-16T23:32:07Z: compiletest::runtest: None
[00:55:36] thread 'main' panicked at 'Some tests failed', tools/compiletest/src/main.rs:497:22
[00:55:36] ..........................F.F.................
[00:55:36] 
[00:55:36] ---- [mir-opt] mir-opt/issue-49232.rs stdout ----
[00:55:36] ---- [mir-opt] mir-opt/issue-49232.rs stdout ----
[00:55:36] thread '[mir-opt] mir-opt/issue-49232.rs' panicked at 'Did not find expected line, error: Mismatch in lines
[00:55:36] Current block: None
[00:55:36] Actual Line: "    let mut _4: &\'<empty> bool;"
[00:55:36] Expected Line: "    let mut _4: u8;"
[00:55:36] Test Name: rustc.main.mir_map.0.mir
[00:55:36] ... (elided)
[00:55:36] fn main() -> (){
[00:55:36] fn main() -> (){
[00:55:36]     let mut _0: ();
[00:55:36]     scope 1 {
[00:55:36]     scope 2 {
[00:55:36]         let _2: i32;
[00:55:36]     }
[00:55:36]     }
[00:55:36]     let mut _1: ();
[00:55:36]     let mut _3: bool;
[00:55:36]     let mut _4: u8;
[00:55:36]     let mut _5: !;
[00:55:36]     let mut _6: ();
[00:55:36]     let mut _7: &i32;
[00:55:36]     bb0: {
[00:55:36]         goto -> bb1;
[00:55:36]     bb1: {
[00:55:36]     bb1: {
[00:55:36]         falseUnwind -> [real: bb3, cleanup: bb4];
[00:55:36]     bb2: {
[00:55:36]         goto -> bb29;
[00:55:36]     }
[00:55:36]     bb3: {
[00:55:36]     bb3: {
[00:55:36]         StorageLive(_2);
[00:55:36]         StorageLive(_3);
[00:55:36]         _3 = const true;
[00:55:36]         _4 = discriminant(_3);
[00:55:36]         switchInt(_3) -> [false: bb11, otherwise: bb10];
[00:55:36]     bb4: {
[00:55:36]         resume;
[00:55:36]     }
[00:55:36]     bb5: {
[00:55:36]     bb5: {
[00:55:36]         _2 = const 4i32;
[00:55:36]         goto -> bb14;
[00:55:36]     }
[00:55:36]     bb6: {
[00:55:36]         _0 = ();
[00:55:36]         goto -> bb15;
[00:55:36]     }
[00:55:36]     bb7: {
[00:55:36]         falseEdges -> [real: bb12, imaginary: bb8];
[00:55:36]     bb8: {
[00:55:36]     bb8: {
[00:55:36]         falseEdges -> [real: bb13, imaginary: bb9];
[00:55:36]     bb9: {
[00:55:36]         unreachable;
[00:55:36]     }
[00:55:36]     bb10: {
---
[00:55:36]     }
[00:55:36]     bb13: {
[00:55:36]         goto -> bb6;
[00:55:36]     }
[00:55:36]     bb14: {
[00:55:36]         StorageDead(_3);
[00:55:36]         StorageLive(_7);
[00:55:36]         _7 = &_2;
[00:55:36]         _6 = const std::mem::drop(move _7) -> [return: bb28, unwind: bb4];
[00:55:36]     bb15: {
[00:55:36]         goto -> bb16;
[00:55:36]     }
[00:55:36]     bb16: {
[00:55:36]     bb16: {
[00:55:36]         goto -> bb17;
[00:55:36]     }
[00:55:36]     bb17: {
[00:55:36]         goe;
[00:55:36]     }
[00:55:36]     bb27: {                             
[00:55:36]         StorageDead(_5);
[00:55:36]         goto -> bb14;
[00:55:36]     }
[00:55:36]     bb28: {                             
[00:55:36]         StorageDead(_7);
[00:55:36]         _1 = ();
[00:55:36]         StorageDead(_2);
[00:55:36]         goto -> bb1;
[00:55:36]     }
[00:55:36]     bb29: {                             
[00:55:36]         return;
[00:55:36] }', tools/compiletest/src/runtest.rs:2828:13
[00:55:36] note: Run with `RUST_BACKTRACE=1` for a backtrace.
[00:55:36] 
[00:55:36] ---- [mir-opt] mir-opt/match_false_edges.rs stdout ----
[00:55:36] ---- [mir-opt] mir-opt/match_false_edges.rs stdout ----
[00:55:36] thread '[mir-opt] mir-opt/match_false_edges.rs' panicked at 'Did not find expected line, error: Mismatch in lines
[00:55:36] Current block: None
[00:55:36] Actual Line: "        _3 = &(promoted[1]: std::option::Option<i32>);"
[00:55:36] Expected Line: "     _3 = discriminant(_2);"
[00:55:36] Test Name: rustc.full_tested_match.QualifyAndPromoteConstants.after.mir
[00:55:36] ... (elided)
[00:55:36]  bb0: {
[00:55:36] ... (elided)
[00:55:36] ... (elided)
[00:55:36]      _2 = std::option::Option<i32>::Some(const 42i32,);
[00:55:36]      _3 = discriminant(_2);
[00:55:36]      _4 = &(promoted[1]: std::option::Option<i32>);
[00:55:36]      _9 = discriminant(_2);
[00:55:36]      switchInt(move _9) -> [0isize: bb5, 1isize: bb3, otherwise: bb7];
[00:55:36]  bb1: {
[00:55:36]      resume;
[00:55:36]  }
[00:55:36]  }
[00:55:36]  bb2: {  // arm1
[00:55:36]      _1 = (const 3i32, const 3i32);
[00:55:36]      goto -> bb13;
[00:55:36]  }
[00:55:36]  bb3: { // binding3(empty) and arm3
[00:55:36]      ReadForMatch(_4);
[00:55:36]      falseEdges -> [real: bb8, imaginary: bb4]; //pre_binding1
[00:55:36]  bb4: {
[00:55:36]      ReadForMatch(_4);
[00:55:36]      ReadForMatch(_4);
[00:55:36]      falseEdges -> [real: bb12, imaginary: bb5]; //pre_binding2
[00:55:36]  bb5: {
[00:55:36]      ReadForMatch(_4);
[00:55:36]      ReadForMatch(_4);
[00:55:36]      falseEdges -> [real: bb2, imaginary: bb6]; //pre_binding3
[00:55:36]  bb6: {
[00:55:36]      unreachable;
[00:55:36]  }
[00:55:36]  bb7: {
[00:55:36]  bb7: {
[00:55:36]      unreachable;
[00:55:36]  }
[00:55:36]  bb8: { // binding1 and guard
[00:55:36]      StorageLive(_7);
[00:55:36]      _7 = &(((promoted[0]: std::option::Option<i32>) as Some).0: i32);
[00:55:36]      StorageLive(_10);
[00:55:36]      _10 = const guard() -> [return: bb9, unwind: bb1];
[00:55:36]  bb9: {
[00:55:36]  bb9: {
[00:55:36]      switchInt(move _10) -> [false: bb10, otherwise: bb11];
[00:55:36]  }
[00:55:36]  bb10: { // to pre_binding2
[00:55:36]      falseEdges -> [real: bb4, imaginary: bb4];
[00:55:36]  }
[00:55:36]  bb11: { // bindingNoLandingPads.before.mir2 and arm2
[00:55:36]      StorageLive(_5);
[00:55:36]      _5 = ((_2 as Some).0: i32);
[00:55:36]      StorageLive(_11);
[00:55:36]      _11 = _5;
[00:55:36]      _1 = (const 1i32, move _11);
[00:55:36]      StorageDead(_11);
[00:55:36]      goto -> bb13;
[00:55:36]  bb12: {
[00:55:36]  bb12: {
[00:55:36]      StorageLive(_8);
[00:55:36]      _8 = ((_2 as Some).0: i32);
[00:55:36]      StorageLive(_12);
[00:55:36]      _12 = _8;
[00:55:36]      _1 = (const 2i32, move_12);
[00:55:36]      StorageDead(_12);
[00:55:36]      goto -> bb13;
[00:55:36]  bb13: {
[00:55:36] ... (elided)
[00:55:36]      return;
[00:55:36]  }
[00:55:36]  }
[00:55:36] Actual:
[00:55:36] fn full_tested_match() -> (){
[00:55:36]     let mut _0: ();
[00:55:36]     scope 1 {
[00:55:36]     scope 2 {
[00:55:36]     }
[00:55:36]     }
[00:55:36]     let mut _1: (i32, i32);
[00:55:36]     let mut _2: std::option::Option<i32>;
[00:55:36]     let mut _3: &'<empty> std::option::Option<i32>;
[00:55:36]     let mut _8: isize;
[00:55:36]     let mut _9: bool;
[00:55:36]     let mut _10: i32;
[00:55:36]     let mut _11: i32;
[00:55:36]     bb0: {                              
[00:55:36]         StorageLive(_1);
[00:55:36]         StorageLive(_2);
[00:55:36]         _2 = std::option::Option<i32>::Some(const 42i32,);
[00:55:36]         _3 = &(promoted[1]: std::option::Option<i32>);
[00:55:36]         _8 = discriminant(_2);
[00:55:36]         switchInt(move _8) -> [0isize: bb5, 1isize: bb3, otherwise: bb7];
[00:55:36]     bb1: {
[00:55:36]         resume;
[00:55:36]     }
[00:55:36]     }
[00:55:36]     bb2: {                              
[00:55:36]         _1 = (const 3i32, const 3i32);
[00:55:36]         goto -> bb13;
[00:55:36]     }
[00:55:36]     bb3: {                              
[00:55:36]         ReadForMatch(_3);
[00:55:36]         falseEdges -> [real: bb8, imaginary: bb4];
[00:55:36]     }
[00:55:36]     bb4: {                              
[00:55:36]         ReadForMatch(_3);
[00:55:36]         falseEdges -> [real: bb12, imaginary: bb5];
[00:55:36]     }
[00:55:36]     bb5: {                              
[00:55:36Thu, 16 Aug 2018 23:32:17 GMT

The command "date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
" exited with 0.
travis_fold:start:after_failure.1

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)

@nikomatsakis
Copy link
Contributor

@matthewjasper

Track borrows with this type even behind shared reference dereferences and consider all accesses to be deep when checking for conflicts with this borrow type.

Ugh, good catch!

@bors
Copy link
Contributor

bors commented Aug 22, 2018

β˜” The latest upstream changes (presumably #53581) made this pull request unmergeable. Please resolve the merge conflicts.

Copy link
Contributor

@nikomatsakis nikomatsakis left a comment

Choose a reason for hiding this comment

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

I'm pondering this. Adding a new kind of borrow doesn't feel great to me, since it is sort of a "fundamental extension", but maybe it's the right thing.

@@ -427,6 +427,26 @@ pub enum BorrowKind {
/// Data must be immutable and is aliasable.
Shared,

/// When matching on a place we cannot further mutation as this can break
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: missing verb. "we cannot permit future mutation"?

///
/// This can't be a shared borrow because:
/// * Existing mutable references are fine, since they prevent matching
/// with a pattern that isn't exhaustive.
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't understand what "existing mutable references" means here

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I meant that we can match on a mutably borrowed place.

Copy link
Contributor

Choose a reason for hiding this comment

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

e.g., match &mut foo { ... }?

/// This can't be a shared borrow because:
/// * Existing mutable references are fine, since they prevent matching
/// with a pattern that isn't exhaustive.
/// * All accesses should be considered deep for conflicts with this kind
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: some missing puncutation, I think. "All accesses should be considered deep for conflicts: with this kind of borrow, the above example..."

@@ -533,6 +524,10 @@ impl<'cx, 'gcx, 'tcx> DataflowResultsConsumer<'cx, 'tcx> for MirBorrowckCtxt<'cx
self.consume_operand(context, (input, span), flow_state);
}
}
StatementKind::ReadForMatch(_) => {
// If a temporary is ReadForMatch, then there are no other
// accesses of it, so there's no need to check anything here.
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't understand this comment, can you elaborate?

// value of a memory location.
ShallowOrDeep::Deep
} else {
access
Copy link
Contributor

Choose a reason for hiding this comment

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

It is weird to me that we examine the borrow kind in order to change the access. I see why it sort of does the right thing, but something seems off to me. I wonder if what we "really want" here is instead to have multiple shared borrows, rather than adding a new kind of borrow -- that is, we originally thought that a single borrow of the "place being matched" would suffice, but it seems like that is not true, we want to borrow all prefixes of the place being matched perhaps? Or..something like that.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is probably more sensible here. But there still needs to be some way to not error when matching on a borrowed place.

Copy link
Contributor

Choose a reason for hiding this comment

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

@matthewjasper

But there still needs to be some way to not error when matching on a borrowed place.

I'm not entirely sure what you mean by that, actually, what's the example you have in mind?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

// permission check already account for this borrow.
debug!("places_conflict: behind a shared ref");
return false;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

As I wrote in a comment somewhere else:

(a) I think that the second element of the tuples here (the type) is now unused
(b) Why is it ok to remove this logic -- is it because we aren't tracking the borrows anymore? If so, maybe we can add an assertion of some kind...

@nikomatsakis
Copy link
Contributor

cc @pnkfelix -- you've been doing a lot of the work in this area

@memoryruins memoryruins added the A-NLL Area: Non Lexical Lifetimes (NLL) label Aug 28, 2018
@nikomatsakis
Copy link
Contributor

Having thought about this, I am still tempted by the idea of pushing this into the MIR desugaring in the form of multiple borrows.

I'm not sure how best to code things but I think what I would ideally want would be:

  • We traverse the arms and identify each Place where we have to do some sort of runtime test.
    • this includes in particular enums but also constants
  • For each of those, we issue a borrow (with accompanying synthetic read)
    • we could just borrow the discriminant path itself

This would presumably be the most precise thing, though it might introduce a fair number of borrows and hence have a perf impact on "match heavy" code.

It's also kind of a pain since we accumulate the list of Place values while lowering the arms but we'd like to introduce the borrows beforehand.

But maybe that's too complex? Still, it feels not that complex to me, and we need the artifical reads and so forth for other reasons...

@matthewjasper
Copy link
Contributor Author

I'll give this a try to see how it ends up. But it does sound like a plausible way forwards.

@bors
Copy link
Contributor

bors commented Sep 8, 2018

β˜” The latest upstream changes (presumably #53909) made this pull request unmergeable. Please resolve the merge conflicts.

@matthewjasper
Copy link
Contributor Author

Updated to the new approach

@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.
[00:38:11]    Compiling rand_core v0.2.1
[00:38:11]    Compiling pulldown-cmark v0.1.2
[00:38:11]    Compiling libc v0.2.43
[00:38:11]    Compiling macro-utils v0.1.2
[00:38:11] error: Could not compile `pulldown-cmark`.
[00:38:11] error: Could not compile `rand_core`.
[00:38:11] warning: build failed, waiting for other jobs to finish...
[00:38:11] error: Could not compile `macro-utils`.
[00:38:11] warning: build failed, waiting for other jobs to finish...
---
[00:38:11] 
[00:38:11] 
[00:38:11] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap build
[00:38:11] Build completed unsuccessfully in 0:33:26
[00:38:11] Makefile:28: recipe for target 'all' failed
[00:38:11] make: *** [all] Error 1

The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:17ce1712
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
---
travis_time:end:100753f4:start=1537012871229439148,finish=1537012871235273713,duration=5834565
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:0fcf7fc9
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:start:crashlog
obj/cores/core.12947.!checkout!obj!build!x86_64-unknown-linux-gnu!stage2!bin!rustc
Source directories searched: /home/travis/build/rust-lang/rust/src:$cdir:$cwd
Reading symbols from obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc...(no debugging symbols found)...done.
[New LWP 12947]
warning: Could not load shared library symbols for 14 libraries, e.g. /lib/x86_64-linux-gnu/libc.so.6.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?
Core was generated by `/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc --crate-name rand'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f522b686fde in _$LT$rustc..session..search_paths..Iter$LT$$u27$a$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$::next::h7c80b35a012ed770 ()
   from ./checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/../lib/../lib/librustc-bc944c9562c6c006.so
#0  0x00007f522b686fde in _$LT$rustc..session..search_paths..Iter$LT$$u27$a$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$::next::h7c80b35a012ed770 ()
   from ./checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/../lib/../lib/librustc-bc944c9562c6c006.so
#1  0x00007f522dbc437b in rustc::session::filesearch::FileSearch::search::h749a906ae2d6a9af ()
   from ./checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/../lib/../lib/librustc_metadata-bfef33581cd386fb.so
#2  0x00007f522dbdb8ae in rustc_metadata::locator::Context::find_library_crate::h6799e4bf2d9e722a ()
   from ./checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/../lib/../lib/librustc_metadata-bfef33581cd386fb.so
#3  0x00007f522dbd9be3 in rustc_metadata::locator::Context::maybe_load_library_crate::ha3b7beffbea099fc ()
   from ./checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/../lib/../lib/librustc_metadata-bfef33581cd386fb.so
#4  0x00007f522dbef60f in rustc_metadata::creader::CrateLoader::load::hebf460ddba031e0b ()
   from ./checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/../lib/../lib/librustc_metadata-bfef33581cd386fb.so
#5  0x00007f522dbed83d in rustc_metadata::creader::CrateLoader::resolve_crate::h75c4fcc9225a9039 ()
   from ./checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/../lib/../lib/librustc_metadata-bfef33581cd386fb.so
#6  0x00007f522dbf2bcf in rustc_metadata::creader::CrateLoader::process_extern_crate::hd648b705737a3af4 ()
   from ./checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/../lib/../lib/librustc_metadata-bfef33581cd386fb.so
#7  0x00007f522ecdd1ab in rustc_resolve::build_reduced_graph::_$LT$impl$u20$rustc_resolve..Resolver$LT$$u27$a$C$$u20$$u27$cl$GT$$GT$::build_reduced_graph_for_item::hb414e60ca6e21b82 ()
---Type <return> to continue, or q <return> to quit---

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)

@matthewjasper
Copy link
Contributor Author

matthewjasper commented Sep 15, 2018

Actual error:

  process didn't exit successfully: `/-/rust/build/bootstrap/debug/rustc
--crate-name rand_core
/-/.cargo/registry/src/github.com-1ecc6299db9ec823/rand_core-0.2.1/src/lib.rs --crate-type lib 
--emit=dep-info,link -C opt-level=2 --cfg 'feature="alloc"' --cfg 'feature="std"'
-C metadata=9ebca8d32d49ccaa -C extra-filename=-9ebca8d32d49ccaa --out-dir
/-/rust/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps
--target x86_64-unknown-linux-gnu
-L dependency=/-/rust/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps
-L dependency=/-/dev/rust/build/x86_64-unknown-linux-gnu/stage2-tools/release/deps --cap-lints warn`
(signal: 11, SIGSEGV: invalid memory reference)

Looks like stage1 is miscompiling things.

@matthewjasper
Copy link
Contributor Author

I think I have a solution once #54188 is merged

@pnkfelix
Copy link
Member

@matthewjasper does the description reflect the current state of the PR?

Eg is this still adding a new BorrowKind for match?

@matthewjasper
Copy link
Contributor Author

The description has been updated

Copy link
Contributor

@nikomatsakis nikomatsakis left a comment

Choose a reason for hiding this comment

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

Awesome work.

@@ -456,6 +456,23 @@ pub enum BorrowKind {
/// Data must be immutable and is aliasable.
Shared,

/// When matching on a place we want to ensure that places have the same
Copy link
Contributor

Choose a reason for hiding this comment

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

Good comment but I'd prefer to start with a description of the "semantics" of a "shallow borrow". I think this is accurate:


The immediately borrowed Place must be immutable
but projections from that place are not considered borrowed.
So a shallow borrow of a.b still permits writes to a.b.c.
This effectively borrows the discriminant of enums as well as
atomic integer values.

This is used when desugaring matches to ensure that
the places involved in the match have the same value
from the start of the match until an arm is selected. ...

@@ -1294,6 +1300,9 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
match *rvalue {
Rvalue::Ref(_ /*rgn*/, bk, ref place) => {
let access_kind = match bk {
BorrowKind::Shallow => {
(Shallow(Some(ArtificialField::Discriminant)), Read(ReadKind::Borrow(bk)))
Copy link
Contributor

Choose a reason for hiding this comment

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

Are we sure we want discriminant here? Isn't part of the purpose of this to freeze integer values and the like? Maybe a comment might be nice here too.

Copy link
Contributor

Choose a reason for hiding this comment

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

From looking over the code, it seems like the effect of this is that if you have a borrow of (say) a.b.c and we shallow borrow a.b, this won't be considered a conflict. I think .. this is correct, but I'm wondering if maybe we should add another ArtificialField variant, like ShallowBorrow. Re-using Discriminant seems to give bad "intuitions" to me, though I guess I can't think where it would go wrong.

Maybe we should just rename ArtificialField::Discriminant to ShallowBorrow, actually.

@@ -1505,7 +1514,14 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
// that is merged.
let sd = if might_be_alive { Deep } else { Shallow(None) };

if places_conflict::places_conflict(self.tcx, self.mir, place, root_place, sd) {
if places_conflict::places_conflict(
Copy link
Contributor

Choose a reason for hiding this comment

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

we should maybe rename this borrow_conflicts_with_place. That would make me feel better about passing in the borrow.kind πŸ˜›

@@ -1505,7 +1514,14 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
// that is merged.
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: I think this FIXME is outdated

src/librustc_mir/diagnostics.rs Show resolved Hide resolved
// so many false edges in the future, so we read for all Candidates for
// now.
// Another option would be to make our own block and add our own false
// edges to it.
Copy link
Contributor

Choose a reason for hiding this comment

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

Hmm, there can sometimes be a lot of arms. I like the idea of branching to a block via fake-edges, but I'm trying to figure out how that would work... would said block "branch back" to every arm? I'm worried that might cause excessive problems of its own, but perhaps not, perhaps we already have equivalent fake edges?

Copy link
Contributor

Choose a reason for hiding this comment

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

I guess we can see if this becomes a perf problem. I just know we've encountered e.g. matches with huge numbers of arms being generated from constants. But typically in that case the match is matching on a single value, so I guess it would just be linear growth, which is probably fine.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Indeed, I think that this can stay as is until someone shows performance problems. I think the most likely way this could end up being slow is from a custom derive on an enum with a lot of variants with fields (which somehow adds a guard somewhere).

@@ -473,11 +473,20 @@ impl<'cx, 'gcx, 'tcx> DataflowResultsConsumer<'cx, 'tcx> for MirBorrowckCtxt<'cx
);
}
StatementKind::ReadForMatch(ref place) => {
self.access_place(
// Read for match doesn't access any memory and is used to
Copy link
Contributor

Choose a reason for hiding this comment

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

Which borrows was this conflicting with? It feels like we should be able to treat this as an access. Maybe the ReadForMatch statements are coming at the wrong place?

Oh, I guess I see, this is not really about the shallow borrows we are making, but rather about the "read for match" that we add to the "main path" being matched?

(Which may or may not have a shallow borrow associated with it)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is for the discriminant => ReadForMatch change (although I might change this when ReadForMatch is split)

--> $DIR/borrowck-describe-lvalue.rs:201:15
|
LL | let x = &mut e;
| ------ borrow of `e` occurs here
Copy link
Contributor

Choose a reason for hiding this comment

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

did you inspect all these caes? are these duplicate errors?

Copy link
Member

@pnkfelix pnkfelix Sep 24, 2018

Choose a reason for hiding this comment

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

I just inspected them myself. They all appear to be cases where we were previously flagging both the initial match v { ... } as conflicting with a mutable borrow of v, as well as flagging the binding in the pattern. In every case I think the github presentation of the diff here shows the flagging of the binding in the pattern as an error.


However, it does lead me to wonder: do we have a test somewhere of how we are handling let x = &mut v; match v { _ => ... }; use(x); ...? Because a PR like this might affect that. I haven't tried to look for that yet.

(And I'm not really certainly I know how it should affect it. I believe i understand that under this PR's model, let x = &mut v.0; match v { _ => ... }; use(x); would be accepted by the compiler. But would let x = &mut v; match v { _ => ... }; use(x); be rejected ?)

// switchInt(move _9) -> [0isize: bb5, 1isize: bb3, otherwise: bb7];
// ReadForMatch(_2);
// _7 = discriminant(_2);
// _9 = &(promoted[2]: std::option::Option<i32>);
Copy link
Contributor

Choose a reason for hiding this comment

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

are these shallow borrows? can we have that show up somehow in the MIR?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sure, I'll change how they are printed

@bors

This comment has been minimized.

@matthewjasper matthewjasper force-pushed the permissive-match-access branch 2 times, most recently from 8dc27ae to 67c9653 Compare September 23, 2018 11:40
pnkfelix added a commit to pnkfelix/rust that referenced this pull request Sep 24, 2018
@bors
Copy link
Contributor

bors commented Sep 24, 2018

β˜” The latest upstream changes (presumably #54509) made this pull request unmergeable. Please resolve the merge conflicts.

@matthewjasper
Copy link
Contributor Author

rebased and fixed test and an out of date comment

@nikomatsakis
Copy link
Contributor

@bors r=pnkfelix

@bors
Copy link
Contributor

bors commented Sep 24, 2018

πŸ“Œ Commit 92085784b5f66045ee388cdd777670ee041a6615 has been approved by pnkfelix

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 24, 2018
@nikomatsakis
Copy link
Contributor

@matthewjasper in general you can feel free to r=so-and-so if it was a routine rebase

This allows treating the "fake" match borrows differently from shared
borrows.
As we are now creating borrows of places that may not be valid for
borrow checking matches, these have to be removed to avoid generating
broken code.
This name better reflects the asymmetry of this function.
@matthewjasper
Copy link
Contributor Author

@bors r=pnkfelix

@bors
Copy link
Contributor

bors commented Sep 24, 2018

πŸ“Œ Commit a830732 has been approved by pnkfelix

@bors
Copy link
Contributor

bors commented Sep 25, 2018

βŒ› Testing commit a830732 with merge 3a2190a...

bors added a commit that referenced this pull request Sep 25, 2018
[NLL] Be more permissive when checking access due to Match

Partially addresses #53114. notably, we should now have parity with AST borrowck. Matching on uninitialized values is still forbidden.

* ~~Give fake borrows for match their own `BorrowKind`~~
* ~~Allow borrows with this kind to happen on values that are already mutably borrowed.~~
* ~~Track borrows with this type even behind shared reference dereferences and consider all accesses to be deep when checking for conflicts with this borrow type. See [src/test/ui/issues/issue-27282-mutate-before-diverging-arm-3.rs](cb5c989#diff-a2126cd3263a1f5342e2ecd5e699fbc6) for an example soundness issue this fixes (a case of #27282 that wasn't handled correctly).~~
* Create a new `BorrowKind`: `Shallow` (name can be bike-shed)
* `Shallow` borrows differ from shared borrows in that
  * When we check for access we treat them as a `Shallow(Some(_))` read
  * When we check for conflicts with them, if the borrow place is a strict prefix of the access place then we don't consider that a conflict.
    * For example, a `Shallow` borrow of `x` does not conflict with any access or borrow of `x.0` or `*x`
* Remove the current fake borrow in matches.
* When building matches, we take a `Shallow` borrow of any `Place` that we switch on or bind in a match, and any prefix of those places. (There are some optimizations where we do fewer borrows, but this shouldn't change semantics)
  * `match x { &Some(1) => (),  _ => (), }` would `Shallow` borrow `x`, `*x` and `(*x as Some).0` (the `*x` borrow is unnecessary, but I'm not sure how easy it would be to remove.)
* Replace the fake discriminant read with a `ReadForMatch`.
* Change ReadForMatch to only check for initializedness (to prevent `let x: !; match x {}`), but not conflicting borrows. It is still considered a use for liveness and `unsafe` checking.
* Give special cased error messages for this kind of borrow.

Table from the above issue after this PR

| Thing | AST | MIR | Want | Example |
| --- | --- | --- | --- |---|
| `let _ = <unsafe-field>` | πŸ’š  | πŸ’š  | ❌ |  [playground](https://play.rust-lang.org/?gist=bb7843e42fa5318c1043d04bd72abfe4&version=nightly&mode=debug&edition=2015) |
| `match <unsafe_field> { _ => () }` | ❌  | ❌ | ❌ | [playground](https://play.rust-lang.org/?gist=3e3af05fbf1fae28fab2aaf9412fb2ea&version=nightly&mode=debug&edition=2015) |
| `let _ = <moved>` | πŸ’š  | πŸ’š | πŸ’š | [playground](https://play.rust-lang.org/?gist=91a6efde8288558e584aaeee0a50558b&version=nightly&mode=debug&edition=2015) |
| `match <moved> { _ => () }` | ❌ | ❌  | πŸ’š | [playground](https://play.rust-lang.org/?gist=804f8185040b2fe131f2c4a64b3048ca&version=nightly&mode=debug&edition=2015) |
| `let _ = <borrowed>` | πŸ’š  | πŸ’š | πŸ’š | [playground](https://play.rust-lang.org/?gist=0e487c2893b89cb772ec2f2b7c5da876&version=nightly&mode=debug&edition=2015) |
| `match <borrowed> { _ => () }` | πŸ’š  | πŸ’š | πŸ’š | [playground](https://play.rust-lang.org/?gist=0e487c2893b89cb772ec2f2b7c5da876&version=nightly&mode=debug&edition=2015) |

r? @nikomatsakis
@bors
Copy link
Contributor

bors commented Sep 25, 2018

β˜€οΈ Test successful - status-appveyor, status-travis
Approved by: pnkfelix
Pushing 3a2190a to master...

@bors bors merged commit a830732 into rust-lang:master Sep 25, 2018
@matthewjasper matthewjasper deleted the permissive-match-access branch October 13, 2018 20:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-NLL Area: Non Lexical Lifetimes (NLL) S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants