The last, now reverted change, to uvm_map_inentry() exposes a race that
is reproducible while building lang/go on amd64 which makes uvm_fault()
fail, resulting a in a SIGSEV of at least one of the processes.
In my tests, uvm_fault() always failed due to 2 conditions, see below.
1. when uvm_map_lookup_entry() did not find anything for a given
address:
lookup (c021401000)
pid 27267 (compile): SEGV at rip 45bcf3 addr c021401000 error=14
rip 0x45bcf3 cs 0x2b rfl 0x10206 rsp 0xc00089cae8 ss 0x23
err 0x6 trapno 0x6
rdi 0xc000763000 rsi 0x1 rdx 0x1597200
rcx 0xc000762000 r8 0xc000762000 r9 0x1
r10 0x214f47770 r11 0x3b1 r12 0x0
r13 0x40 r14 0xfc7e34 r15 0x0
rbp 0xc00089cb30 rbx 0x1000 rax 0x0
This corresponding to the Go "Trace 1" of the attached log.
Another one:
lookup (21efb2000)
pid 8605 (go_bootstrap): SEGV at rip 41f713 addr 21efb2000 error=14
rip 0x41f713 cs 0x2b rfl 0x10202 rsp 0xc0003cff30 ss 0x23
err 0x7 trapno 0x6
rdi 0xe rsi 0x3 rdx 0x500
rcx 0x940 r8 0x2b1ed1fff r9 0xc0006df900
r10 0xc000026170 r11 0x498 r12 0x75
r13 0xac4f60 r14 0x0 r15 0x0
rbp 0xc0003cff78 rbx 0xaff580 rax 0xc000026170
This corresponding to the Go "Trace 2" of the attached log.
2. When the protection of the found entry did not match the access
type:
orig_rvaddr = ae3000 (5 != 2)
pid 96238 (compile): SEGV at rip ca576f addr ae3048 error=13
rip 0xca576f cs 0x2b rfl 0x10202 rsp 0xc003784cb0 ss 0x23
err 0x6 trapno 0x6
rdi 0xd0 rsi 0xd0 rdx 0x8
rcx 0xc000340480 r8 0x2f0241a05 r9 0x203000
r10 0x8 r11 0x76 r12 0xf6
r13 0x0 r14 0xfc7f74 r15 0x0
rbp 0xc003784cf8 rbx 0x8 rax 0xc00387400
This corresponding to the Go "Trace 3" of the attached log.
Note that in this trace two processes received a SIGSEV, the
other one because of an entry not found:
lookup (24c124000)
pid 66003 (compile): SEGV at rip 45c213 addr 24c124878 error=14
rip 0x45c213 cs 0x2b rfl 0x10206 rsp 0xc000045c80 ss 0x23
err 0x6 trapno 0x6
rdi 0xc001cb7d00 rsi 0xc001babd00 rdx 0xc001ba8000
rcx 0xc001bac000 r8 0xffffffff r9 0x0
r10 0x5012 r11 0x202 r12 0x3
r13 0x1 r14 0xfc7e0e r15 0x39
rbp 0xc000045e30 rbx 0x200 rax 0x300
Interestingly the machine cannot reproduce the race if the KERNEL_LOCK()
is used as a barrier, like in the diff below.
I couldn't reproduce the race with the go programs in src/regress.
Building go is huge and difficult to instrument.
By looking at sigpanic() in the traces it seems that stack manipulation
is generally the trigger. I'm guessing the issue needs a multi-threaded
program to be exposed but at that stage I'd appreciate any pointer or
any simpler way to trigger the race.
Cheers,
Martin
Index: uvm/uvm_map.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_map.c,v
retrieving revision 1.250
diff -u -p -r1.250 uvm_map.c
--- uvm/uvm_map.c 2 Nov 2019 16:41:57 -0000 1.250
+++ uvm/uvm_map.c 3 Nov 2019 13:00:17 -0000
@@ -1873,15 +1873,17 @@ uvm_map_inentry(struct proc *p, struct p
if (uvm_map_inentry_recheck(serial, addr, ie)) {
KERNEL_LOCK();
+ KERNEL_UNLOCK();
ok = uvm_map_inentry_fix(p, ie, addr, fn, serial);
if (!ok) {
+ KERNEL_LOCK();
printf(fmt, p->p_p->ps_comm, p->p_p->ps_pid, p->p_tid,
addr, ie->ie_start, ie->ie_end);
p->p_p->ps_acflag |= AMAP;
sv.sival_ptr = (void *)PROC_PC(p);
trapsignal(p, SIGSEGV, 0, SEGV_ACCERR, sv);
+ KERNEL_UNLOCK();
}
- KERNEL_UNLOCK();
}
return (ok);
}
Trace 1
=======
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0xc021401000 pc=0x45bcf3]
goroutine 35 [running]:
runtime.throw(0xe4c112, 0x2a)
/usr/local/go/src/runtime/panic.go:774 +0x72 fp=0xc00089cab8
sp=0xc00089ca88 pc=0x42d2c2
runtime.sigpanic()
/usr/local/go/src/runtime/signal_unix.go:378 +0x47c fp=0xc00089cae8
sp=0xc00089cab8 pc=0x44214c
runtime.memclrNoHeapPointers(0xc000762000, 0x2000)
/usr/local/go/src/runtime/memclr_amd64.s:46 +0x83 fp=0xc00089caf0
sp=0xc00089cae8 pc=0x45bcf3
runtime.(*mheap).alloc(0x1597200, 0x1, 0x1010028, 0x24dd5ed20)
/usr/local/go/src/runtime/mheap.go:1098 +0xda fp=0xc00089cb40
sp=0xc00089caf0 pc=0x424a8a
runtime.(*mcentral).grow(0x1597fb8, 0x0)
/usr/local/go/src/runtime/mcentral.go:255 +0x7b fp=0xc00089cb80
sp=0xc00089cb40 pc=0x416cbb
runtime.(*mcentral).cacheSpan(0x1597fb8, 0x203000)
/usr/local/go/src/runtime/mcentral.go:106 +0x2fe fp=0xc00089cbe0
sp=0xc00089cb80 pc=0x4167de
runtime.(*mcache).refill(0x24dd53460, 0x28)
/usr/local/go/src/runtime/mcache.go:138 +0x85 fp=0xc00089cc00
sp=0xc00089cbe0 pc=0x416285
runtime.(*mcache).nextFree(0x24dd53460, 0x28, 0x30, 0x30, 0xc000558450)
/usr/local/go/src/runtime/malloc.go:854 +0x87 fp=0xc00089cc38
sp=0xc00089cc00 pc=0x40b4f7
runtime.mallocgc(0x160, 0xe28040, 0xe10c01, 0xc000558450)
/usr/local/go/src/runtime/malloc.go:1022 +0x793 fp=0xc00089ccd8
sp=0xc00089cc38 pc=0x40be33
runtime.newobject(0xe28040, 0xc0005583f0)
/usr/local/go/src/runtime/malloc.go:1151 +0x38 fp=0xc00089cd08
sp=0xc00089ccd8 pc=0x40c228
cmd/compile/internal/ssa.NewFunc(...)
/usr/local/go/src/cmd/compile/internal/ssa/func.go:81
cmd/compile/internal/gc.buildssa(0xc00029ba20, 0x2, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:200 +0x223
fp=0xc00089ceb0 sp=0xc00089cd08 pc=0xca3273
cmd/compile/internal/gc.compileSSA(0xc00029ba20, 0x2)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:298 +0x4d
fp=0xc00089cf98 sp=0xc00089ceb0 pc=0xc6e6ad
cmd/compile/internal/gc.compileFunctions.func2(0xc000723200, 0xc000927c30, 0x2)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:363 +0x49
fp=0xc00089cfc8 sp=0xc00089cf98 pc=0xd309b9
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1357 +0x1 fp=0xc00089cfd0
sp=0xc00089cfc8 pc=0x45ad51
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128
goroutine 1 [runnable]:
[460/506]
cmd/compile/internal/gc.compileFunctions()
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:369 +0x17c
cmd/compile/internal/gc.Main(0xe57328)
/usr/local/go/src/cmd/compile/internal/gc/main.go:695 +0x3241
main.main()
/usr/local/go/src/cmd/compile/main.go:51 +0xac
goroutine 33 [runnable]:
cmd/compile/internal/ssa.phielimValue(0xc0007689a0, 0x50c2732d00)
/usr/local/go/src/cmd/compile/internal/ssa/phielim.go:35 +0x123
cmd/compile/internal/ssa.phielim(0xc0009389a0)
/usr/local/go/src/cmd/compile/internal/ssa/phielim.go:25 +0x50
cmd/compile/internal/ssa.Compile(0xc0009389a0)
/usr/local/go/src/cmd/compile/internal/ssa/compile.go:92 +0x994
cmd/compile/internal/gc.buildssa(0xc000460160, 0x0, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:289 +0xc0e
cmd/compile/internal/gc.compileSSA(0xc000460160, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:298 +0x4d
cmd/compile/internal/gc.compileFunctions.func2(0xc000723200, 0xc000927c30, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:363 +0x49
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128
goroutine 34 [runnable]:
cmd/compile/internal/gc.(*state).stmtList(0xc00046a000, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:816 +0x85
cmd/compile/internal/gc.(*state).expr(0xc00046a000, 0xc000062d00, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:1735 +0x6d
cmd/compile/internal/gc.(*state).condBranch(0xc00046a000, 0xc000062d00,
0xc0007eb9e8, 0xc0007eb8c8, 0x416600)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:2672 +0x178
cmd/compile/internal/gc.(*state).stmt(0xc00046a000, 0xc000062c00)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:1078 +0x15d4
cmd/compile/internal/gc.(*state).stmtList(0xc00046a000, 0xc0008efd80)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:818 +0x58
cmd/compile/internal/gc.buildssa(0xc00029a840, 0x1, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:271 +0xb6f
cmd/compile/internal/gc.compileSSA(0xc00029a840, 0x1)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:298 +0x4d
cmd/compile/internal/gc.compileFunctions.func2(0xc000723200, 0xc000927c30, 0x1)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:363 +0x49
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128
goroutine 36 [runnable]:
cmd/compile/internal/ssa.sortvalues.Less(0xc000b1b000, 0x158, 0x2b2,
0xc0006a0d20, 0x32, 0x31, 0xc000965b01)
/usr/local/go/src/cmd/compile/internal/ssa/cse.go:365 +0xb0
sort.insertionSort(0xfde320, 0xc0003459c0, 0x2f, 0x37)
/usr/local/go/src/sort/sort.go:27 +0xc4
sort.quickSort(0xfde320, 0xc0003459c0, 0x2f, 0x37, 0xc)
/usr/local/go/src/sort/sort.go:209 +0x201
sort.quickSort(0xfde320, 0xc0003459c0, 0x2f, 0x46, 0xc)
/usr/local/go/src/sort/sort.go:194 +0xf8
sort.quickSort(0xfde320, 0xc0003459c0, 0x0, 0x100, 0x10)
/usr/local/go/src/sort/sort.go:194 +0xf8
sort.Sort(0xfde320, 0xc0003459c0)
/usr/local/go/src/sort/sort.go:218 +0x79
cmd/compile/internal/ssa.partitionValues(0xc000b1b000, 0x158, 0x2b2,
0xc0006a0d20, 0x8, 0xe20cc0, 0x90)
/usr/local/go/src/cmd/compile/internal/ssa/cse.go:287 +0xab
cmd/compile/internal/ssa.cse(0xc000461b80)
/usr/local/go/src/cmd/compile/internal/ssa/cse.go:49 +0x30e
cmd/compile/internal/ssa.Compile(0xc000461b80)
/usr/local/go/src/cmd/compile/internal/ssa/compile.go:92 +0x994
cmd/compile/internal/gc.buildssa(0xc00029b600, 0x3, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:289 +0xc0e
cmd/compile/internal/gc.compileSSA(0xc00029b600, 0x3)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:298 +0x4d
cmd/compile/internal/gc.compileFunctions.func2(0xc000723200, 0xc000927c30, 0x3)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:363 +0x49
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128
Trace 2
=======
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x21efb2000 pc=0x41f713]
runtime stack:
runtime.throw(0x817c7d, 0x2a)
/usr/local/go/src/runtime/panic.go:774 +0x72
runtime.sigpanic()
/usr/local/go/src/runtime/signal_unix.go:378 +0x47c
runtime.gcDrain(0xc000026170, 0x7)
/usr/local/go/src/runtime/mgcmark.go:954 +0x223
runtime.gcBgMarkWorker.func2()
/usr/local/go/src/runtime/mgc.go:1936 +0x16b
runtime.systemstack(0x0)
/usr/local/go/src/runtime/asm_amd64.s:370 +0x66
runtime.mstart()
/usr/local/go/src/runtime/proc.go:1146
goroutine 34 [GC worker (idle)]:
runtime.systemstack_switch()
/usr/local/go/src/runtime/asm_amd64.s:330 fp=0xc000032f60
sp=0xc000032f58 pc=0x456ba0
runtime.gcBgMarkWorker(0xc000024f00)
/usr/local/go/src/runtime/mgc.go:1900 +0x1bd fp=0xc000032fd8
sp=0xc000032f60 pc=0x41b83d
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1357 +0x1 fp=0xc000032fe0
sp=0xc000032fd8 pc=0x458af1
created by runtime.gcBgMarkStartWorkers
/usr/local/go/src/runtime/mgc.go:1794 +0x77
goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc000196108)
/usr/local/go/src/runtime/sema.go:56 +0x42
sync.(*WaitGroup).Wait(0xc000196100)
/usr/local/go/src/sync/waitgroup.go:130 +0x64
cmd/go/internal/work.(*Builder).Do(0xc0005626e0, 0xc000063680)
/usr/local/go/src/cmd/go/internal/work/exec.go:186 +0x3c5
cmd/go/internal/work.InstallPackages(0xc000010100, 0x4, 0x4, 0xc000681c60, 0x4,
0x4)
/usr/local/go/src/cmd/go/internal/work/build.go:572 +0xb54
cmd/go/internal/work.runInstall(0xadb420, 0xc000010100, 0x4, 0x4)
/usr/local/go/src/cmd/go/internal/work/build.go:483 +0x66
main.main()
/usr/local/go/src/cmd/go/main.go:189 +0x57f
goroutine 6 [syscall]:
os/signal.signal_recv(0x0)
/usr/local/go/src/runtime/sigqueue.go:147 +0x9c
os/signal.loop()
/usr/local/go/src/os/signal/signal_unix.go:23 +0x22
created by os/signal.init.0
/usr/local/go/src/os/signal/signal_unix.go:29 +0x41
goroutine 964 [runnable]:
[328/506]
syscall.Syscall(0x6, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/syscall/asm_unix_amd64.s:19 +0x5
syscall.Close(0xa, 0xc0003cacf0, 0x8)
/usr/local/go/src/syscall/zsyscall_openbsd_amd64.go:403 +0x40
syscall.forkExec(0xc000636780, 0x3b, 0xc0003963c0, 0x13, 0x14, 0xc0003cae10,
0x33, 0xe849865c00010300, 0xc000202700)
/usr/local/go/src/syscall/exec_unix.go:211 +0x404
syscall.StartProcess(...)
/usr/local/go/src/syscall/exec_unix.go:248
os.startProcess(0xc000636780, 0x3b, 0xc0003963c0, 0x13, 0x14, 0xc0003cafa8,
0x0, 0x0, 0x0)
/usr/local/go/src/os/exec_posix.go:51 +0x2b0
os.StartProcess(0xc000636780, 0x3b, 0xc0003963c0, 0x13, 0x14, 0xc0003cafa8,
0x34, 0x0, 0xc0003caf01)
/usr/local/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0004c0160, 0x8bb9241, 0x76cb126371)
/usr/local/go/src/os/exec/exec.go:416 +0x50c
os/exec.(*Cmd).Run(0xc0004c0160, 0x2a12e9d25, 0xae2ba0)
/usr/local/go/src/os/exec/exec.go:338 +0x2b
cmd/go/internal/work.(*Builder).runOut(0xc0005626e0, 0xc000397cc0,
0xc0000163c0, 0x28, 0x0, 0x0, 0x0, 0xc000396140, 0x10, 0x14, ...)
/usr/local/go/src/cmd/go/internal/work/exec.go:1929 +0x5c7
cmd/go/internal/work.gcToolchain.gc(0xc0005626e0, 0xc000397cc0, 0xc0006a5020,
0x23, 0xc0000b2900, 0x47f, 0x8ff, 0x0, 0x0, 0xc0003cb500, ...)
/usr/local/go/src/cmd/go/internal/work/gc.go:143 +0xe9e
cmd/go/internal/work.(*Builder).build(0xc0005626e0, 0xc000397cc0, 0x0, 0x0)
/usr/local/go/src/cmd/go/internal/work/exec.go:665 +0x15c9
cmd/go/internal/work.(*Builder).Do.func2(0xc000397cc0)
/usr/local/go/src/cmd/go/internal/work/exec.go:117 +0x36d
cmd/go/internal/work.(*Builder).Do.func3(0xc000196100, 0xc0005626e0,
0xc00067e620)
/usr/local/go/src/cmd/go/internal/work/exec.go:177 +0x79
created by cmd/go/internal/work.(*Builder).Do
/usr/local/go/src/cmd/go/internal/work/exec.go:164 +0x3a1
goroutine 962 [syscall]:
syscall.Syscall6(0xb, 0x153dd, 0xc0007a6f04, 0x0, 0xc0006ae360, 0x0, 0x0,
0xc0006ae360, 0xc0007a6ed0, 0x10)
/usr/local/go/src/syscall/asm_unix_amd64.s:42 +0x5
syscall.wait4(0x153dd, 0xc0007a6f04, 0x0, 0xc0006ae360, 0x90, 0x7f6940, 0x1)
/usr/local/go/src/syscall/zsyscall_openbsd_amd64.go:34 +0x7b
syscall.Wait4(0x153dd, 0xc0007a6f54, 0x0, 0xc0006ae360, 0x783820, 0x0, 0x446527)
/usr/local/go/src/syscall/syscall_bsd.go:129 +0x51
os.(*Process).wait(0xc0006a5380, 0x83ec70, 0x83ec78, 0x83ec68)
/usr/local/go/src/os/exec_unix.go:38 +0x7b
os.(*Process).Wait(...)
/usr/local/go/src/os/exec.go:125
os/exec.(*Cmd).Wait(0xc00064b080, 0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:501 +0x60
os/exec.(*Cmd).Run(0xc00064b080, 0x26f09653e, 0xae2ba0)
/usr/local/go/src/os/exec/exec.go:341 +0x5c
cmd/go/internal/work.(*Builder).runOut(0xc0005626e0, 0xc000756b40,
0xc000364d50, 0x29, 0x0, 0x0, 0x0, 0xc000380280, 0x25, 0x28, ...)
/usr/local/go/src/cmd/go/internal/work/exec.go:1929 +0x5c7
cmd/go/internal/work.gcToolchain.gc(0xc0005626e0, 0xc000756b40, 0xc0006a5140,
0x23, 0xc0000ac400, 0x3aa, 0x3fd, 0xc0006a4fc0, 0x23, 0xc0007a7501, ...)
/usr/local/go/src/cmd/go/internal/work/gc.go:143 +0xe9e
cmd/go/internal/work.(*Builder).build(0xc0005626e0, 0xc000756b40, 0x0, 0x0)
/usr/local/go/src/cmd/go/internal/work/exec.go:665 +0x15c9
cmd/go/internal/work.(*Builder).Do.func2(0xc000756b40)
/usr/local/go/src/cmd/go/internal/work/exec.go:117 +0x36d
cmd/go/internal/work.(*Builder).Do.func3(0xc000196100, 0xc0005626e0,
0xc00067e620)
/usr/local/go/src/cmd/go/internal/work/exec.go:177 +0x79
created by cmd/go/internal/work.(*Builder).Do
/usr/local/go/src/cmd/go/internal/work/exec.go:164 +0x3a1
goroutine 1088 [IO wait]:
internal/poll.runtime_pollWait(0x2a91da340, 0x72, 0xffffffffffffffff)
/usr/local/go/src/runtime/netpoll.go:184 +0x55
internal/poll.(*pollDesc).wait(0xc00051dd58, 0x72, 0x201, 0x200,
0xffffffffffffffff)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc00051dd40, 0xc0000ec800, 0x200, 0x200, 0x0, 0x0,
0x0)
/usr/local/go/src/internal/poll/fd_unix.go:169 +0x1cf
os.(*File).read(...)
/usr/local/go/src/os/file_unix.go:259
os.(*File).Read(0xc0002225a0, 0xc0000ec800, 0x200, 0x200, 0x7, 0xc0003bd300,
0xc0001066a0)
/usr/local/go/src/os/file.go:116 +0x71
bytes.(*Buffer).ReadFrom(0xc00019baa0, 0x8a9d00, 0xc0002225a0, 0x2a91da910,
0xc00019baa0, 0x1)
/usr/local/go/src/bytes/buffer.go:204 +0xb4
io.copyBuffer(0x8a9640, 0xc00019baa0, 0x8a9d00, 0xc0002225a0, 0x0, 0x0, 0x0,
0x1, 0x1, 0x0)
/usr/local/go/src/io/io.go:388 +0x2ed
io.Copy(...)
/usr/local/go/src/io/io.go:364
os/exec.(*Cmd).writerDescriptor.func1(0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:311 +0x63
os/exec.(*Cmd).Start.func1(0xc00064b080, 0xc000680420)
/usr/local/go/src/os/exec/exec.go:435 +0x27
created by os/exec.(*Cmd).Start
/usr/local/go/src/os/exec/exec.go:434 +0x608
goroutine 1086 [IO wait]:
internal/poll.runtime_pollWait(0x2a91da750, 0x72, 0xffffffffffffffff)
/usr/local/go/src/runtime/netpoll.go:184 +0x55
internal/poll.(*pollDesc).wait(0xc00051cf18, 0x72, 0x201, 0x200,
0xffffffffffffffff)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc00051cf00, 0xc0000ec400, 0x200, 0x200, 0x0, 0x0,
0x0)
/usr/local/go/src/internal/poll/fd_unix.go:169 +0x1cf
os.(*File).read(...)
/usr/local/go/src/os/file_unix.go:259
os.(*File).Read(0xc000222320, 0xc0000ec400, 0x200, 0x200, 0xc000103e90,
0x43e562, 0xc000103ea0)
/usr/local/go/src/os/file.go:116 +0x71
bytes.(*Buffer).ReadFrom(0xc00019b740, 0x8a9d00, 0xc000222320, 0x2a91da910,
0xc00019b740, 0xc000103f01)
/usr/local/go/src/bytes/buffer.go:204 +0xb4
io.copyBuffer(0x8a9640, 0xc00019b740, 0x8a9d00, 0xc000222320, 0x0, 0x0, 0x0,
0x404895, 0xc0005fe960, 0xc000103fb0)
/usr/local/go/src/io/io.go:388 +0x2ed
io.Copy(...)
/usr/local/go/src/io/io.go:364
os/exec.(*Cmd).writerDescriptor.func1(0xc0005fe960, 0xc000103fb0)
/usr/local/go/src/os/exec/exec.go:311 +0x63
os/exec.(*Cmd).Start.func1(0xc0003a2840, 0xc0006801e0)
/usr/local/go/src/os/exec/exec.go:435 +0x27
created by os/exec.(*Cmd).Start
/usr/local/go/src/os/exec/exec.go:434 +0x608
goroutine 965 [syscall]:
syscall.Syscall6(0xb, 0x917c, 0xc0003dcf04, 0x0, 0xc0006ae120, 0x0, 0x0,
0xc0006ae120, 0xc0003dced0, 0x10)
/usr/local/go/src/syscall/asm_unix_amd64.s:42 +0x5
syscall.wait4(0x917c, 0xc0003dcf04, 0x0, 0xc0006ae120, 0x90, 0x7f6940, 0x1)
/usr/local/go/src/syscall/zsyscall_openbsd_amd64.go:34 +0x7b
syscall.Wait4(0x917c, 0xc0003dcf54, 0x0, 0xc0006ae120, 0x783820, 0x0,
0x1000000446527)
/usr/local/go/src/syscall/syscall_bsd.go:129 +0x51
os.(*Process).wait(0xc0006a4ea0, 0x83ec70, 0x83ec78, 0x83ec68)
/usr/local/go/src/os/exec_unix.go:38 +0x7b
os.(*Process).Wait(...)
/usr/local/go/src/os/exec.go:125
os/exec.(*Cmd).Wait(0xc0003a2840, 0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:501 +0x60
os/exec.(*Cmd).Run(0xc0003a2840, 0x26c47eee8, 0xae2ba0)
/usr/local/go/src/os/exec/exec.go:341 +0x5c
cmd/go/internal/work.(*Builder).runOut(0xc0005626e0, 0xc00073f680,
0xc00021e000, 0x28, 0x0, 0x0, 0x0, 0xc000380000, 0x16, 0x28, ...)
/usr/local/go/src/cmd/go/internal/work/exec.go:1929 +0x5c7
cmd/go/internal/work.gcToolchain.gc(0xc0005626e0, 0xc00073f680, 0xc0006a4c00,
0x23, 0xc000130000, 0xa0a, 0x11eb, 0x0, 0x0, 0xc0003dd500, ...)
/usr/local/go/src/cmd/go/internal/work/gc.go:143 +0xe9e
cmd/go/internal/work.(*Builder).build(0xc0005626e0, 0xc00073f680, 0x0, 0x0)
/usr/local/go/src/cmd/go/internal/work/exec.go:665 +0x15c9
cmd/go/internal/work.(*Builder).Do.func2(0xc00073f680)
/usr/local/go/src/cmd/go/internal/work/exec.go:117 +0x36d
cmd/go/internal/work.(*Builder).Do.func3(0xc000196100, 0xc0005626e0,
0xc00067e620)
/usr/local/go/src/cmd/go/internal/work/exec.go:177 +0x79
created by cmd/go/internal/work.(*Builder).Do
/usr/local/go/src/cmd/go/internal/work/exec.go:164 +0x3a1
goroutine 963 [syscall]:
[190/506]
syscall.Syscall6(0xb, 0x191f, 0xc0001d2f04, 0x0, 0xc000160120, 0x0, 0x0,
0xc000160120, 0xc0001d2ed0, 0x10)
/usr/local/go/src/syscall/asm_unix_amd64.s:42 +0x5
syscall.wait4(0x191f, 0xc0001d2f04, 0x0, 0xc000160120, 0x90, 0x7f6940, 0x1)
/usr/local/go/src/syscall/zsyscall_openbsd_amd64.go:34 +0x7b
syscall.Wait4(0x191f, 0xc0001d2f54, 0x0, 0xc000160120, 0x783820, 0x0,
0x1000000446527)
/usr/local/go/src/syscall/syscall_bsd.go:129 +0x51
os.(*Process).wait(0xc00040ccc0, 0x83ec70, 0x83ec78, 0x83ec68)
/usr/local/go/src/os/exec_unix.go:38 +0x7b
os.(*Process).Wait(...)
/usr/local/go/src/os/exec.go:125
os/exec.(*Cmd).Wait(0xc00064af20, 0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:501 +0x60
os/exec.(*Cmd).Run(0xc00064af20, 0x277ff653f, 0xae2ba0)
/usr/local/go/src/os/exec/exec.go:341 +0x5c
cmd/go/internal/work.(*Builder).runOut(0xc0005626e0, 0xc000756f00,
0xc000189c40, 0x3c, 0x0, 0x0, 0x0, 0xc000380000, 0x1a, 0x28, ...)
/usr/local/go/src/cmd/go/internal/work/exec.go:1929 +0x5c7
cmd/go/internal/work.gcToolchain.gc(0xc0005626e0, 0xc000756f00, 0xc00040c900,
0x23, 0xc0000ac400, 0x2af, 0x3f7, 0x0, 0x0, 0xc0001d3500, ...)
/usr/local/go/src/cmd/go/internal/work/gc.go:143 +0xe9e
cmd/go/internal/work.(*Builder).build(0xc0005626e0, 0xc000756f00, 0x0, 0x0)
/usr/local/go/src/cmd/go/internal/work/exec.go:665 +0x15c9
cmd/go/internal/work.(*Builder).Do.func2(0xc000756f00)
/usr/local/go/src/cmd/go/internal/work/exec.go:117 +0x36d
cmd/go/internal/work.(*Builder).Do.func3(0xc000196100, 0xc0005626e0,
0xc00067e620)
/usr/local/go/src/cmd/go/internal/work/exec.go:177 +0x79
created by cmd/go/internal/work.(*Builder).Do
/usr/local/go/src/cmd/go/internal/work/exec.go:164 +0x3a1
goroutine 1070 [IO wait]:
internal/poll.runtime_pollWait(0x2a91da1a0, 0x72, 0xffffffffffffffff)
/usr/local/go/src/runtime/netpoll.go:184 +0x55
internal/poll.(*pollDesc).wait(0xc000490978, 0x72, 0x201, 0x200,
0xffffffffffffffff)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc000490960, 0xc0000ec200, 0x200, 0x200, 0x0, 0x0,
0x0)
/usr/local/go/src/internal/poll/fd_unix.go:169 +0x1cf
os.(*File).read(...)
/usr/local/go/src/os/file_unix.go:259
os.(*File).Read(0xc00000e478, 0xc0000ec200, 0x200, 0x200, 0x0, 0x0,
0xc0001266a0)
/usr/local/go/src/os/file.go:116 +0x71
bytes.(*Buffer).ReadFrom(0xc00042c120, 0x8a9d00, 0xc00000e478, 0x2a91da910,
0xc00042c120, 0x1)
/usr/local/go/src/bytes/buffer.go:204 +0xb4
io.copyBuffer(0x8a9640, 0xc00042c120, 0x8a9d00, 0xc00000e478, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0)
/usr/local/go/src/io/io.go:388 +0x2ed
io.Copy(...)
/usr/local/go/src/io/io.go:364
os/exec.(*Cmd).writerDescriptor.func1(0x0, 0x0)
/usr/local/go/src/os/exec/exec.go:311 +0x63
os/exec.(*Cmd).Start.func1(0xc00064af20, 0xc0003b0180)
/usr/local/go/src/os/exec/exec.go:435 +0x27
created by os/exec.(*Cmd).Start
/usr/local/go/src/os/exec/exec.go:434 +0x608
Trace 3
=======
unexpected fault address 0xae3048
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x2 addr=0xae3048 pc=0xca576f]
goroutine 30 [running]:
runtime.throw(0xe30ed5, 0x5)
/usr/local/go/src/runtime/panic.go:774 +0x72 fp=0xc003784c80
sp=0xc003784c50 pc=0x42d2c2
runtime.sigpanic()
/usr/local/go/src/runtime/signal_unix.go:401 +0x3de fp=0xc003784cb0
sp=0xc003784c80 pc=0x4420ae
cmd/compile/internal/gc.(*state).pushLine(0xc003874000, 0x1d1c06000000008)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:527 +0x3f
fp=0xc003784d08 sp=0xc003784cb0 pc=0xca576f
cmd/compile/internal/gc.buildssa(0xc000c446e0, 0x2, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:186 +0xe6
fp=0xc003784eb0 sp=0xc003784d08 pc=0xca3136
cmd/compile/internal/gc.compileSSA(0xc000c446e0, 0x2)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:298 +0x4d
fp=0xc003784f98 sp=0xc003784eb0 pc=0xc6e6ad
cmd/compile/internal/gc.compileFunctions.func2(0xc00377c4e0, 0xc0037741d0, 0x2)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:363 +0x49
fp=0xc003784fc8 sp=0xc003784f98 pc=0xd309b9
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1357 +0x1 fp=0xc003784fd0
sp=0xc003784fc8 pc=0x45ad51
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128
goroutine 1 [chan send]:
cmd/compile/internal/gc.compileFunctions()
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:369 +0x17c
cmd/compile/internal/gc.Main(0xe57328)
/usr/local/go/src/cmd/compile/internal/gc/main.go:695 +0x3241
main.main()
/usr/local/go/src/cmd/compile/main.go:51 +0xac
goroutine 28 [runnable]:
cmd/compile/internal/gc.compileFunctions.func2(0xc00377c4e0, 0xc0037741d0, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128
goroutine 29 [runnable]:
cmd/compile/internal/gc.(*state).pushLine(0xc00387e000, 0x19705000000002)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:518 +0x1ab
cmd/compile/internal/gc.buildssa(0xc0036671e0, 0x1, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:186 +0xe6
cmd/compile/internal/gc.compileSSA(0xc0036671e0, 0x1)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:298 +0x4d
cmd/compile/internal/gc.compileFunctions.func2(0xc00377c4e0, 0xc0037741d0, 0x1)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:363 +0x49
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128
goroutine 31 [runnable]:
cmd/compile/internal/gc.(*state).call(0xc003745930, 0xc00093b280, 0xc001b46900,
0x100)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:3930 +0x3c2
cmd/compile/internal/gc.(*state).addr(0xc003745930, 0xc00093b280, 0xc001b46900,
0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:4047 +0x738
cmd/compile/internal/gc.(*state).stmt(0xc003745930, 0xc002766300)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:1018 +0x431
cmd/compile/internal/gc.(*state).stmtList(0xc003745930, 0xc002025000)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:818 +0x58
cmd/compile/internal/gc.(*state).stmt(0xc003745930, 0xc00093ac80)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:1082 +0x1957
cmd/compile/internal/gc.(*state).stmtList(0xc003745930, 0xc002025080)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:818 +0x58
cmd/compile/internal/gc.buildssa(0xc000928160, 0x3, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:271 +0xb6f
cmd/compile/internal/gc.compileSSA(0xc000928160, 0x3)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:298 +0x4d
cmd/compile/internal/gc.compileFunctions.func2(0xc00377c4e0, 0xc0037741d0, 0x3)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:363 +0x49
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128
# cmd/vendor/github.com/google/pprof/profile
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x24c124878 pc=0x45c213]
runtime stack:
runtime.throw(0xe4c112, 0x2a)
/usr/local/go/src/runtime/panic.go:774 +0x72
runtime.sigpanic()
/usr/local/go/src/runtime/signal_unix.go:378 +0x47c
runtime.memmove(0xc001cb7d00, 0xc001babd00, 0x300)
/usr/local/go/src/runtime/memmove_amd64.s:264 +0x313
runtime.copystack(0xc000fa3980, 0x8000, 0x200000001)
/usr/local/go/src/runtime/stack.go:867 +0x13f
runtime.newstack()
/usr/local/go/src/runtime/stack.go:1055 +0x2fb
runtime.morestack()
/usr/local/go/src/runtime/asm_amd64.s:449 +0x8f
goroutine 50 [copystack]:
cmd/compile/internal/ssa.Compile(0xc001e35a20)
/usr/local/go/src/cmd/compile/internal/ssa/compile.go:29 +0x1590
fp=0xc001babd08 sp=0xc001babd00 pc=0x604bc0
cmd/compile/internal/gc.buildssa(0xc001ebcdc0, 0x2, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:289 +0xc0e
fp=0xc001babeb0 sp=0xc001babd08 pc=0xca3c5e
cmd/compile/internal/gc.compileSSA(0xc001ebcdc0, 0x2)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:298 +0x4d
fp=0xc001babf98 sp=0xc001babeb0 pc=0xc6e6ad
cmd/compile/internal/gc.compileFunctions.func2(0xc001ade9c0, 0xc001aa48a0, 0x2)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:363 +0x49
fp=0xc001babfc8 sp=0xc001babf98 pc=0xd309b9
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1357 +0x1 fp=0xc001babfd0
sp=0xc001babfc8 pc=0x45ad51
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128
goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc001aa48a8)
/usr/local/go/src/runtime/sema.go:56 +0x42
sync.(*WaitGroup).Wait(0xc001aa48a0)
/usr/local/go/src/sync/waitgroup.go:130 +0x64
cmd/compile/internal/gc.compileFunctions()
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:373 +0x1ce
cmd/compile/internal/gc.dumpLinkerObj(0xc000d91b10)
/usr/local/go/src/cmd/compile/internal/gc/obj.go:147 +0xea
cmd/compile/internal/gc.dumpobj1(0x7f7ffffc852f, 0x23, 0x3)
/usr/local/go/src/cmd/compile/internal/gc/obj.go:72 +0x122
cmd/compile/internal/gc.dumpobj()
/usr/local/go/src/cmd/compile/internal/gc/obj.go:48 +0x50
cmd/compile/internal/gc.Main(0xe57328)
/usr/local/go/src/cmd/compile/internal/gc/main.go:730 +0x3447
main.main()
/usr/local/go/src/cmd/compile/main.go:51 +0xac
goroutine 51 [runnable]:
cmd/compile/internal/gc.(*state).stmt(0xc0010b89c0, 0xc0011ad980)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:823 +0x43c4
cmd/compile/internal/gc.(*state).stmtList(0xc0010b89c0, 0xc0019745e0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:818 +0x58
cmd/compile/internal/gc.buildssa(0xc001ebd4a0, 0x3, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:271 +0xb6f
cmd/compile/internal/gc.compileSSA(0xc001ebd4a0, 0x3)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:298 +0x4d
cmd/compile/internal/gc.compileFunctions.func2(0xc001ade9c0, 0xc001aa48a0, 0x3)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:363 +0x49
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128
goroutine 49 [runnable]:
cmd/compile/internal/ssa.rewriteValuegeneric_OpLoad_20(0xc0009b1a68,
0xffffffffffffff00)
/usr/local/go/src/cmd/compile/internal/ssa/rewritegeneric.go:30030
+0x14c4
cmd/compile/internal/ssa.rewriteValuegeneric(0xc0009b1a68, 0xc0009e7b00)
/usr/local/go/src/cmd/compile/internal/ssa/rewritegeneric.go:211 +0x235c
cmd/compile/internal/ssa.applyRewrite(0xc001049600, 0xe57a40, 0xe57ab8)
/usr/local/go/src/cmd/compile/internal/ssa/rewrite.go:80 +0x356
cmd/compile/internal/ssa.opt(0xc001049600)
/usr/local/go/src/cmd/compile/internal/ssa/opt.go:9 +0x43
cmd/compile/internal/ssa.Compile(0xc001049600)
/usr/local/go/src/cmd/compile/internal/ssa/compile.go:92 +0x994
cmd/compile/internal/gc.buildssa(0xc001ebcc60, 0x1, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:289 +0xc0e
cmd/compile/internal/gc.compileSSA(0xc001ebcc60, 0x1)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:298 +0x4d
cmd/compile/internal/gc.compileFunctions.func2(0xc001ade9c0, 0xc001aa48a0, 0x1)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:363 +0x49
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128
goroutine 16 [runnable]:
cmd/compile/internal/ssa.(*HTMLWriter).WriteFunc(0x0, 0xe30ff2, 0x5, 0xe30ff2,
0x5, 0xc001e2e9a0)
/usr/local/go/src/cmd/compile/internal/ssa/html.go:638 +0xc8
cmd/compile/internal/ssa.Compile(0xc001e2e9a0)
/usr/local/go/src/cmd/compile/internal/ssa/compile.go:57 +0x154
cmd/compile/internal/gc.buildssa(0xc001ebcb00, 0x0, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/ssa.go:289 +0xc0e
cmd/compile/internal/gc.compileSSA(0xc001ebcb00, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:298 +0x4d
cmd/compile/internal/gc.compileFunctions.func2(0xc001ade9c0, 0xc001aa48a0, 0x0)
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:363 +0x49
created by cmd/compile/internal/gc.compileFunctions
/usr/local/go/src/cmd/compile/internal/gc/pgen.go:361 +0x128