Go processes exhibit memory corruption when concurrently forking on Ryzen

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Go processes exhibit memory corruption when concurrently forking on Ryzen

Josh Rickmar
>Synopsis: Ryzen CPUs show Go mem corruption during concurrent forking
>Category: kernel (?)
>Environment:
        System      : OpenBSD 6.8
        Details     : OpenBSD 6.8-beta (GENERIC.MP) #0: Mon Sep 14 09:43:05 EDT 2020
                         [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP

        Architecture: OpenBSD.amd64
        Machine     : amd64
>Description:

Go processes appear to show memory corruption when concurrently
fork+exec'ing, but as far as I am can tell, this only occurs on Ryzen
CPUs, making me believe it is either some kind of kernel-level issue,
or a Ryzen errata that isn't being properly dealt with.  This appears
to affect all Ryzen CPUs, from first generation laptop chips all the
way up to 3000 series desktop chips.

This was originally reported by me on the Go issue tracker, when I
discovered crashes running the Go build tests, but at the time I
didn't have the data to believe this was isolated to Ryzen systems.

https://github.com/golang/go/issues/34988

I have been testing today with a kernel built at git commit
594937660a36a61c991da10e4d9f91c8e1cdb9d0 with the amd64 cr2 fix
manually applied on top (it hadn't hit CVS nor the Git mirror then),
and am still seeing these crashes.  The crash traces are not
predictable and can appear as anything from a variety of Go runtime
assertions to segfaults.

>How-To-Repeat:

On a Ryzen system, install 'go' from packages, save this minimal repro
to forkexec.go, and build+run it with `go run forkexec.go`:


package main

import (
        "os/exec"
)

func main() {
        sem := make(chan struct{}, 100)
        for {
                sem <- struct{}{}
                go func() {
                        err := exec.Command("/usr/bin/true").Run()
                        if err != nil {
                                panic(err)
                        }
                        <-sem
                }()
        }
}


This program will concurrently execute up to 100 goroutines which
spawn a `true` process, and it will eventually crash and print
stacktraces of all goroutines to stderr.  Ryzen CPUs should have many
CPU cores available, but if running this under vmm, you may need to
also set the GOMAXPROCS environment variable to something over 1 to
reproduce (untested).

The crash output varies widely across different runs.  Many crash
outputs can be seen in linked in the GitHub issue above.

>Fix:

Unknown.

dmesg:
OpenBSD 6.8-beta (GENERIC.MP) #0: Mon Sep 14 09:43:05 EDT 2020
    [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 16762552320 (15986MB)
avail mem = 16239484928 (15487MB)
random: good seed from bootblocks
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 3.1 @ 0x986eb000 (62 entries)
bios0: vendor LENOVO version "R0UET77W (1.57 )" date 04/07/2020
bios0: LENOVO 20KUCTO1WW
acpi0 at bios0: ACPI 5.0
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP SSDT SSDT CRAT CDIT SSDT TPM2 UEFI MSDM BATB HPET APIC MCFG SBST WSMT VFCT IVRS FPDT SSDT SSDT SSDT BGRT UEFI SSDT
acpi0: wakeup devices GPP0(S3) GPP1(S3) GPP2(S3) GPP3(S3) GPP4(S3) GPP5(S3) GPP6(S3) GP17(S3) XHC0(S3) XHC1(S3) GP18(S3) LID_(S3) SLPB(S3)
acpitimer0 at acpi0: 3579545 Hz, 32 bits
acpihpet0 at acpi0: 14318180 Hz
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx, 1996.62 MHz, 17-11-00
cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA,IBPB,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu0: 64KB 64b/line 4-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache, 4MB 64b/line 16-way L3 cache
cpu0: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu0: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges
cpu0: apic clock running at 24MHz
cpu0: mwait min=64, max=64, C-substates=1.1, IBE
cpu1 at mainbus0: apid 1 (application processor)
cpu1: AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx, 1996.26 MHz, 17-11-00
cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA,IBPB,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu1: 64KB 64b/line 4-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache, 4MB 64b/line 16-way L3 cache
cpu1: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu1: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu1: disabling user TSC (skew=-7930001578)
cpu1: smt 1, core 0, package 0
cpu2 at mainbus0: apid 2 (application processor)
cpu2: AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx, 1996.26 MHz, 17-11-00
cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA,IBPB,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu2: 64KB 64b/line 4-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache, 4MB 64b/line 16-way L3 cache
cpu2: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu2: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu2: disabling user TSC (skew=-7930001538)
cpu2: smt 0, core 1, package 0
cpu3 at mainbus0: apid 3 (application processor)
cpu3: AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx, 1996.27 MHz, 17-11-00
cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA,IBPB,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu3: 64KB 64b/line 4-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache, 4MB 64b/line 16-way L3 cache
cpu3: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu3: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu3: disabling user TSC (skew=-7930001588)
cpu3: smt 1, core 1, package 0
cpu4 at mainbus0: apid 4 (application processor)
cpu4: AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx, 1996.26 MHz, 17-11-00
cpu4: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA,IBPB,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu4: 64KB 64b/line 4-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache, 4MB 64b/line 16-way L3 cache
cpu4: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu4: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu4: disabling user TSC (skew=-7930001518)
cpu4: smt 0, core 2, package 0
cpu5 at mainbus0: apid 5 (application processor)
cpu5: AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx, 1996.26 MHz, 17-11-00
cpu5: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA,IBPB,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu5: 64KB 64b/line 4-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache, 4MB 64b/line 16-way L3 cache
cpu5: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu5: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu5: disabling user TSC (skew=-7930001588)
cpu5: smt 1, core 2, package 0
cpu6 at mainbus0: apid 6 (application processor)
cpu6: AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx, 1996.26 MHz, 17-11-00
cpu6: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA,IBPB,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu6: 64KB 64b/line 4-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache, 4MB 64b/line 16-way L3 cache
cpu6: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu6: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu6: disabling user TSC (skew=-7930001528)
cpu6: smt 0, core 3, package 0
cpu7 at mainbus0: apid 7 (application processor)
cpu7: AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx, 1996.26 MHz, 17-11-00
cpu7: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA,IBPB,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu7: 64KB 64b/line 4-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache, 4MB 64b/line 16-way L3 cache
cpu7: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu7: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative
cpu7: disabling user TSC (skew=-7930001588)
cpu7: smt 1, core 3, package 0
ioapic0 at mainbus0: apid 32 pa 0xfec00000, version 21, 24 pins, can't remap
ioapic1 at mainbus0: apid 33 pa 0xfec01000, version 21, 32 pins, can't remap
acpimcfg0 at acpi0
acpimcfg0: addr 0xf8000000, bus 0-63
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus 1 (GPP0)
acpiprt2 at acpi0: bus 2 (GPP1)
acpiprt3 at acpi0: bus 3 (GPP2)
acpiprt4 at acpi0: bus -1 (GPP3)
acpiprt5 at acpi0: bus -1 (GPP4)
acpiprt6 at acpi0: bus 4 (GPP5)
acpiprt7 at acpi0: bus -1 (GPP6)
acpiprt8 at acpi0: bus 5 (GP17)
acpiprt9 at acpi0: bus 6 (GP18)
acpiec0 at acpi0
acpibtn0 at acpi0: PWRB
acpipci0 at acpi0 PCI0: 0x00000010 0x00000011 0x00000000
extent `acpipci0 pcibus' (0x0 - 0xff), flags=0
extent `acpipci0 pciio' (0x0 - 0xffffffff), flags=0
     0xcf8 - 0xcff
     0x10000 - 0xffffffff
extent `acpipci0 pcimem' (0x0 - 0xffffffffffffffff), flags=0
     0x0 - 0x9ffff
     0xc0000 - 0xafffffff
     0xf8000000 - 0xfbffffff
     0xfe000000 - 0xffffffffffffffff
acpicmos0 at acpi0
acpibat0 at acpi0: BAT0 model "01AV448" serial  2798 type LiP oem "Celxpert"
acpiac0 at acpi0: AC unit online
acpithinkpad0 at acpi0: version 2.0
"SMB0001" at acpi0 not configured
acpibtn1 at acpi0: LID_
acpibtn2 at acpi0: SLPB
"PNP0C14" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"STM7304" at acpi0 not configured
"USBC000" at acpi0 not configured
acpicpu0 at acpi0: C2(0@400 io@0x414), C1(0@1 mwait), PSS
acpicpu1 at acpi0: C2(0@400 io@0x414), C1(0@1 mwait), PSS
acpicpu2 at acpi0: C2(0@400 io@0x414), C1(0@1 mwait), PSS
acpicpu3 at acpi0: C2(0@400 io@0x414), C1(0@1 mwait), PSS
acpicpu4 at acpi0: C2(0@400 io@0x414), C1(0@1 mwait), PSS
acpicpu5 at acpi0: C2(0@400 io@0x414), C1(0@1 mwait), PSS
acpicpu6 at acpi0: C2(0@400 io@0x414), C1(0@1 mwait), PSS
acpicpu7 at acpi0: C2(0@400 io@0x414), C1(0@1 mwait), PSS
acpipwrres0 at acpi0: P0ST, resource for SATA
acpipwrres1 at acpi0: P3ST, resource for SATA
acpivideo0 at acpi0: VGA_
acpivout0 at acpivideo0: LCD_
cpu0: 1996 MHz: speeds: 2000 1700 1600 MHz
pci0 at mainbus0 bus 0
ksmn0 at pci0 dev 0 function 0 "AMD 17h/1xh Root Complex" rev 0x00
"AMD 17h/1xh IOMMU" rev 0x00 at pci0 dev 0 function 2 not configured
pchb0 at pci0 dev 1 function 0 "AMD 17h PCIE" rev 0x00
ppb0 at pci0 dev 1 function 1 "AMD 17h/1xh PCIE" rev 0x00: msi
pci1 at ppb0 bus 1
ppb1 at pci0 dev 1 function 2 "AMD 17h/1xh PCIE" rev 0x00: msi
pci2 at ppb1 bus 2
re0 at pci2 dev 0 function 0 "Realtek 8168" rev 0x10: RTL8168GU/8111GU (0x5080), msi, address e8:6a:64:f0:f8:14
rgephy0 at re0 phy 7: RTL8251 PHY, rev. 0
ppb2 at pci0 dev 1 function 3 "AMD 17h/1xh PCIE" rev 0x00: msi
pci3 at ppb2 bus 3
sdhc0 at pci3 dev 0 function 0 "O2 Micro 0Z8621 SD/MMC" rev 0x01: apic 33 int 8
sdhc0: SDHC 4.0, 50 MHz base clock
sdmmc0 at sdhc0: 4-bit, sd high-speed, mmc high-speed, ddr52, dma
ppb3 at pci0 dev 1 function 6 "AMD 17h/1xh PCIE" rev 0x00: msi
pci4 at ppb3 bus 4
iwm0 at pci4 dev 0 function 0 "Intel Dual Band Wireless-AC 8265" rev 0x78, msi
pchb1 at pci0 dev 8 function 0 "AMD 17h PCIE" rev 0x00
ppb4 at pci0 dev 8 function 1 "AMD 17h/1xh PCIE" rev 0x00
pci5 at ppb4 bus 5
amdgpu0 at pci5 dev 0 function 0 "ATI Radeon Vega" rev 0xc4
drm0 at amdgpu0
amdgpu0: msi
azalia0 at pci5 dev 0 function 1 "ATI Radeon Vega HD Audio" rev 0x00: msi
azalia0: no supported codecs
ccp0 at pci5 dev 0 function 2 "AMD 17h/1xh Crypto" rev 0x00
xhci0 at pci5 dev 0 function 3 "AMD 17h/1xh xHCI" rev 0x00: msi, xHCI 1.10
usb0 at xhci0: USB revision 3.0
uhub0 at usb0 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 addr 1
xhci1 at pci5 dev 0 function 4 "AMD 17h/1xh xHCI" rev 0x00: msi, xHCI 1.10
usb1 at xhci1: USB revision 3.0
uhub1 at usb1 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 addr 1
azalia1 at pci5 dev 0 function 6 "AMD 17h/1xh HD Audio" rev 0x00: apic 33 int 30
azalia1: codecs: Conexant/0x5111
audio0 at azalia1
ppb5 at pci0 dev 8 function 2 "AMD 17h/1xh PCIE" rev 0x00
pci6 at ppb5 bus 6
ahci0 at pci6 dev 0 function 0 "AMD FCH AHCI" rev 0x61: msi, AHCI 1.3.1
ahci0: port 0: 6.0Gb/s
scsibus1 at ahci0: 32 targets
sd0 at scsibus1 targ 0 lun 0: <ATA, CT500MX500SSD1, M3CR> naa.500a0751e13ebe2f
sd0: 476940MB, 512 bytes/sector, 976773168 sectors, thin
piixpm0 at pci0 dev 20 function 0 "AMD FCH SMBus" rev 0x61: SMI
iic0 at piixpm0
spdmem0 at iic0 addr 0x50: 8GB DDR4 SDRAM PC4-19200 SO-DIMM
spdmem1 at iic0 addr 0x52: 8GB DDR4 SDRAM PC4-19200 SO-DIMM
iic1 at piixpm0
pcib0 at pci0 dev 20 function 3 "AMD FCH LPC" rev 0x51
pchb2 at pci0 dev 24 function 0 "AMD 17h/1xh Data Fabric" rev 0x00
pchb3 at pci0 dev 24 function 1 "AMD 17h/1xh Data Fabric" rev 0x00
pchb4 at pci0 dev 24 function 2 "AMD 17h/1xh Data Fabric" rev 0x00
pchb5 at pci0 dev 24 function 3 "AMD 17h/1xh Data Fabric" rev 0x00
pchb6 at pci0 dev 24 function 4 "AMD 17h/1xh Data Fabric" rev 0x00
pchb7 at pci0 dev 24 function 5 "AMD 17h/1xh Data Fabric" rev 0x00
pchb8 at pci0 dev 24 function 6 "AMD 17h/1xh Data Fabric" rev 0x00
pchb9 at pci0 dev 24 function 7 "AMD 17h/1xh Data Fabric" rev 0x00
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard
pms0 at pckbc0 (aux slot)
wsmouse0 at pms0 mux 0
wsmouse1 at pms0 mux 0
pms0: Synaptics clickpad, firmware 8.16, 0x1e2b1 0x940300 0x373740 0xf020a3 0x12e800
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
vmm0 at mainbus0: SVM/RVI
efifb at mainbus0 not configured
uvideo0 at uhub1 port 2 configuration 1 interface 0 "Azurewave Integrated Camera" rev 2.01/17.11 addr 2
video0 at uvideo0
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
root on sd0a (3a85b6926424009b.a) swap on sd0b dump on sd0b
iwm0: hw rev 0x230, fw ver 34.0.1, address a0:51:0b:ed:56:de
initializing kernel modesetting (RAVEN 0x1002:0x15DD 0x17AA:0x506F 0xC4).
amdgpu0: 1920x1080, 32bpp
wsdisplay0 at amdgpu0 mux 1: console (std, vt100 emulation), using wskbd0
wsdisplay0: screen 1-5 added (std, vt100 emulation)

usbdevs:
Controller /dev/usb0:
addr 01: 1022:0000 AMD, xHCI root hub
         super speed, self powered, config 1, rev 1.00
         driver: uhub0
Controller /dev/usb1:
addr 01: 1022:0000 AMD, xHCI root hub
         super speed, self powered, config 1, rev 1.00
         driver: uhub1
addr 02: 13d3:56a6 Azurewave, Integrated Camera
         high speed, power 500 mA, config 1, rev 17.11, iSerial 0001
         driver: uvideo0

Reply | Threaded
Open this post in threaded view
|

Re: Go processes exhibit memory corruption when concurrently forking on Ryzen

Mark Kettenis
> From: Josh Rickmar <[hidden email]>
> Date: Mon, 14 Sep 2020 22:48:18 +0000
>
> >Synopsis: Ryzen CPUs show Go mem corruption during concurrent forking
> >Category: kernel (?)
> >Environment:
> System      : OpenBSD 6.8
> Details     : OpenBSD 6.8-beta (GENERIC.MP) #0: Mon Sep 14 09:43:05 EDT 2020
> [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
>
> Architecture: OpenBSD.amd64
> Machine     : amd64
> >Description:
>
> Go processes appear to show memory corruption when concurrently
> fork+exec'ing, but as far as I am can tell, this only occurs on Ryzen
> CPUs, making me believe it is either some kind of kernel-level issue,
> or a Ryzen errata that isn't being properly dealt with.  This appears
> to affect all Ryzen CPUs, from first generation laptop chips all the
> way up to 3000 series desktop chips.
>
> This was originally reported by me on the Go issue tracker, when I
> discovered crashes running the Go build tests, but at the time I
> didn't have the data to believe this was isolated to Ryzen systems.
>
> https://github.com/golang/go/issues/34988
>
> I have been testing today with a kernel built at git commit
> 594937660a36a61c991da10e4d9f91c8e1cdb9d0 with the amd64 cr2 fix
> manually applied on top (it hadn't hit CVS nor the Git mirror then),
> and am still seeing these crashes.  The crash traces are not
> predictable and can appear as anything from a variety of Go runtime
> assertions to segfaults.
>
> >How-To-Repeat:
>
> On a Ryzen system, install 'go' from packages, save this minimal repro
> to forkexec.go, and build+run it with `go run forkexec.go`:
>
>
> package main
>
> import (
>         "os/exec"
> )
>
> func main() {
>         sem := make(chan struct{}, 100)
>         for {
>                 sem <- struct{}{}
>                 go func() {
>                         err := exec.Command("/usr/bin/true").Run()
>                         if err != nil {
>                                 panic(err)
>                         }
>                         <-sem
>                 }()
>         }
> }
>
>
> This program will concurrently execute up to 100 goroutines which
> spawn a `true` process, and it will eventually crash and print
> stacktraces of all goroutines to stderr.  Ryzen CPUs should have many
> CPU cores available, but if running this under vmm, you may need to
> also set the GOMAXPROCS environment variable to something over 1 to
> reproduce (untested).
>
> The crash output varies widely across different runs.  Many crash
> outputs can be seen in linked in the GitHub issue above.

I may actually have fixed that today.  Please try again with tomorrows
snapshot.

Reply | Threaded
Open this post in threaded view
|

Re: Go processes exhibit memory corruption when concurrently forking on Ryzen

Josh Rickmar
In reply to this post by Josh Rickmar
From: Mark Kettenis
> I may actually have fixed that today.  Please try again with tomorrows
> snapshot.

I had been testing with a kernel compiled with your patch to tech@ here:

https://marc.info/?l=openbsd-tech&m=160008279223088&w=2

hopeful that it would solve this issue, but after running this repro
program for a while, the crashes still occurred (and subsequent runs
tend to hit it far faster, fwiw).

Reply | Threaded
Open this post in threaded view
|

Re: Go processes exhibit memory corruption when concurrently forking on Ryzen

Josh Rickmar
In reply to this post by Mark Kettenis
From: Mark Kettenis
> I may actually have fixed that today.  Please try again with tomorrows
> snapshot.

Grabbed today's snapshot just to be complete:

$ dmesg | head -2
OpenBSD 6.8-beta (GENERIC.MP) #69: Tue Sep 15 12:34:41 MDT 2020
    [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP

and as I expected these crashes still occur.  Ian Lance Taylor (Go
developer) believes that the child process is somehow writing to the
parent's memory.

Here's a crash caught using the latest snapshot:

fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x270 pc=0x409f09]

goroutine 193441 [running]:
runtime.throw(0x4acb66, 0x2a)
        /home/jrick/src/go/src/runtime/panic.go:1116 +0x72 fp=0xc000436c60 sp=0xc000436c30 pc=0x42f812
runtime.sigpanic()
        /home/jrick/src/go/src/runtime/signal_unix.go:704 +0x48c fp=0xc000436c90 sp=0xc000436c60 pc=0x444d4c
runtime.unlock2(0x52c420)
        /home/jrick/src/go/src/runtime/lock_sema.go:115 +0x89 fp=0xc000436cb8 sp=0xc000436c90 pc=0x409f09
runtime.unlockWithRank(...)
        /home/jrick/src/go/src/runtime/lockrank_off.go:37
runtime.unlock(...)
        /home/jrick/src/go/src/runtime/lock_sema.go:97
runtime.(*pollCache).free(0x52c420, 0x2f1cbc348)
        /home/jrick/src/go/src/runtime/netpoll.go:186 +0x4d fp=0xc000436cd0 sp=0xc000436cb8 pc=0x42ba0d
internal/poll.runtime_pollClose(0x2f1cbc348)
        /home/jrick/src/go/src/runtime/netpoll.go:179 +0x65 fp=0xc000436cf0 sp=0xc000436cd0 pc=0x45a9c5
internal/poll.(*pollDesc).close(...)
        /home/jrick/src/go/src/internal/poll/fd_poll_runtime.go:55
internal/poll.(*FD).destroy(0xc000166b40, 0x2f1cbc301, 0x0)
        /home/jrick/src/go/src/internal/poll/fd_unix.go:76 +0x98 fp=0xc000436d28 sp=0xc000436cf0 pc=0x47a438
internal/poll.(*FD).decref(0xc000166b40, 0x1, 0x3)
        /home/jrick/src/go/src/internal/poll/fd_mutex.go:213 +0x45 fp=0xc000436d50 sp=0xc000436d28 pc=0x479da5
internal/poll.(*FD).Close(0xc000166b40, 0x0, 0xc0003f5200)
        /home/jrick/src/go/src/internal/poll/fd_unix.go:99 +0x4f fp=0xc000436d88 sp=0xc000436d50 pc=0x47a4af
os.(*file).close(0xc000166b40, 0x4a832a, 0xd)
        /home/jrick/src/go/src/os/file_unix.go:235 +0x38 fp=0xc000436dd8 sp=0xc000436d88 pc=0x47df78
os.(*File).Close(0xc000190b00, 0xc000436f18, 0xc000469410)
        /home/jrick/src/go/src/os/file_posix.go:25 +0x33 fp=0xc000436e00 sp=0xc000436dd8 pc=0x47d773
os/exec.(*Cmd).closeDescriptors(0xc00006db80, 0xc00049a240, 0x3, 0x4)
        /home/jrick/src/go/src/os/exec/exec.go:320 +0x5a fp=0xc000436e38 sp=0xc000436e00 pc=0x48665a
os/exec.(*Cmd).Start(0xc00006db80, 0xc00006db80, 0xc000097aa0)
        /home/jrick/src/go/src/os/exec/exec.go:434 +0x58b fp=0xc000436f70 sp=0xc000436e38 pc=0x486cab
os/exec.(*Cmd).Run(0xc00006db80, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b fp=0xc000436f98 sp=0xc000436f70 pc=0x4866ab
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59 fp=0xc000436fd8 sp=0xc000436f98 pc=0x4886b9
runtime.goexit()
        /home/jrick/src/go/src/runtime/asm_amd64.s:1374 +0x1 fp=0xc000436fe0 sp=0xc000436fd8 pc=0x45e741
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 1 [runnable]:
main.main()
        /home/jrick/var/fork.go:10 +0x53

goroutine 193522 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000638f00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000238f20, 0x1, 0x1, 0xc000430d88, 0x17, 0x7babdae600000200, 0xc00063aa80)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000238f20, 0x1, 0x1, 0xc000430f18, 0xc0003a4c00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000238f20, 0x1, 0x1, 0xc000430f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000636dc0, 0xc000636dc0, 0xc000238f20)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000636dc0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193422 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0005ff600, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011a30, 0x1, 0x1, 0xc00040bd88, 0x17, 0x1c67ae2d00000200, 0xc000195180)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011a30, 0x1, 0x1, 0xc00040bf18, 0xc000192f00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011a30, 0x1, 0x1, 0xc00040bf18, 0x17, 0x4a44a0, 0x6c61636f6c2f7201)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a0160, 0xc0001a0160, 0xc000011a30)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a0160, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193457 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00010a200, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000097f50, 0x1, 0x1, 0xc000627d88, 0x17, 0xb04df8b400000200, 0xc000108700)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000097f50, 0x1, 0x1, 0xc000627f18, 0xc000106d80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000097f50, 0x1, 0x1, 0xc000627f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000079e40, 0xc000079e40, 0xc000097f50)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000079e40, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193431 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000661600, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239ad0, 0x1, 0x1, 0xc000187d88, 0x17, 0x516d849500000200, 0xc000664a80)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239ad0, 0x1, 0x1, 0xc000187f18, 0xc00065fb00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239ad0, 0x1, 0x1, 0xc000187f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0006682c0, 0xc0006682c0, 0xc000239ad0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0006682c0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193681 [runnable]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000c8501, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000337750, 0x1, 0x1, 0xc00018ed88, 0x17, 0xa2cc2cd900010200, 0xc0000d4380)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337750, 0x1, 0x1, 0xc00018ef18, 0xc0000c6a80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337750, 0x1, 0x1, 0xc00018ef18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000c2dc0, 0xc0000c2dc0, 0xc000337750)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000c2dc0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193722 [runnable]:
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:11
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193432 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000661900, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239b00, 0x1, 0x1, 0xc000557d88, 0x17, 0x38dd2d1300000200, 0xc000664e00)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239b00, 0x1, 0x1, 0xc000557f18, 0xc00065fe00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239b00, 0x1, 0x1, 0xc000557f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000668420, 0xc000668420, 0xc000239b00)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000668420, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193687 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00066c500, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239ba0, 0x1, 0x1, 0xc00054bd88, 0x17, 0xe22df3c100000200, 0xc000665c00)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239ba0, 0x1, 0x1, 0xc00054bf18, 0xc00066aa80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239ba0, 0x1, 0x1, 0xc00054bf18, 0x17, 0x4a44a0, 0x459800)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000668840, 0xc000668840, 0xc000239ba0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000668840, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193646 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00066cf00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239c60, 0x1, 0x1, 0xc00055cd88, 0x17, 0xee99247200010200, 0xc00066ea80)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239c60, 0x1, 0x1, 0xc00055cf18, 0xc00066b680, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239c60, 0x1, 0x1, 0xc00055cf18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000668dc0, 0xc000668dc0, 0xc000239c60)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000668dc0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193451 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000101100, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000097e30, 0x1, 0x1, 0xc00040cd88, 0x17, 0x6a5b5f1a00000200, 0xc000103180)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000097e30, 0x1, 0x1, 0xc00040cf18, 0xc00007db00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000097e30, 0x1, 0x1, 0xc00040cf18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000079600, 0xc000079600, 0xc000097e30)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000079600, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193694 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0001a4700, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011b50, 0x1, 0x1, 0xc000472d88, 0x17, 0x1865016f00000200, 0xc0001b0700)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011b50, 0x1, 0x1, 0xc000472f18, 0xc0001b2180, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011b50, 0x1, 0x1, 0xc000472f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a09a0, 0xc0001a09a0, 0xc000011b50)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a09a0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193652 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00020ea00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc0002022e0, 0x1, 0x1, 0xc0001b8d88, 0x17, 0x6f23123b00000200, 0xc000210380)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc0002022e0, 0x1, 0x1, 0xc0001b8f18, 0xc000207e00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc0002022e0, 0x1, 0x1, 0xc0001b8f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000677e40, 0xc000677e40, 0xc0002022e0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000677e40, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193632 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000674200, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239db0, 0x1, 0x1, 0xc000258d88, 0x17, 0x45c42e4600000200, 0xc000672380)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239db0, 0x1, 0x1, 0xc000258f18, 0xc000670c00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239db0, 0x1, 0x1, 0xc000258f18, 0x17, 0x4a44a0, 0x6c61636f6c2f7201)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000669760, 0xc000669760, 0xc000239db0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000669760, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193689 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0001a4c00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011bb0, 0x1, 0x1, 0xc00018ad88, 0x17, 0xf22ec87800000200, 0xc0001b0e00)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011bb0, 0x1, 0x1, 0xc00018af18, 0xc0001b2780, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011bb0, 0x1, 0x1, 0xc00018af18, 0x17, 0x4a44a0, 0x6c61636f6c2f7201)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a0c60, 0xc0001a0c60, 0xc000011bb0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a0c60, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193700 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000bf900, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000337690, 0x1, 0x1, 0xc00018bd88, 0x17, 0x77e1c79000010200, 0xc0000c5500)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337690, 0x1, 0x1, 0xc00018bf18, 0xc0000bde00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337690, 0x1, 0x1, 0xc00018bf18, 0x17, 0x4a44a0, 0x6c61636f6c2f7201)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000c2840, 0xc0000c2840, 0xc000337690)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000c2840, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193433 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000661b00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239b30, 0x1, 0x1, 0xc000558d88, 0x17, 0x959e227900010200, 0xc000665180)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239b30, 0x1, 0x1, 0xc000558f18, 0xc00066a180, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239b30, 0x1, 0x1, 0xc000558f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000668580, 0xc000668580, 0xc000239b30)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000668580, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193420 [runnable]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0005ff100, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc0000119d0, 0x1, 0x1, 0xc00025bd88, 0x17, 0xf42e634300010200, 0xc000194a80)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc0000119d0, 0x1, 0x1, 0xc00025bf18, 0xc000192900, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc0000119d0, 0x1, 0x1, 0xc00025bf18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0005efe40, 0xc0005efe40, 0xc0000119d0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0005efe40, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193743 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000122700, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000666460, 0x1, 0x1, 0xc00055dd88, 0x17, 0xbde7af4d00000200, 0xc000124700)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000666460, 0x1, 0x1, 0xc00055df18, 0xc000126000, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000666460, 0x1, 0x1, 0xc00055df18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc00011c420, 0xc00011c420, 0xc000666460)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc00011c420, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193692 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0001a5400, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011c40, 0x1, 0x1, 0xc0004f0d88, 0x17, 0x3bd415a700010200, 0xc0001b1880)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011c40, 0x1, 0x1, 0xc0004f0f18, 0xc0001b3080, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011c40, 0x1, 0x1, 0xc0004f0f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a1080, 0xc0001a1080, 0xc000011c40)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a1080, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193455 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000101b00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000097ef0, 0x1, 0x1, 0xc000628d88, 0x17, 0xcfb8e17300010200, 0xc000108000)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000097ef0, 0x1, 0x1, 0xc000628f18, 0xc000106780, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000097ef0, 0x1, 0x1, 0xc000628f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000079b80, 0xc000079b80, 0xc000097ef0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000079b80, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193686 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000674000, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239d80, 0x1, 0x1, 0xc000626d88, 0x17, 0xe776420a00010200, 0xc000672000)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239d80, 0x1, 0x1, 0xc000626f18, 0xc000670900, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239d80, 0x1, 0x1, 0xc000626f18, 0x17, 0x4a44a0, 0x6c61636f6c2f7201)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000669600, 0xc000669600, 0xc000239d80)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000669600, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193454 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000101900, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000097ec0, 0x1, 0x1, 0xc000408d88, 0x17, 0x3680ab3300000200, 0xc000103c00)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000097ec0, 0x1, 0x1, 0xc000408f18, 0xc000106480, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000097ec0, 0x1, 0x1, 0xc000408f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000079a20, 0xc000079a20, 0xc000097ec0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000079a20, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193505 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00020e501, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000202280, 0x1, 0x1, 0xc000560d88, 0x17, 0x521bf06b00000200, 0xc00020bc00)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000202280, 0x1, 0x1, 0xc000560f18, 0xc000207800, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000202280, 0x1, 0x1, 0xc000560f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000677b80, 0xc000677b80, 0xc000202280)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000677b80, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193698 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000bf400, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000337630, 0x1, 0x1, 0xc0005dcd88, 0x17, 0x608f544b00000200, 0xc0000c4e00)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337630, 0x1, 0x1, 0xc0005dcf18, 0xc0000bd800, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337630, 0x1, 0x1, 0xc0005dcf18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000c2580, 0xc0000c2580, 0xc000337630)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000c2580, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193644 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00066ca00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239c00, 0x1, 0x1, 0xc000254d88, 0x17, 0xb568698b00000200, 0xc00066e380)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239c00, 0x1, 0x1, 0xc000254f18, 0xc00066b080, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239c00, 0x1, 0x1, 0xc000254f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000668b00, 0xc000668b00, 0xc000239c00)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000668b00, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193426 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0001a4200, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011af0, 0x1, 0x1, 0xc000437d88, 0x17, 0x3a15cdf400010200, 0xc0001b0000)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011af0, 0x1, 0x1, 0xc000437f18, 0xc000193b00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011af0, 0x1, 0x1, 0xc000437f18, 0x17, 0x4a44a0, 0x6c61636f6c2f7201)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a06e0, 0xc0001a06e0, 0xc000011af0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a06e0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193434 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00066c000, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239b60, 0x1, 0x1, 0xc00054fd88, 0x17, 0x2d3baf2900010200, 0xc000665500)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239b60, 0x1, 0x1, 0xc00054ff18, 0xc00066a480, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239b60, 0x1, 0x1, 0xc00054ff18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0006686e0, 0xc0006686e0, 0xc000239b60)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0006686e0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193556 [running]:
        goroutine running on other thread; stack unavailable
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193666 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0001a4500, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011b20, 0x1, 0x1, 0xc000559d88, 0x17, 0xa29d4a1600000200, 0xc0001b0380)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011b20, 0x1, 0x1, 0xc000559f18, 0xc000193e00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011b20, 0x1, 0x1, 0xc000559f18, 0x17, 0x4a44a0, 0x6c61636f6c2f7201)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a0840, 0xc0001a0840, 0xc000011b20)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a0840, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193691 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0001a5100, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011c10, 0x1, 0x1, 0xc00018dd88, 0x17, 0xf8fa30c900000200, 0xc0001b1500)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011c10, 0x1, 0x1, 0xc00018df18, 0xc0001b2d80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011c10, 0x1, 0x1, 0xc00018df18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a0f20, 0xc0001a0f20, 0xc000011c10)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a0f20, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193570 [runnable]:
sync.runtime_Semrelease(0x55c224, 0x1, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:66 +0x3e
sync.(*Mutex).unlockSlow(0x55c220, 0xc000000104)
        /home/jrick/src/go/src/sync/mutex.go:224 +0xb5
sync.(*Mutex).Unlock(...)
        /home/jrick/src/go/src/sync/mutex.go:190
sync.(*RWMutex).Unlock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:136 +0xab
syscall.forkExec(0x4a832a, 0xd, 0xc0003370a0, 0x1, 0x1, 0xc0005e0d88, 0x17, 0x6e0e350b00000200, 0xc000576380)
        /home/jrick/src/go/src/syscall/exec_unix.go:216 +0x3d1
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc0003370a0, 0x1, 0x1, 0xc0005e0f18, 0xc000237080, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc0003370a0, 0x1, 0x1, 0xc0005e0f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc00056bce0, 0xc00056bce0, 0xc0003370a0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc00056bce0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193648 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00066d400, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239cc0, 0x1, 0x1, 0xc00009dd88, 0x17, 0x6774cf8000010200, 0xc00066f180)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239cc0, 0x1, 0x1, 0xc00009df18, 0xc00066bc80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239cc0, 0x1, 0x1, 0xc00009df18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000669080, 0xc000669080, 0xc000239cc0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000669080, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193695 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000bec00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc0003375a0, 0x1, 0x1, 0xc00054ad88, 0x17, 0x75634b8800000200, 0xc0000c4380)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc0003375a0, 0x1, 0x1, 0xc00054af18, 0xc0000bcf00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc0003375a0, 0x1, 0x1, 0xc00054af18, 0x17, 0x4a44a0, 0xc0000ece01)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000c2160, 0xc0000c2160, 0xc0003375a0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000c2160, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193595 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00020e700, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc0002022b0, 0x1, 0x1, 0xc0001b7d88, 0x17, 0x3c84192200010200, 0xc000210000)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc0002022b0, 0x1, 0x1, 0xc0001b7f18, 0xc000207b00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc0002022b0, 0x1, 0x1, 0xc0001b7f18, 0x17, 0x4a44a0, 0x6c61636f6c2f7201)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000677ce0, 0xc000677ce0, 0xc0002022b0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000677ce0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193764 [runnable]:
sync.runtime_Semrelease(0x55c224, 0x1, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:66 +0x3e
sync.(*Mutex).unlockSlow(0x55c220, 0xc00000020c)
        /home/jrick/src/go/src/sync/mutex.go:224 +0xb5
sync.(*Mutex).Unlock(...)
        /home/jrick/src/go/src/sync/mutex.go:190
sync.(*RWMutex).Unlock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:136 +0xab
syscall.forkExec(0x4a832a, 0xd, 0xc000011fc0, 0x1, 0x1, 0xc000549d88, 0x17, 0x2387cfad00010200, 0xc0001e0e00)
        /home/jrick/src/go/src/syscall/exec_unix.go:216 +0x3d1
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011fc0, 0x1, 0x1, 0xc000549f18, 0xc0001d0a80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011fc0, 0x1, 0x1, 0xc000549f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001ccb00, 0xc0001ccb00, 0xc000011fc0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001ccb00, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193409 [runnable]:
sync.runtime_Semrelease(0x55c224, 0x1, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:66 +0x3e
sync.(*Mutex).unlockSlow(0x55c220, 0xc000000204)
        /home/jrick/src/go/src/sync/mutex.go:224 +0xb5
sync.(*Mutex).Unlock(...)
        /home/jrick/src/go/src/sync/mutex.go:190
sync.(*RWMutex).Unlock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:136 +0xab
syscall.forkExec(0x4a832a, 0xd, 0xc000239680, 0x1, 0x1, 0xc000181d88, 0x17, 0xd3d148b800000200, 0xc00064f880)
        /home/jrick/src/go/src/syscall/exec_unix.go:216 +0x3d1
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239680, 0x1, 0x1, 0xc000181f18, 0xc000366c00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239680, 0x1, 0x1, 0xc000181f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0006502c0, 0xc0006502c0, 0xc000239680)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0006502c0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193755 [runnable]:
sync.runtime_Semrelease(0x55c224, 0x1, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:66 +0x3e
sync.(*Mutex).unlockSlow(0x55c220, 0xc0000001fc)
        /home/jrick/src/go/src/sync/mutex.go:224 +0xb5
sync.(*Mutex).Unlock(...)
        /home/jrick/src/go/src/sync/mutex.go:190
sync.(*RWMutex).Unlock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:136 +0xab
syscall.forkExec(0x4a832a, 0xd, 0xc000337b80, 0x1, 0x1, 0xc000188d88, 0x17, 0x7dd9439500010200, 0xc0000f7180)
        /home/jrick/src/go/src/syscall/exec_unix.go:216 +0x3d1
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337b80, 0x1, 0x1, 0xc000188f18, 0xc0000f4d80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337b80, 0x1, 0x1, 0xc000188f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000e6c60, 0xc0000e6c60, 0xc000337b80)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000e6c60, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193701 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00066c200, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000337550, 0x1, 0x1, 0xc000256d88, 0x17, 0x93e6a6ad00000200, 0xc000665880)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337550, 0x1, 0x1, 0xc000256f18, 0xc00066a780, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337550, 0x1, 0x1, 0xc000256f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc00057be40, 0xc00057be40, 0xc000337550)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc00057be40, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193642 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000bea00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000337570, 0x1, 0x1, 0xc000435d88, 0x17, 0x527322a500010200, 0xc0000c4000)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337570, 0x1, 0x1, 0xc000435f18, 0xc0000bcc00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337570, 0x1, 0x1, 0xc000435f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000c2000, 0xc0000c2000, 0xc000337570)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000c2000, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193421 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0005ff400, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011a00, 0x1, 0x1, 0xc0004efd88, 0x17, 0x1d5ed79300010200, 0xc000194e00)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011a00, 0x1, 0x1, 0xc0004eff18, 0xc000192c00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011a00, 0x1, 0x1, 0xc0004eff18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a0000, 0xc0001a0000, 0xc000011a00)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a0000, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193555 [runnable]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000643b00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239270, 0x1, 0x1, 0xc00055bd88, 0x17, 0xd173f9a800000200, 0xc000646a80)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239270, 0x1, 0x1, 0xc00055bf18, 0xc00017e600, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239270, 0x1, 0x1, 0xc00055bf18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000644580, 0xc000644580, 0xc000239270)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000644580, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193688 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0001a4a00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011b80, 0x1, 0x1, 0xc000629d88, 0x17, 0xa60262a00000200, 0xc0001b0a80)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011b80, 0x1, 0x1, 0xc000629f18, 0xc0001b2480, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011b80, 0x1, 0x1, 0xc000629f18, 0x17, 0x4a44a0, 0xc0000f1e00)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a0b00, 0xc0001a0b00, 0xc000011b80)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a0b00, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193453 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000101600, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000097e90, 0x1, 0x1, 0xc000406d88, 0x17, 0x803843500000200, 0xc000103880)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000097e90, 0x1, 0x1, 0xc000406f18, 0xc000106180, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000097e90, 0x1, 0x1, 0xc000406f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000798c0, 0xc0000798c0, 0xc000097e90)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000798c0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193581 [runnable]:
sync.runtime_Semrelease(0x55c224, 0x1, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:66 +0x3e
sync.(*Mutex).unlockSlow(0x55c220, 0xc0000000e4)
        /home/jrick/src/go/src/sync/mutex.go:224 +0xb5
sync.(*Mutex).Unlock(...)
        /home/jrick/src/go/src/sync/mutex.go:190
sync.(*RWMutex).Unlock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:136 +0xab
syscall.forkExec(0x4a832a, 0xd, 0xc0003372c0, 0x1, 0x1, 0xc000562d88, 0x17, 0x4579ec0800000200, 0xc00057d180)
        /home/jrick/src/go/src/syscall/exec_unix.go:216 +0x3d1
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc0003372c0, 0x1, 0x1, 0xc000562f18, 0xc000457c80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc0003372c0, 0x1, 0x1, 0xc000562f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc00057ac60, 0xc00057ac60, 0xc0003372c0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc00057ac60, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193583 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00057ec00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000337340, 0x1, 0x1, 0xc000185d88, 0x17, 0xd5d89eb300010200, 0xc00057d880)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337340, 0x1, 0x1, 0xc000185f18, 0xc00037e480, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337340, 0x1, 0x1, 0xc000185f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc00057af20, 0xc00057af20, 0xc000337340)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc00057af20, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193696 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000bef00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc0003375d0, 0x1, 0x1, 0xc00062dd88, 0x17, 0x9d83cad100010200, 0xc0000c4700)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc0003375d0, 0x1, 0x1, 0xc00062df18, 0xc0000bd200, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc0003375d0, 0x1, 0x1, 0xc00062df18, 0x17, 0x4a44a0, 0xc000211201)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000c22c0, 0xc0000c22c0, 0xc0003375d0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000c22c0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193645 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00066cc00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239c30, 0x1, 0x1, 0xc000186d88, 0x17, 0x6f3a283700000200, 0xc00066e700)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239c30, 0x1, 0x1, 0xc000186f18, 0xc00066b380, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239c30, 0x1, 0x1, 0xc000186f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000668c60, 0xc000668c60, 0xc000239c30)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000668c60, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193456 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00010a000, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000097f20, 0x1, 0x1, 0xc00062bd88, 0x17, 0xfabcedc100010200, 0xc000108380)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000097f20, 0x1, 0x1, 0xc00062bf18, 0xc000106a80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000097f20, 0x1, 0x1, 0xc00062bf18, 0x17, 0x4a44a0, 0x459801)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000079ce0, 0xc000079ce0, 0xc000097f20)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000079ce0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193430 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000661400, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239aa0, 0x1, 0x1, 0xc000183d88, 0x17, 0x7dd7e2200000200, 0xc000664700)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239aa0, 0x1, 0x1, 0xc000183f18, 0xc00065f800, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239aa0, 0x1, 0x1, 0xc000183f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000668160, 0xc000668160, 0xc000239aa0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000668160, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193704 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000c9100, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc0003377f0, 0x1, 0x1, 0xc0000a3d88, 0x17, 0x4bfbfcd000010200, 0xc0000d4e00)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc0003377f0, 0x1, 0x1, 0xc0000a3f18, 0xc0000c7380, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc0003377f0, 0x1, 0x1, 0xc0000a3f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000c31e0, 0xc0000c31e0, 0xc0003377f0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000c31e0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193427 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0005fec00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011970, 0x1, 0x1, 0xc00046dd88, 0x17, 0xe9e9532e00000200, 0xc000194380)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011970, 0x1, 0x1, 0xc00046df18, 0xc000192300, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011970, 0x1, 0x1, 0xc00046df18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0005efb80, 0xc0005efb80, 0xc000011970)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0005efb80, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193558 [runnable]:
sync.runtime_Semrelease(0x55c224, 0x1, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:66 +0x3e
sync.(*Mutex).unlockSlow(0x55c220, 0xc00000010c)
        /home/jrick/src/go/src/sync/mutex.go:224 +0xb5
sync.(*Mutex).Unlock(...)
        /home/jrick/src/go/src/sync/mutex.go:190
sync.(*RWMutex).Unlock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:136 +0xab
syscall.forkExec(0x4a832a, 0xd, 0xc000239310, 0x1, 0x1, 0xc00040ad88, 0x17, 0x9b6c32ce00010200, 0xc000647500)
        /home/jrick/src/go/src/syscall/exec_unix.go:216 +0x3d1
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239310, 0x1, 0x1, 0xc00040af18, 0xc00017f080, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239310, 0x1, 0x1, 0xc00040af18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0006449a0, 0xc0006449a0, 0xc000239310)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0006449a0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193582 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00057e700, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000337300, 0x1, 0x1, 0xc00046cd88, 0x17, 0xe64949be00010200, 0xc00057d500)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337300, 0x1, 0x1, 0xc00046cf18, 0xc00037e180, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337300, 0x1, 0x1, 0xc00046cf18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc00057adc0, 0xc00057adc0, 0xc000337300)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc00057adc0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193647 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00066d100, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239c90, 0x1, 0x1, 0xc00009fd88, 0x17, 0xaa0c1cad00010200, 0xc00066ee00)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239c90, 0x1, 0x1, 0xc00009ff18, 0xc00066b980, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239c90, 0x1, 0x1, 0xc00009ff18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000668f20, 0xc000668f20, 0xc000239c90)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000668f20, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193429 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000661100, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239a70, 0x1, 0x1, 0xc000184d88, 0x17, 0xcf8335d800010200, 0xc000664380)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239a70, 0x1, 0x1, 0xc000184f18, 0xc00065f500, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239a70, 0x1, 0x1, 0xc000184f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000668000, 0xc000668000, 0xc000239a70)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000668000, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193735 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000117101, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc0006662e0, 0x1, 0x1, 0xc000470d88, 0x17, 0x910dec900000200, 0xc00011aa80)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc0006662e0, 0x1, 0x1, 0xc000470f18, 0xc000118780, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc0006662e0, 0x1, 0x1, 0xc000470f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc00010d8c0, 0xc00010d8c0, 0xc0006662e0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc00010d8c0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193452 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000101400, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000097e60, 0x1, 0x1, 0xc00040dd88, 0x17, 0x45403b3300000200, 0xc000103500)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000097e60, 0x1, 0x1, 0xc00040df18, 0xc00007de00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000097e60, 0x1, 0x1, 0xc00040df18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000079760, 0xc000079760, 0xc000097e60)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000079760, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 186501 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc000178f00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000666d80, 0x1, 0x1, 0xc000407d88, 0x17, 0x6032842a00010200, 0xc000384000)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000666d80, 0x1, 0x1, 0xc000407f18, 0xc00017c180, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000666d80, 0x1, 0x1, 0xc000407f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000382000, 0xc000382000, 0xc000666d80)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000382000, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193699 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000bf600, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000337660, 0x1, 0x1, 0xc000189d88, 0x17, 0xdb04e6600000200, 0xc0000c5180)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337660, 0x1, 0x1, 0xc000189f18, 0xc0000bdb00, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337660, 0x1, 0x1, 0xc000189f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000c26e0, 0xc0000c26e0, 0xc000337660)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000c26e0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193779 [runnable]:
syscall.Syscall(0x3, 0x43, 0xc00055ec68, 0x8, 0x0, 0x8, 0x0)
        /home/jrick/src/go/src/syscall/asm_unix_amd64.s:19 +0x5
syscall.readlen(0x43, 0xc00055ec68, 0x8, 0x2, 0xc00067e780, 0x18)
        /home/jrick/src/go/src/syscall/zsyscall_openbsd_amd64.go:1251 +0x56
syscall.forkExec(0x4a832a, 0xd, 0xc000202170, 0x1, 0x1, 0xc00055ed88, 0x17, 0x34d6675a00010200, 0xc00020aa80)
        /home/jrick/src/go/src/syscall/exec_unix.go:221 +0x40c
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000202170, 0x1, 0x1, 0xc00055ef18, 0xc000206900, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000202170, 0x1, 0x1, 0xc00055ef18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000677340, 0xc000677340, 0xc000202170)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000677340, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193425 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0001a4000, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011ac0, 0x1, 0x1, 0xc000431d88, 0x17, 0x64be549200010200, 0xc000195c00)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011ac0, 0x1, 0x1, 0xc000431f18, 0xc000193800, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011ac0, 0x1, 0x1, 0xc000431f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a0580, 0xc0001a0580, 0xc000011ac0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a0580, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193589 [runnable]:
sync.runtime_Semrelease(0x55c224, 0x1, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:66 +0x3e
sync.(*Mutex).unlockSlow(0x55c220, 0xc0000000fc)
        /home/jrick/src/go/src/sync/mutex.go:224 +0xb5
sync.(*Mutex).Unlock(...)
        /home/jrick/src/go/src/sync/mutex.go:190
sync.(*RWMutex).Unlock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:136 +0xab
syscall.forkExec(0x4a832a, 0xd, 0xc000097740, 0x1, 0x1, 0xc0005e1d88, 0x17, 0xd1984c9b00000200, 0xc00006ae00)
        /home/jrick/src/go/src/syscall/exec_unix.go:216 +0x3d1
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000097740, 0x1, 0x1, 0xc0005e1f18, 0xc000159680, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000097740, 0x1, 0x1, 0xc0005e1f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc00006c2c0, 0xc00006c2c0, 0xc000097740)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc00006c2c0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193683 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000c8a00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc0003377b0, 0x1, 0x1, 0xc000561d88, 0x17, 0x4133a39b00000200, 0xc0000d4a80)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc0003377b0, 0x1, 0x1, 0xc000561f18, 0xc0000c7080, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc0003377b0, 0x1, 0x1, 0xc000561f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000c3080, 0xc0000c3080, 0xc0003377b0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000c3080, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193685 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00066db00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239d50, 0x1, 0x1, 0xc00062cd88, 0x17, 0xc5f8ba0500010200, 0xc00066fc00)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239d50, 0x1, 0x1, 0xc00062cf18, 0xc000670600, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239d50, 0x1, 0x1, 0xc00062cf18, 0x17, 0x4a44a0, 0xc00041e401)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0006694a0, 0xc0006694a0, 0xc000239d50)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0006694a0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193528 [runnable]:
sync.runtime_Semrelease(0x55c224, 0x1, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:66 +0x3e
sync.(*Mutex).unlockSlow(0x55c220, 0xc000000114)
        /home/jrick/src/go/src/sync/mutex.go:224 +0xb5
sync.(*Mutex).Unlock(...)
        /home/jrick/src/go/src/sync/mutex.go:190
sync.(*RWMutex).Unlock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:136 +0xab
syscall.forkExec(0x4a832a, 0xd, 0xc000239040, 0x1, 0x1, 0xc000556d88, 0x17, 0x8aa8057900000200, 0xc000640000)
        /home/jrick/src/go/src/syscall/exec_unix.go:216 +0x3d1
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239040, 0x1, 0x1, 0xc000556f18, 0xc000410000, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239040, 0x1, 0x1, 0xc000556f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc000637600, 0xc000637600, 0xc000239040)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc000637600, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193657 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000c8c00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000097fe0, 0x1, 0x1, 0xc00062ad88, 0x17, 0x81ab75ae00010200, 0xc000109180)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000097fe0, 0x1, 0x1, 0xc00062af18, 0xc000107680, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000097fe0, 0x1, 0x1, 0xc00062af18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc00010c2c0, 0xc00010c2c0, 0xc000097fe0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc00010c2c0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193783 [runnable]:
os.newFile(0x67, 0x4a7952, 0x9, 0x1, 0x67)
        /home/jrick/src/go/src/os/file_unix.go:113 +0x89
os.openFileNolog(0x4a7952, 0x9, 0x1, 0x0, 0xc000202270, 0x0, 0x0)
        /home/jrick/src/go/src/os/file_unix.go:224 +0x1ce
os.OpenFile(0x4a7952, 0x9, 0x1, 0xc000000000, 0xc000202270, 0x0, 0xc00055fe28)
        /home/jrick/src/go/src/os/file.go:327 +0x65
os/exec.(*Cmd).writerDescriptor(0xc000677a20, 0x0, 0x0, 0x0, 0xc0000b70d8, 0xc00020c1a0)
        /home/jrick/src/go/src/os/exec/exec.go:291 +0x3f9
os/exec.(*Cmd).stdout(0xc000677a20, 0xc0000b70d8, 0x0, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:279 +0x3d
os/exec.(*Cmd).Start(0xc000677a20, 0xc000677a20, 0xc000202260)
        /home/jrick/src/go/src/os/exec/exec.go:407 +0x162
os/exec.(*Cmd).Run(0xc000677a20, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193669 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000c8f00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011d00, 0x1, 0x1, 0xc00009cd88, 0x17, 0x915565ed00000200, 0xc0001c4700)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011d00, 0x1, 0x1, 0xc00009cf18, 0xc0001b3c80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011d00, 0x1, 0x1, 0xc00009cf18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a1600, 0xc0001a1600, 0xc000011d00)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a1600, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193424 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0005ffb00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011a90, 0x1, 0x1, 0xc0005e3d88, 0x17, 0x8f43db8400010200, 0xc000195880)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011a90, 0x1, 0x1, 0xc0005e3f18, 0xc000193500, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011a90, 0x1, 0x1, 0xc0005e3f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a0420, 0xc0001a0420, 0xc000011a90)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a0420, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193423 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0005ff900, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011a60, 0x1, 0x1, 0xc00054ed88, 0x17, 0x83dd9cfa00000200, 0xc000195500)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011a60, 0x1, 0x1, 0xc00054ef18, 0xc000193200, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011a60, 0x1, 0x1, 0xc00054ef18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a02c0, 0xc0001a02c0, 0xc000011a60)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a02c0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193643 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc00066c700, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000239bd0, 0x1, 0x1, 0xc000409d88, 0x17, 0x2bd197c500000200, 0xc00066e000)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000239bd0, 0x1, 0x1, 0xc000409f18, 0xc00066ad80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000239bd0, 0x1, 0x1, 0xc000409f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0006689a0, 0xc0006689a0, 0xc000239bd0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0006689a0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193690 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0001a4f00, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000011be0, 0x1, 0x1, 0xc00018fd88, 0x17, 0x1edddb1e00010200, 0xc0001b1180)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000011be0, 0x1, 0x1, 0xc00018ff18, 0xc0001b2a80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000011be0, 0x1, 0x1, 0xc00018ff18, 0x17, 0x4a44a0, 0x459800)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0001a0dc0, 0xc0001a0dc0, 0xc000011be0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0001a0dc0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193419 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0005fef01, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc0000119a0, 0x1, 0x1, 0xc000257d88, 0x17, 0x4587bfb000010200, 0xc000194700)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc0000119a0, 0x1, 0x1, 0xc000257f18, 0xc000192600, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc0000119a0, 0x1, 0x1, 0xc000257f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0005efce0, 0xc0005efce0, 0xc0000119a0)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0005efce0, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193697 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000bf100, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000337600, 0x1, 0x1, 0xc00046ed88, 0x17, 0x83a5f47400000200, 0xc0000c4a80)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337600, 0x1, 0x1, 0xc00046ef18, 0xc0000bd500, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337600, 0x1, 0x1, 0xc00046ef18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000c2420, 0xc0000c2420, 0xc000337600)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000c2420, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193682 [semacquire]:
sync.runtime_SemacquireMutex(0x55c224, 0xc0000c8700, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:71 +0x47
sync.(*Mutex).lockSlow(0x55c220)
        /home/jrick/src/go/src/sync/mutex.go:138 +0x105
sync.(*Mutex).Lock(...)
        /home/jrick/src/go/src/sync/mutex.go:81
sync.(*RWMutex).Lock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:98 +0x90
syscall.forkExec(0x4a832a, 0xd, 0xc000337780, 0x1, 0x1, 0xc000565d88, 0x17, 0xb7f2f97a00010200, 0xc0000d4700)
        /home/jrick/src/go/src/syscall/exec_unix.go:203 +0x23a
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337780, 0x1, 0x1, 0xc000565f18, 0xc0000c6d80, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337780, 0x1, 0x1, 0xc000565f18, 0x17, 0x4a44a0, 0x0)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000c2f20, 0xc0000c2f20, 0xc000337780)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000c2f20, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193768 [running]:
        goroutine running on other thread; stack unavailable
created by main.main
        /home/jrick/var/fork.go:11 +0x75

goroutine 193758 [runnable]:
sync.runtime_Semrelease(0x55c224, 0x0, 0x1)
        /home/jrick/src/go/src/runtime/sema.go:66 +0x3e
sync.(*Mutex).unlockSlow(0x55c220, 0xc000000208)
        /home/jrick/src/go/src/sync/mutex.go:213 +0x7f
sync.(*Mutex).Unlock(...)
        /home/jrick/src/go/src/sync/mutex.go:190
sync.(*RWMutex).Unlock(0x55c220)
        /home/jrick/src/go/src/sync/rwmutex.go:136 +0xab
syscall.forkExec(0x4a832a, 0xd, 0xc000337c10, 0x1, 0x1, 0xc000180d88, 0x17, 0x7a28816500010200, 0xc0000f7c00)
        /home/jrick/src/go/src/syscall/exec_unix.go:216 +0x3d1
syscall.StartProcess(...)
        /home/jrick/src/go/src/syscall/exec_unix.go:263
os.startProcess(0x4a832a, 0xd, 0xc000337c10, 0x1, 0x1, 0xc000180f18, 0xc0000f5680, 0x17, 0x17)
        /home/jrick/src/go/src/os/exec_posix.go:53 +0x29b
os.StartProcess(0x4a832a, 0xd, 0xc000337c10, 0x1, 0x1, 0xc000180f18, 0x17, 0x4a44a0, 0x1)
        /home/jrick/src/go/src/os/exec.go:102 +0x7c
os/exec.(*Cmd).Start(0xc0000e7080, 0xc0000e7080, 0xc000337c10)
        /home/jrick/src/go/src/os/exec/exec.go:422 +0x528
os/exec.(*Cmd).Run(0xc0000e7080, 0xd, 0x0)
        /home/jrick/src/go/src/os/exec/exec.go:338 +0x2b
main.main.func1(0xc0000940c0)
        /home/jrick/var/fork.go:12 +0x59
created by main.main
        /home/jrick/var/fork.go:11 +0x75
exit status 2