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

Reply via email to