tailscale / tailscale

The easiest, most secure way to use WireGuard and 2FA.
https://tailscale.com
BSD 3-Clause "New" or "Revised" License
19.4k stars 1.52k forks source link

tsnet: crash after starting example/tshello #4258

Closed bmizerany closed 2 years ago

bmizerany commented 2 years ago

What is the issue?

I ran go run tshello.go from ./tsnet/example and got this crash:

Crash output
tshello % go run tshello.go
2022/03/22 16:46:23 [v1] using fake (no-op) tun device
2022/03/22 16:46:23 [v1] using fake (no-op) OS network configurator
2022/03/22 16:46:23 [v1] using fake (no-op) DNS configurator
2022/03/22 16:46:23 dns: using dns.noopManager
2022/03/22 16:46:23 link state: interfaces.State{defaultRoute=en0 ifs={en0:[10.0.0.46/24] utun3:[100.95.14.79/32 fd7a:115c:a1e0:ab12:4843:cd96:625f:e4f/48]} v4=true v6=false}
2022/03/22 16:46:23 magicsock: disco key = d:8cd299aaaf8d1a18
2022/03/22 16:46:23 Creating wireguard device...
2022/03/22 16:46:23 Bringing wireguard device up...
2022/03/22 16:46:23 [v2] UDP bind has been updated
2022/03/22 16:46:23 [v2] Interface state was Down, requested Up, now Up
2022/03/22 16:46:23 Bringing router up...
2022/03/22 16:46:23 [v1] warning: fakeRouter.Up: not implemented.
2022/03/22 16:46:23 Clearing router settings...
2022/03/22 16:46:23 [v1] warning: fakeRouter.Set: not implemented.
2022/03/22 16:46:23 Starting link monitor...
2022/03/22 16:46:23 Engine created.
2022/03/22 16:46:23 [v2] Routine: receive incoming v6 - started
2022/03/22 16:46:23 [v2] Routine: receive incoming receiveDERP - started
2022/03/22 16:46:23 [v2] Routine: receive incoming v4 - started
2022/03/22 16:46:23 tsnet running state path /Users/bmizerany/Library/Application Support/tsnet-tshello/tailscaled.state
2022/03/22 16:46:23 [vJSON]1{"Hostinfo":{"IPNVersion":"1.23.0-dev-t","OS":"macOS","Package":"tshello","Hostname":"blaptop","GoArch":"arm64"}}
2022/03/22 16:46:23 [v1] netmap packet filter: (not ready yet)
2022/03/22 16:46:23 tsnet starting with hostname "tshello", varRoot "/Users/bmizerany/Library/Application Support/tsnet-tshello"
2022/03/22 16:46:23 Start
2022/03/22 16:46:23 using backend prefs for "_daemon": Prefs{ra=true dns=true want=true host="tshello" Persist{lm=, o=, n=[xk20d] u="blake.mizerany@gmail.com"}}
2022/03/22 16:46:23 [v1] got initial portlist info in 0s
2022/03/22 16:46:23 control: [v1] HostInfo: {"IPNVersion":"1.23.0-dev-t","BackendLogID":"tsnet-TODO","OS":"macOS","Package":"tshello","Hostname":"tshello","GoArch":"arm64","Services":[{"Proto":"tcp","Port":22},{"Proto":"tcp","Port":5000,"Description":"ControlCenter"},{"Proto":"tcp","Port":7000,"Description":"ControlCenter"},{"Proto":"tcp","Port":49278,"Description":"com.docker.backend"},{"Proto":"tcp","Port":49424,"Description":"IPNExtension"},{"Proto":"tcp","Port":56208,"Description":"rapportd"}]}
2022/03/22 16:46:23 Backend: logs: be:tsnet-TODO fe:
2022/03/22 16:46:23 control: client.Login(false, 0)
2022/03/22 16:46:23 control: [v1] authRoutine: state:new; goal=nil paused=false
2022/03/22 16:46:23 control: [v1] authRoutine: context done.
2022/03/22 16:46:23 control: [v1] mapRoutine: state:new
2022/03/22 16:46:23 control: [v1] authRoutine: state:new; wantLoggedIn=true
2022/03/22 16:46:23 control: [v1] direct.TryLogin(token=false, flags=0)
2022/03/22 16:46:23 printAuthURLLoop: state is NoState; stopping
2022/03/22 16:46:23 control: doLogin(regen=false, hasUrl=false)
2022/03/22 16:46:24 control: control server key  from https://controlplane.tailscale.com
2022/03/22 16:46:24 control: RegisterReq: onode= node=[xk20d] fup=false
2022/03/22 16:46:25 control: RegisterReq: got response; nodeKeyExpired=false, machineAuthorized=true; authURL=false
2022/03/22 16:46:25 control: [v1] No AuthURL
2022/03/22 16:46:25 control: [v1] sendStatus: authRoutine-success: state:authenticated
2022/03/22 16:46:25 [v1] authReconfig: netmap not yet valid. Skipping.
2022/03/22 16:46:25 control: [v1] cancelMapSafely: synced=false
2022/03/22 16:46:25 control: [v1] cancelMapSafely: wrote to channel
2022/03/22 16:46:25 control: [v1] authRoutine: state:authenticated; goal=nil paused=false
2022/03/22 16:46:25 control: [v1] mapRoutine: new map needed while idle.
2022/03/22 16:46:25 control: [v1] mapRoutine: state:authenticated
2022/03/22 16:46:25 control: [v1] PollNetMap: stream=true :0 ep=[]
2022/03/22 16:46:25 control: [vJSON]1{"controltime":"2022-03-22T23:46:26.374274094Z"}
2022/03/22 16:46:25 control: [v1] new network map[0]:
netmap: self: [xk20d] auth=machine-authorized u=blake.mizerany@gmail.com [100.94.162.4/32 fd7a:115c:a1e0:ab12:4843:cd96:625e:a204/128]
2022/03/22 16:46:25 control: [v1] mapRoutine: netmap received: state:synchronized
2022/03/22 16:46:25 control: [v1] sendStatus: mapRoutine-got-netmap: state:synchronized
2022/03/22 16:46:25 active login: blake.mizerany@gmail.com
2022/03/22 16:46:25 [v1] netmap packet filter: 1 filters
2022/03/22 16:46:25 [v1] magicsock: got updated network map; 2 peers
2022/03/22 16:46:25 [v2] netstack: registered IP 100.94.162.4/32
2022/03/22 16:46:25 [v2] netstack: registered IP fd7a:115c:a1e0:ab12:4843:cd96:625e:a204/128
2022/03/22 16:46:25 Switching ipn state NoState -> Starting (WantRunning=true, nm=true)
2022/03/22 16:46:25 [v1] magicsock: starting endpoint update (derp-map-update)
2022/03/22 16:46:25 magicsock: SetPrivateKey called (init)
2022/03/22 16:46:25 wgengine: Reconfig: configuring userspace wireguard config (with 0/2 peers)
2022/03/22 16:46:25 health("overall"): error: state=Starting, wantRunning=true
2022/03/22 16:46:25 [v2] UAPI: Updating private key
2022/03/22 16:46:25 [v1] magicsock: ReSTUN: endpoint update active, need another later ("set-private-key")
2022/03/22 16:46:25 [v1] magicsock: ReSTUN: endpoint update active, need another later ("non-zero-peers")
2022/03/22 16:46:25 wgengine: Reconfig: configuring router
2022/03/22 16:46:25 [v1] warning: fakeRouter.Set: not implemented.
2022/03/22 16:46:25 wgengine: Reconfig: configuring DNS
2022/03/22 16:46:25 dns: Set: {DefaultResolvers:[] Routes:{blake-mizerany.gmail.com.beta.tailscale.net.:[]}+65arpa SearchDomains:[blake-mizerany.gmail.com.beta.tailscale.net.] Hosts:3}
2022/03/22 16:46:25 [v1] authReconfig: ra=true dns=true 0x03: getting OS base config is not supported
2022/03/22 16:46:25 control: controlclient: restarting map request for "dns-os" health change to new state: getting OS base config is not supported
2022/03/22 16:46:25 control: [v1] cancelMapSafely: synced=true
2022/03/22 16:46:25 health("dns-os"): error: getting OS base config is not supported
2022/03/22 16:46:25 health("dns"): error: getting OS base config is not supported
2022/03/22 16:46:25 peerapi: serving on http://100.94.162.4:49370
2022/03/22 16:46:25 peerapi: serving on http://[fd7a:115c:a1e0:ab12:4843:cd96:625e:a204]:49370
2022/03/22 16:46:25 control: controlclient: restarting map request for "dns" health change to new state: getting OS base config is not supported
2022/03/22 16:46:25 control: [v1] cancelMapSafely: synced=true
2022/03/22 16:46:25 [v1] wgengine: Reconfig done
2022/03/22 16:46:25 [v1] authReconfig: ra=true dns=true 0x03: 
2022/03/22 16:46:25 control: [v1] PollNetMap: EOF
2022/03/22 16:46:25 control: [v1] mapRoutine: state:authenticated
2022/03/22 16:46:25 control: [v1] HostInfo: {"IPNVersion":"1.23.0-dev-t","BackendLogID":"tsnet-TODO","OS":"macOS","Package":"tshello","Hostname":"tshello","GoArch":"arm64","Services":[{"Proto":"tcp","Port":22},{"Proto":"tcp","Port":5000,"Description":"ControlCenter"},{"Proto":"tcp","Port":7000,"Description":"ControlCenter"},{"Proto":"tcp","Port":49278,"Description":"com.docker.backend"},{"Proto":"tcp","Port":49424,"Description":"IPNExtension"},{"Proto":"tcp","Port":56208,"Description":"rapportd"},{"Proto":"peerapi4","Port":49370},{"Proto":"peerapi6","Port":49370},{"Proto":"peerapi-dns-proxy","Port":1}]}
2022/03/22 16:46:25 control: [v1] cancelMapSafely: synced=false
2022/03/22 16:46:25 control: [v1] cancelMapSafely: wrote to channel
2022/03/22 16:46:25 control: [v1] PollNetMap: stream=true :0 ep=[]
2022/03/22 16:46:25 portmapper: PMP probe failed due result code: {OpCode:128 ResultCode:NetworkFailure SecondsSinceEpoch:2820375 MappingValidSeconds:0 InternalPort:0 ExternalPort:0 PublicAddr:0.0.0.0}
2022/03/22 16:46:25 portmapper: [v1] Got PCP response: epoch: 2820375
2022/03/22 16:46:25 control: [vJSON]1{"controltime":"2022-03-22T23:46:26.554817125Z"}
2022/03/22 16:46:25 control: [v1] mapRoutine: new map request during PollNetMap. canceling.
2022/03/22 16:46:25 control: [v1] PollNetMap: EOF
2022/03/22 16:46:25 control: [v1] mapRoutine: state:authenticated
2022/03/22 16:46:25 control: [v1] PollNetMap: stream=true :0 ep=[]
2022/03/22 16:46:25 netcheck: [v1] report: udp=true v6=false mapvarydest=false hair=false portmap=C v4a=104.59.126.248:49449 derp=2 derpdist=1v4:85ms,2v4:26ms,3v4:192ms,4v4:168ms,5v4:184ms,7v4:128ms,8v4:146ms,9v4:58ms,10v4:36ms,11v4:192ms,12v4:63ms
2022/03/22 16:46:25 magicsock: home is now derp-2 (sfo)
2022/03/22 16:46:25 [v1] magicsock: netInfo update: NetInfo{varies=false hairpin=false ipv6=false udp=true derp=#2 portmap=C link=""}
2022/03/22 16:46:25 magicsock: adding connection to derp-2 for home-keep-alive
2022/03/22 16:46:25 control: NetInfo: NetInfo{varies=false hairpin=false ipv6=false udp=true derp=#2 portmap=C link=""}
2022/03/22 16:46:25 control: [v1] cancelMapSafely: synced=false
2022/03/22 16:46:25 control: [v1] cancelMapSafely: wrote to channel
2022/03/22 16:46:25 magicsock: 1 active derp conns: derp-2=cr0s,wr0s
2022/03/22 16:46:25 Switching ipn state Starting -> Running (WantRunning=true, nm=true)
2022/03/22 16:46:25 derphttp.Client.Connect: connecting to derp-2 (sfo)
2022/03/22 16:46:25 magicsock: endpoints changed: 104.59.126.248:49449 (stun), 10.0.0.46:49449 (local)
2022/03/22 16:46:25 control: [v2] client.newEndpoints(0, [104.59.126.248:49449 10.0.0.46:49449])
2022/03/22 16:46:25 control: [v1] cancelMapSafely: synced=false
2022/03/22 16:46:25 control: [v1] cancelMapSafely: channel was full
2022/03/22 16:46:25 [v1] magicsock: starting endpoint update (non-zero-peers)
2022/03/22 16:46:25 portmapper: PMP probe failed due result code: {OpCode:128 ResultCode:NetworkFailure SecondsSinceEpoch:2820375 MappingValidSeconds:0 InternalPort:0 ExternalPort:0 PublicAddr:0.0.0.0}
2022/03/22 16:46:25 [v1] magicsock: ReSTUN: endpoint update active, need another later ("portmap-changed")
SIGTRAP: trace trap
PC=0x1ba4de768 m=10 sigcode=0

goroutine 0 [idle]:
crypto/x509/internal/macos.syscall(0x14000500000?, 0x140004b4420?, 0x140000bea68?, 0x104c9727c?, 0x140000bea38?, 0x104de4744?, 0x105379520?)
    /usr/local/go/src/runtime/sys_darwin.go:99 +0x40 fp=0x140000be9d0 sp=0x140000be970 pc=0x104cc7940
crypto/x509/internal/macos.CFRelease(0x140004b4420?)
    /usr/local/go/src/crypto/x509/internal/macos/corefoundation.go:152 +0x44 fp=0x140000bea20 sp=0x140000be9d0 pc=0x104de4374
crypto/x509/internal/macos.ReleaseCFArray(0x140000beaa8?)
    /usr/local/go/src/crypto/x509/internal/macos/corefoundation.go:204 +0x34 fp=0x140000bea50 sp=0x140000bea20 pc=0x104de45e4
crypto/x509.(*Certificate).systemVerify.func1()
    /usr/local/go/src/crypto/x509/root_darwin.go:14 +0x2c fp=0x140000bea70 sp=0x140000bea50 pc=0x104dedd4c
runtime.deferreturn()
    /usr/local/go/src/runtime/panic.go:436 +0x38 fp=0x140000beab0 sp=0x140000bea70 pc=0x104c97288
crypto/x509.(*Certificate).systemVerify(0x140003d6000, 0x140000bee80)
    /usr/local/go/src/crypto/x509/root_darwin.go:35 +0x30c fp=0x140000bed10 sp=0x140000beab0 pc=0x104ded7bc
crypto/x509.(*Certificate).Verify(0x140003d6000, {{0x140002ec690, 0x13}, 0x140004b7530, 0x0, {0x0, 0x0, 0x0}, {0x0, 0x0, ...}, ...})
    /usr/local/go/src/crypto/x509/verify.go:747 +0x478 fp=0x140000bee70 sp=0x140000bed10 pc=0x104df1798
tailscale.com/net/tlsdial.Config.func1({0x304, 0x0, 0x0, 0x1301, {0x0, 0x0}, 0x1, {0x140002ec690, 0x13}, {0x140006aa2c0, ...}, ...})
    /Users/bmizerany/src/tailscale/net/tlsdial/tlsdial.go:79 +0x168 fp=0x140000befb0 sp=0x140000bee70 pc=0x104f41b88
crypto/tls.(*Conn).verifyServerCertificate(0x1400034c000, {0x14000415c20, 0x4, 0x4})
    /usr/local/go/src/crypto/tls/handshake_client.go:893 +0x3cc fp=0x140000bf240 sp=0x140000befb0 pc=0x104e0bbac
crypto/tls.(*clientHandshakeStateTLS13).readServerCertificate(0x140000bf648)
    /usr/local/go/src/crypto/tls/handshake_client_tls13.go:457 +0x280 fp=0x140000bf450 sp=0x140000bf240 pc=0x104e0e2d0
crypto/tls.(*clientHandshakeStateTLS13).handshake(0x140000bf648)
    /usr/local/go/src/crypto/tls/handshake_client_tls13.go:87 +0x1c0 fp=0x140000bf490 sp=0x140000bf450 pc=0x104e0c6d0
crypto/tls.(*Conn).clientHandshake(0x1400034c000, {0x1054142a0, 0x140004e20c0})
    /usr/local/go/src/crypto/tls/handshake_client.go:219 +0x444 fp=0x140000bf720 sp=0x140000bf490 pc=0x104e08224
crypto/tls.(*Conn).clientHandshake-fm({0x1054142a0?, 0x140004e20c0?})
    :1 +0x40 fp=0x140000bf750 sp=0x140000bf720 pc=0x104e36a30
crypto/tls.(*Conn).handshakeContext(0x1400034c000, {0x1054142d8, 0x140001b4050})
    /usr/local/go/src/crypto/tls/conn.go:1452 +0x3cc fp=0x140000bf830 sp=0x140000bf750 pc=0x104e0689c
crypto/tls.(*Conn).HandshakeContext(...)
    /usr/local/go/src/crypto/tls/conn.go:1402
crypto/tls.(*Conn).Handshake(...)
    /usr/local/go/src/crypto/tls/conn.go:1386
tailscale.com/derp/derphttp.(*Client).connect(0x140006e81e0, {0x1054142a0, 0x140006a6540}, {0x1051a6383, 0x17})
    /Users/bmizerany/src/tailscale/derp/derphttp/derphttp_client.go:374 +0xe78 fp=0x140000bff90 sp=0x140000bf830 pc=0x10501fbb8
tailscale.com/derp/derphttp.(*Client).Connect(...)
    /Users/bmizerany/src/tailscale/derp/derphttp/derphttp_client.go:131
tailscale.com/wgengine/magicsock.(*Conn).derpWriteChanOfAddr.func2()
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1419 +0x44 fp=0x140000bffd0 sp=0x140000bff90 pc=0x10506b044
runtime.goexit()
    /usr/local/go/src/runtime/asm_arm64.s:1259 +0x4 fp=0x140000bffd0 sp=0x140000bffd0 pc=0x104ccaa64
created by tailscale.com/wgengine/magicsock.(*Conn).derpWriteChanOfAddr
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1418 +0xc1c

goroutine 122 [syscall]:
crypto/x509/internal/macos.syscall(0x14000500000?, 0x140004b4420?, 0x140000bea68?, 0x104c9727c?, 0x140000bea38?, 0x104de4744?, 0x105379520?)
    /usr/local/go/src/runtime/sys_darwin.go:99 +0x40 fp=0x140000be9d0 sp=0x140000be970 pc=0x104cc7940
crypto/x509/internal/macos.CFRelease(0x140004b4420?)
    /usr/local/go/src/crypto/x509/internal/macos/corefoundation.go:152 +0x44 fp=0x140000bea20 sp=0x140000be9d0 pc=0x104de4374
crypto/x509/internal/macos.ReleaseCFArray(0x140000beaa8?)
    /usr/local/go/src/crypto/x509/internal/macos/corefoundation.go:204 +0x34 fp=0x140000bea50 sp=0x140000bea20 pc=0x104de45e4
crypto/x509.(*Certificate).systemVerify.func1()
    /usr/local/go/src/crypto/x509/root_darwin.go:14 +0x2c fp=0x140000bea70 sp=0x140000bea50 pc=0x104dedd4c
runtime.deferreturn()
    /usr/local/go/src/runtime/panic.go:436 +0x38 fp=0x140000beab0 sp=0x140000bea70 pc=0x104c97288
crypto/x509.(*Certificate).systemVerify(0x140003d6000, 0x140000bee80)
    /usr/local/go/src/crypto/x509/root_darwin.go:35 +0x30c fp=0x140000bed10 sp=0x140000beab0 pc=0x104ded7bc
crypto/x509.(*Certificate).Verify(0x140003d6000, {{0x140002ec690, 0x13}, 0x140004b7530, 0x0, {0x0, 0x0, 0x0}, {0x0, 0x0, ...}, ...})
    /usr/local/go/src/crypto/x509/verify.go:747 +0x478 fp=0x140000bee70 sp=0x140000bed10 pc=0x104df1798
tailscale.com/net/tlsdial.Config.func1({0x304, 0x0, 0x0, 0x1301, {0x0, 0x0}, 0x1, {0x140002ec690, 0x13}, {0x140006aa2c0, ...}, ...})
    /Users/bmizerany/src/tailscale/net/tlsdial/tlsdial.go:79 +0x168 fp=0x140000befb0 sp=0x140000bee70 pc=0x104f41b88
crypto/tls.(*Conn).verifyServerCertificate(0x1400034c000, {0x14000415c20, 0x4, 0x4})
    /usr/local/go/src/crypto/tls/handshake_client.go:893 +0x3cc fp=0x140000bf240 sp=0x140000befb0 pc=0x104e0bbac
crypto/tls.(*clientHandshakeStateTLS13).readServerCertificate(0x140000bf648)
    /usr/local/go/src/crypto/tls/handshake_client_tls13.go:457 +0x280 fp=0x140000bf450 sp=0x140000bf240 pc=0x104e0e2d0
crypto/tls.(*clientHandshakeStateTLS13).handshake(0x140000bf648)
    /usr/local/go/src/crypto/tls/handshake_client_tls13.go:87 +0x1c0 fp=0x140000bf490 sp=0x140000bf450 pc=0x104e0c6d0
crypto/tls.(*Conn).clientHandshake(0x1400034c000, {0x1054142a0, 0x140004e20c0})
    /usr/local/go/src/crypto/tls/handshake_client.go:219 +0x444 fp=0x140000bf720 sp=0x140000bf490 pc=0x104e08224
crypto/tls.(*Conn).clientHandshake-fm({0x1054142a0?, 0x140004e20c0?})
    :1 +0x40 fp=0x140000bf750 sp=0x140000bf720 pc=0x104e36a30
crypto/tls.(*Conn).handshakeContext(0x1400034c000, {0x1054142d8, 0x140001b4050})
    /usr/local/go/src/crypto/tls/conn.go:1452 +0x3cc fp=0x140000bf830 sp=0x140000bf750 pc=0x104e0689c
crypto/tls.(*Conn).HandshakeContext(...)
    /usr/local/go/src/crypto/tls/conn.go:1402
crypto/tls.(*Conn).Handshake(...)
    /usr/local/go/src/crypto/tls/conn.go:1386
tailscale.com/derp/derphttp.(*Client).connect(0x140006e81e0, {0x1054142a0, 0x140006a6540}, {0x1051a6383, 0x17})
    /Users/bmizerany/src/tailscale/derp/derphttp/derphttp_client.go:374 +0xe78 fp=0x140000bff90 sp=0x140000bf830 pc=0x10501fbb8
tailscale.com/derp/derphttp.(*Client).Connect(...)
    /Users/bmizerany/src/tailscale/derp/derphttp/derphttp_client.go:131
tailscale.com/wgengine/magicsock.(*Conn).derpWriteChanOfAddr.func2()
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1419 +0x44 fp=0x140000bffd0 sp=0x140000bff90 pc=0x10506b044
runtime.goexit()
    /usr/local/go/src/runtime/asm_arm64.s:1259 +0x4 fp=0x140000bffd0 sp=0x140000bffd0 pc=0x104ccaa64
created by tailscale.com/wgengine/magicsock.(*Conn).derpWriteChanOfAddr
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1418 +0xc1c

goroutine 1 [chan receive]:
tailscale.com/tsnet.(*listener).Accept(0x105325e00?)
    /Users/bmizerany/src/tailscale/tsnet/tsnet.go:410 +0x2c
net/http.(*Server).Serve(0x1400034e0e0, {0x105414030, 0x14000280500})
    /usr/local/go/src/net/http/server.go:3039 +0x318
net/http.Serve(...)
    /usr/local/go/src/net/http/server.go:2543
main.main()
    /Users/bmizerany/src/tailscale/tsnet/example/tshello/tshello.go:37 +0x1b0

goroutine 19 [chan receive]:
tailscale.com/net/tstun.(*fakeTUN).Read(0x0?, {0x0?, 0x0?, 0x0?}, 0x0?)
    /Users/bmizerany/src/tailscale/net/tstun/fake.go:38 +0x28
tailscale.com/net/tstun.(*Wrapper).poll(0x140002a4000)
    /Users/bmizerany/src/tailscale/net/tstun/wrap.go:379 +0x160
created by tailscale.com/net/tstun.wrap
    /Users/bmizerany/src/tailscale/net/tstun/wrap.go:200 +0x26c

goroutine 20 [select]:
tailscale.com/net/tstun.(*Wrapper).pumpEvents(0x140002a4000)
    /Users/bmizerany/src/tailscale/net/tstun/wrap.go:278 +0xe8
created by tailscale.com/net/tstun.wrap
    /Users/bmizerany/src/tailscale/net/tstun/wrap.go:201 +0x2b0

goroutine 21 [select]:
golang.zx2c4.com/wireguard/ratelimiter.(*Ratelimiter).Init.func1()
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/ratelimiter/ratelimiter.go:68 +0x8c
created by golang.zx2c4.com/wireguard/ratelimiter.(*Ratelimiter).Init
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/ratelimiter/ratelimiter.go:64 +0x17c

goroutine 22 [semacquire]:
sync.runtime_Semacquire(0x0?)
    /usr/local/go/src/runtime/sema.go:56 +0x2c
sync.(*WaitGroup).Wait(0x140001a0998)
    /usr/local/go/src/sync/waitgroup.go:136 +0x88
golang.zx2c4.com/wireguard/device.newHandshakeQueue.func1()
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/channels.go:68 +0x30
created by golang.zx2c4.com/wireguard/device.newHandshakeQueue
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/channels.go:67 +0xbc

goroutine 23 [semacquire]:
sync.runtime_Semacquire(0x0?)
    /usr/local/go/src/runtime/sema.go:56 +0x2c
sync.(*WaitGroup).Wait(0x140001a09b0)
    /usr/local/go/src/sync/waitgroup.go:136 +0x88
golang.zx2c4.com/wireguard/device.newOutboundQueue.func1()
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/channels.go:32 +0x30
created by golang.zx2c4.com/wireguard/device.newOutboundQueue
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/channels.go:31 +0xbc

goroutine 24 [semacquire]:
sync.runtime_Semacquire(0x0?)
    /usr/local/go/src/runtime/sema.go:56 +0x2c
sync.(*WaitGroup).Wait(0x140001a09c8)
    /usr/local/go/src/sync/waitgroup.go:136 +0x88
golang.zx2c4.com/wireguard/device.newInboundQueue.func1()
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/channels.go:50 +0x30
created by golang.zx2c4.com/wireguard/device.newInboundQueue
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/channels.go:49 +0xbc

goroutine 25 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineEncryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/send.go:375 +0x140
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:314 +0x324

goroutine 26 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineDecryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:211 +0x134
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:315 +0x374

goroutine 27 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineHandshake(0x1400024d680, 0x1)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:243 +0x128
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:316 +0x2b8

goroutine 28 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineEncryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/send.go:375 +0x140
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:314 +0x324

goroutine 29 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineDecryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:211 +0x134
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:315 +0x374

goroutine 30 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineHandshake(0x1400024d680, 0x2)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:243 +0x128
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:316 +0x2b8

goroutine 31 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineEncryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/send.go:375 +0x140
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:314 +0x324

goroutine 32 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineDecryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:211 +0x134
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:315 +0x374

goroutine 33 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineHandshake(0x1400024d680, 0x3)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:243 +0x128
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:316 +0x2b8

goroutine 34 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineEncryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/send.go:375 +0x140
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:314 +0x324

goroutine 35 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineDecryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:211 +0x134
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:315 +0x374

goroutine 36 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineHandshake(0x1400024d680, 0x4)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:243 +0x128
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:316 +0x2b8

goroutine 37 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineEncryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/send.go:375 +0x140
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:314 +0x324

goroutine 38 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineDecryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:211 +0x134
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:315 +0x374

goroutine 39 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineHandshake(0x1400024d680, 0x5)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:243 +0x128
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:316 +0x2b8

goroutine 40 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineEncryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/send.go:375 +0x140
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:314 +0x324

goroutine 41 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineDecryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:211 +0x134
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:315 +0x374

goroutine 42 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineHandshake(0x1400024d680, 0x6)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:243 +0x128
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:316 +0x2b8

goroutine 43 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineEncryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/send.go:375 +0x140
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:314 +0x324

goroutine 44 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineDecryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:211 +0x134
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:315 +0x374

goroutine 45 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineHandshake(0x1400024d680, 0x7)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:243 +0x128
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:316 +0x2b8

goroutine 46 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineEncryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/send.go:375 +0x140
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:314 +0x324

goroutine 47 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineDecryption(0x1400024d680, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:211 +0x134
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:315 +0x374

goroutine 48 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineHandshake(0x1400024d680, 0x8)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:243 +0x128
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:316 +0x2b8

goroutine 49 [chan receive]:
tailscale.com/net/tstun.(*Wrapper).Read(0x140002a4000, {0x14000112000, 0xffff, 0xffff}, 0x10)
    /Users/bmizerany/src/tailscale/net/tstun/wrap.go:495 +0x70
golang.zx2c4.com/wireguard/device.(*Device).RoutineReadFromTUN(0x1400024d680)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/send.go:228 +0xf0
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:321 +0x428

goroutine 50 [chan receive]:
golang.zx2c4.com/wireguard/device.(*Device).RoutineTUNEventReader(0x1400024d680)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/tun.go:20 +0x70
created by golang.zx2c4.com/wireguard/device.NewDevice
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:322 +0x46c

goroutine 51 [chan receive]:
tailscale.com/wgengine.NewUserspaceEngine.func5()
    /Users/bmizerany/src/tailscale/wgengine/userspace.go:401 +0x54
created by tailscale.com/wgengine.NewUserspaceEngine
    /Users/bmizerany/src/tailscale/wgengine/userspace.go:399 +0xf24

goroutine 52 [IO wait]:
internal/poll.runtime_pollWait(0x12ca41f88, 0x72)
    /usr/local/go/src/runtime/netpoll.go:302 +0xa4
internal/poll.(*pollDesc).wait(0x1400029c580?, 0x1400049a000?, 0x0)
    /usr/local/go/src/internal/poll/fd_poll_runtime.go:83 +0x2c
internal/poll.(*pollDesc).waitRead(...)
    /usr/local/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).ReadFromInet4(0x1400029c580, {0x1400049a000, 0xffff, 0xffff}, 0x140001a01b0?)
    /usr/local/go/src/internal/poll/fd_unix.go:250 +0x1a4
net.(*netFD).readFromInet4(0x1400029c580, {0x1400049a000?, 0xffff12e6614a?, 0x36b27e2c158adaed?}, 0x158adaed6920c4ef?)
    /usr/local/go/src/net/fd_posix.go:66 +0x2c
net.(*UDPConn).readFromAddrPort(0x14a61e612?, {0x1400049a000?, 0x14000387ce8?, 0x1050790e8?})
    /usr/local/go/src/net/udpsock_posix.go:78 +0x128
net.(*UDPConn).ReadFromUDPAddrPort(0x140001b00d8, {0x1400049a000?, 0x140001a0138?, 0x12ca9d900?})
    /usr/local/go/src/net/udpsock.go:171 +0x30
tailscale.com/wgengine/magicsock.(*RebindingUDPConn).ReadFromNetaddr(0x14000387dc8?, {0x1400049a000, 0xffff, 0xffff})
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:3032 +0xa8
tailscale.com/wgengine/magicsock.(*Conn).receiveIPv4(0x140001d1600, {0x1400049a000, 0xffff, 0xffff})
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1671 +0xe8
golang.zx2c4.com/wireguard/device.(*Device).RoutineReceiveIncoming(0x1400024d680, 0x14000276560)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:93 +0x150
created by golang.zx2c4.com/wireguard/device.(*Device).BindUpdate
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:513 +0x3a0

goroutine 53 [IO wait]:
internal/poll.runtime_pollWait(0x12ca41e98, 0x72)
    /usr/local/go/src/runtime/netpoll.go:302 +0xa4
internal/poll.(*pollDesc).wait(0x140002cff80?, 0x14000122000?, 0x0)
    /usr/local/go/src/internal/poll/fd_poll_runtime.go:83 +0x2c
internal/poll.(*pollDesc).waitRead(...)
    /usr/local/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).ReadFromInet6(0x140002cff80, {0x14000122000, 0xffff, 0xffff}, 0x14000079bb8?)
    /usr/local/go/src/internal/poll/fd_unix.go:277 +0x1a4
net.(*netFD).readFromInet6(0x140002cff80, {0x14000122000?, 0x0?, 0x134694838?}, 0x14000079bf8?)
    /usr/local/go/src/net/fd_posix.go:72 +0x2c
net.(*UDPConn).readFromAddrPort(0x12c707fff?, {0x14000122000?, 0x14000079ce8?, 0x1050790e8?})
    /usr/local/go/src/net/udpsock_posix.go:85 +0x74
net.(*UDPConn).ReadFromUDPAddrPort(0x140001b00e8, {0x14000122000?, 0x101000000000001?, 0x105bb6290?})
    /usr/local/go/src/net/udpsock.go:171 +0x30
tailscale.com/wgengine/magicsock.(*RebindingUDPConn).ReadFromNetaddr(0x14000079dc8?, {0x14000122000, 0xffff, 0xffff})
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:3032 +0xa8
tailscale.com/wgengine/magicsock.(*Conn).receiveIPv6(0x140001d1600, {0x14000122000, 0xffff, 0xffff})
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1655 +0xe8
golang.zx2c4.com/wireguard/device.(*Device).RoutineReceiveIncoming(0x1400024d680, 0x14000276570)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:93 +0x150
created by golang.zx2c4.com/wireguard/device.(*Device).BindUpdate
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:513 +0x3a0

goroutine 54 [chan receive]:
tailscale.com/wgengine/magicsock.(*connBind).receiveDERP(0x140001a0828, {0x1400048a000, 0xffff, 0xffff})
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1726 +0x104
golang.zx2c4.com/wireguard/device.(*Device).RoutineReceiveIncoming(0x1400024d680, 0x14000276580)
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/receive.go:93 +0x150
created by golang.zx2c4.com/wireguard/device.(*Device).BindUpdate
    /Users/bmizerany/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.0-20220317000134-95b48cdb3961/device/device.go:513 +0x3a0

goroutine 55 [syscall]:
syscall.syscall(0x0?, 0x0?, 0x0?, 0x0?)
    /usr/local/go/src/runtime/sys_darwin.go:22 +0x38
golang.org/x/sys/unix.read(0x1400030cf18?, {0x14000205210?, 0x0?, 0x0?})
    /Users/bmizerany/go/pkg/mod/golang.org/x/sys@v0.0.0-20220315194320-039c03cc5b86/unix/zsyscall_darwin_arm64.go:1750 +0x50
golang.org/x/sys/unix.Read(...)
    /Users/bmizerany/go/pkg/mod/golang.org/x/sys@v0.0.0-20220315194320-039c03cc5b86/unix/syscall_unix.go:157
tailscale.com/wgengine/monitor.(*darwinRouteMon).Receive(0x14000205200)
    /Users/bmizerany/src/tailscale/wgengine/monitor/monitor_darwin.go:55 +0x44
tailscale.com/wgengine/monitor.(*Mon).pump(0x1400026a000)
    /Users/bmizerany/src/tailscale/wgengine/monitor/monitor.go:262 +0x78
created by tailscale.com/wgengine/monitor.(*Mon).Start
    /Users/bmizerany/src/tailscale/wgengine/monitor/monitor.go:202 +0x1e0

goroutine 56 [select]:
tailscale.com/wgengine/monitor.(*Mon).debounce(0x1400026a000)
    /Users/bmizerany/src/tailscale/wgengine/monitor/monitor.go:296 +0x98
created by tailscale.com/wgengine/monitor.(*Mon).Start
    /Users/bmizerany/src/tailscale/wgengine/monitor/monitor.go:203 +0x224

goroutine 57 [select]:
tailscale.com/net/dns/resolver.(*Resolver).NextResponse(0x0?)
    /Users/bmizerany/src/tailscale/net/dns/resolver/tsdns.go:306 +0x88
tailscale.com/net/dns.(*Manager).NextResponse(...)
    /Users/bmizerany/src/tailscale/net/dns/manager.go:212
tailscale.com/wgengine.(*userspaceEngine).pollResolver(0x1400024d400)
    /Users/bmizerany/src/tailscale/wgengine/userspace.go:506 +0x40
created by tailscale.com/wgengine.NewUserspaceEngine
    /Users/bmizerany/src/tailscale/wgengine/userspace.go:434 +0x11a4

goroutine 58 [select]:
gvisor.dev/gvisor/pkg/sync.Gopark(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sync/runtime_unsafe.go:41
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).nextWaker(0x14000269198, 0x1, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:207 +0x8c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).fetch(0x0?, 0x0?, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:253 +0x2c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).Fetch(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:276
gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*processor).start(0x14000269180, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:97 +0x98
created by gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*dispatcher).init
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:164 +0x118

goroutine 59 [select]:
gvisor.dev/gvisor/pkg/sync.Gopark(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sync/runtime_unsafe.go:41
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).nextWaker(0x14000269200, 0x1, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:207 +0x8c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).fetch(0x0?, 0x0?, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:253 +0x2c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).Fetch(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:276
gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*processor).start(0x140002691e8, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:97 +0x98
created by gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*dispatcher).init
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:164 +0x118

goroutine 60 [select]:
gvisor.dev/gvisor/pkg/sync.Gopark(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sync/runtime_unsafe.go:41
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).nextWaker(0x14000269268, 0x1, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:207 +0x8c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).fetch(0x0?, 0x0?, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:253 +0x2c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).Fetch(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:276
gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*processor).start(0x14000269250, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:97 +0x98
created by gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*dispatcher).init
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:164 +0x118

goroutine 61 [select]:
gvisor.dev/gvisor/pkg/sync.Gopark(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sync/runtime_unsafe.go:41
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).nextWaker(0x140002692d0, 0x1, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:207 +0x8c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).fetch(0x0?, 0x0?, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:253 +0x2c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).Fetch(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:276
gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*processor).start(0x140002692b8, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:97 +0x98
created by gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*dispatcher).init
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:164 +0x118

goroutine 62 [select]:
gvisor.dev/gvisor/pkg/sync.Gopark(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sync/runtime_unsafe.go:41
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).nextWaker(0x14000269338, 0x1, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:207 +0x8c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).fetch(0x0?, 0x0?, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:253 +0x2c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).Fetch(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:276
gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*processor).start(0x14000269320, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:97 +0x98
created by gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*dispatcher).init
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:164 +0x118

goroutine 63 [select]:
gvisor.dev/gvisor/pkg/sync.Gopark(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sync/runtime_unsafe.go:41
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).nextWaker(0x140002693a0, 0x1, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:207 +0x8c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).fetch(0x0?, 0x0?, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:253 +0x2c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).Fetch(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:276
gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*processor).start(0x14000269388, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:97 +0x98
created by gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*dispatcher).init
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:164 +0x118

goroutine 64 [select]:
gvisor.dev/gvisor/pkg/sync.Gopark(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sync/runtime_unsafe.go:41
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).nextWaker(0x14000269408, 0x1, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:207 +0x8c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).fetch(0x0?, 0x0?, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:253 +0x2c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).Fetch(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:276
gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*processor).start(0x140002693f0, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:97 +0x98
created by gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*dispatcher).init
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:164 +0x118

goroutine 65 [select]:
gvisor.dev/gvisor/pkg/sync.Gopark(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sync/runtime_unsafe.go:41
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).nextWaker(0x14000269470, 0x1, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:207 +0x8c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).fetch(0x0?, 0x0?, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:253 +0x2c
gvisor.dev/gvisor/pkg/sleep.(*Sleeper).Fetch(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/sleep/sleep_unsafe.go:276
gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*processor).start(0x14000269458, 0x0?)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:97 +0x98
created by gvisor.dev/gvisor/pkg/tcpip/transport/tcp.(*dispatcher).init
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/transport/tcp/dispatcher.go:164 +0x118

goroutine 66 [select]:
gvisor.dev/gvisor/pkg/tcpip/link/channel.(*queue).ReadContext(0x0?, {0x1054142a0?, 0x1400033e0c0?})
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/link/channel/channel.go:71 +0x74
gvisor.dev/gvisor/pkg/tcpip/link/channel.(*Endpoint).ReadContext(...)
    /Users/bmizerany/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20220318082524-536b85ae1a6a/pkg/tcpip/link/channel/channel.go:175
tailscale.com/wgengine/netstack.(*Impl).injectOutbound(0x14000252820)
    /Users/bmizerany/src/tailscale/wgengine/netstack/netstack.go:376 +0x40
created by tailscale.com/wgengine/netstack.(*Impl).Start
    /Users/bmizerany/src/tailscale/wgengine/netstack/netstack.go:213 +0x2f8

goroutine 68 [chan receive]:
tailscale.com/ipn/ipnlocal.(*LocalBackend).readPoller(0x14000342500)
    /Users/bmizerany/src/tailscale/ipn/ipnlocal/local.go:1281 +0x58
created by tailscale.com/ipn/ipnlocal.(*LocalBackend).Start.func1
    /Users/bmizerany/src/tailscale/ipn/ipnlocal/local.go:923 +0xec

goroutine 100 [chan receive]:
tailscale.com/control/controlclient.(*Auto).authRoutine(0x140005a40f0)
    /Users/bmizerany/src/tailscale/control/controlclient/auto.go:294 +0x9f0
created by tailscale.com/control/controlclient.(*Auto).Start
    /Users/bmizerany/src/tailscale/control/controlclient/auto.go:151 +0x64

goroutine 67 [select]:
tailscale.com/portlist.(*Poller).Run(0x1400033e200, {0x1054142a0, 0x1400033e1c0})
    /Users/bmizerany/src/tailscale/portlist/poller.go:77 +0x118
created by tailscale.com/ipn/ipnlocal.(*LocalBackend).Start.func1
    /Users/bmizerany/src/tailscale/ipn/ipnlocal/local.go:922 +0xa8

goroutine 101 [select]:
golang.org/x/net/http2.(*ClientConn).RoundTrip(0x14000528180, 0x140006e4700)
    /Users/bmizerany/go/pkg/mod/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f/http2/transport.go:1172 +0x3b4
golang.org/x/net/http2.(*Transport).RoundTripOpt(0x140005dc900, 0x140006e4700, {0x0?})
    /Users/bmizerany/go/pkg/mod/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f/http2/transport.go:499 +0x1e4
golang.org/x/net/http2.(*Transport).RoundTrip(0x140006a0840?, 0x10540cec8?)
    /Users/bmizerany/go/pkg/mod/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f/http2/transport.go:460 +0x24
net/http.send(0x140006e4700, {0x10540cec8, 0x140005dc900}, {0x104e66540?, 0x8?, 0x0?})
    /usr/local/go/src/net/http/client.go:252 +0x4fc
net/http.(*Client).send(0x140004b79e0, 0x140006e4700, {0x5000?, 0x104ddf7ac?, 0x0?})
    /usr/local/go/src/net/http/client.go:176 +0x9c
net/http.(*Client).do(0x140004b79e0, 0x140006e4700)
    /usr/local/go/src/net/http/client.go:725 +0x6ec
net/http.(*Client).Do(0x1054142a0?, 0x140006a64c0?)
    /usr/local/go/src/net/http/client.go:593 +0x20
tailscale.com/control/controlclient.(*Direct).sendMapRequest(0x140005a0000, {0x1054142a0, 0x140006a6480}, 0xffffffffffffffff, 0x140002cbee8)
    /Users/bmizerany/src/tailscale/control/controlclient/direct.go:760 +0xfc8
tailscale.com/control/controlclient.(*Direct).PollNetMap(...)
    /Users/bmizerany/src/tailscale/control/controlclient/direct.go:615
tailscale.com/control/controlclient.(*Auto).mapRoutine(0x140005a40f0)
    /Users/bmizerany/src/tailscale/control/controlclient/auto.go:462 +0x534
created by tailscale.com/control/controlclient.(*Auto).Start
    /Users/bmizerany/src/tailscale/control/controlclient/auto.go:152 +0xa8

goroutine 70 [select]:
tailscale.com/net/nettest.(*Listener).Accept(0x105325e00?)
    /Users/bmizerany/src/tailscale/net/nettest/listener.go:52 +0x5c
net/http.(*Server).Serve(0x14000524000, {0x105413fd0, 0x1400037e270})
    /usr/local/go/src/net/http/server.go:3039 +0x318
net/http.Serve(...)
    /usr/local/go/src/net/http/server.go:2543
tailscale.com/tsnet.(*Server).start.func4()
    /Users/bmizerany/src/tailscale/tsnet/tsnet.go:265 +0x84
created by tailscale.com/tsnet.(*Server).start
    /Users/bmizerany/src/tailscale/tsnet/tsnet.go:264 +0xe1c

goroutine 130 [IO wait]:
internal/poll.runtime_pollWait(0x12ca41ad8, 0x72)
    /usr/local/go/src/runtime/netpoll.go:302 +0xa4
internal/poll.(*pollDesc).wait(0x140005dca80?, 0x140005380b0?, 0x0)
    /usr/local/go/src/internal/poll/fd_poll_runtime.go:83 +0x2c
internal/poll.(*pollDesc).waitRead(...)
    /usr/local/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0x140005dca80, {0x140005380b0, 0x3, 0x3})
    /usr/local/go/src/internal/poll/fd_unix.go:167 +0x1e4
net.(*netFD).Read(0x140005dca80, {0x140005380b0?, 0x14000538070?, 0x104e3cee8?})
    /usr/local/go/src/net/fd_posix.go:55 +0x2c
net.(*conn).Read(0x140001b0390, {0x140005380b0?, 0x140005efb98?, 0x104f83dbc?})
    /usr/local/go/src/net/net.go:183 +0x38
net/http.(*readWriteCloserBody).Read(0x18?, {0x140005380b0?, 0x14000538070?, 0x104cdf218?})
    /usr/local/go/src/net/http/transport.go:2381 +0xbc
tailscale.com/control/controlhttp.(*wrappedConn).Read(0x140005efb68?, {0x140005380b0?, 0x0?, 0x140005300f0?})
    /Users/bmizerany/src/tailscale/control/controlhttp/client.go:244 +0x30
tailscale.com/control/controlbase.(*Conn).readNLocked(0x14000538000, 0x3)
    /Users/bmizerany/src/tailscale/control/controlbase/conn.go:116 +0xe4
tailscale.com/control/controlbase.(*Conn).decryptOneLocked(0x14000538000)
    /Users/bmizerany/src/tailscale/control/controlbase/conn.go:224 +0x1b4
tailscale.com/control/controlbase.(*Conn).Read(0x14000538000, {0x1400053b000, 0x1000, 0x104f740bc?})
    /Users/bmizerany/src/tailscale/control/controlbase/conn.go:254 +0x144
bufio.(*Reader).Read(0x1400050e540, {0x14000524120, 0x9, 0x104f73a4c?})
    /usr/local/go/src/bufio/bufio.go:236 +0x1e4
io.ReadAtLeast({0x10540ca08, 0x1400050e540}, {0x14000524120, 0x9, 0x9}, 0x9)
    /usr/local/go/src/io/io.go:331 +0xa4
io.ReadFull(...)
    /usr/local/go/src/io/io.go:350
golang.org/x/net/http2.readFrameHeader({0x14000524120?, 0x9?, 0x1400051b950?}, {0x10540ca08?, 0x1400050e540?})
    /Users/bmizerany/go/pkg/mod/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f/http2/frame.go:237 +0x5c
golang.org/x/net/http2.(*Framer).ReadFrame(0x140005240e0)
    /Users/bmizerany/go/pkg/mod/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f/http2/frame.go:498 +0x84
golang.org/x/net/http2.(*clientConnReadLoop).run(0x140005eff88)
    /Users/bmizerany/go/pkg/mod/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f/http2/transport.go:2118 +0x100
golang.org/x/net/http2.(*ClientConn).readLoop(0x14000528180)
    /Users/bmizerany/go/pkg/mod/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f/http2/transport.go:2014 +0x60
created by golang.org/x/net/http2.(*Transport).newClientConn
    /Users/bmizerany/go/pkg/mod/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f/http2/transport.go:725 +0x924

goroutine 127 [select]:
tailscale.com/derp/derphttp.(*Client).connect.func1()
    /Users/bmizerany/src/tailscale/derp/derphttp/derphttp_client.go:258 +0x88
created by tailscale.com/derp/derphttp.(*Client).connect
    /Users/bmizerany/src/tailscale/derp/derphttp/derphttp_client.go:257 +0x1a0

goroutine 155 [IO wait]:
internal/poll.runtime_pollWait(0x12ca41bc8, 0x72)
    /usr/local/go/src/runtime/netpoll.go:302 +0xa4
internal/poll.(*pollDesc).wait(0x140001f4c00?, 0x0?, 0x0)
    /usr/local/go/src/internal/poll/fd_poll_runtime.go:83 +0x2c
internal/poll.(*pollDesc).waitRead(...)
    /usr/local/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Accept(0x140001f4c00)
    /usr/local/go/src/internal/poll/fd_unix.go:614 +0x1d0
net.(*netFD).accept(0x140001f4c00)
    /usr/local/go/src/net/fd_unix.go:172 +0x28
net.(*TCPListener).accept(0x140000a1170)
    /usr/local/go/src/net/tcpsock_posix.go:139 +0x2c
net.(*TCPListener).Accept(0x140000a1170)
    /usr/local/go/src/net/tcpsock.go:288 +0x30
tailscale.com/ipn/ipnlocal.(*peerAPIListener).serve(0x140000a26e0)
    /Users/bmizerany/src/tailscale/ipn/ipnlocal/peerapi.go:465 +0x9c
created by tailscale.com/ipn/ipnlocal.(*LocalBackend).initPeerAPIListener
    /Users/bmizerany/src/tailscale/ipn/ipnlocal/local.go:2304 +0x6dc

goroutine 248 [select]:
tailscale.com/derp/derphttp.(*Client).connect.func3()
    /Users/bmizerany/src/tailscale/derp/derphttp/derphttp_client.go:344 +0x6c
created by tailscale.com/derp/derphttp.(*Client).connect
    /Users/bmizerany/src/tailscale/derp/derphttp/derphttp_client.go:343 +0xdec

goroutine 201 [select]:
tailscale.com/net/portmapper.closeCloserOnContextDone.func2()
    /Users/bmizerany/src/tailscale/net/portmapper/portmapper.go:310 +0x60
created by tailscale.com/net/portmapper.closeCloserOnContextDone
    /Users/bmizerany/src/tailscale/net/portmapper/portmapper.go:309 +0xec

goroutine 120 [select]:
golang.org/x/net/http2.(*clientStream).writeRequest(0x140006ec300, 0x140006e4700)
    /Users/bmizerany/go/pkg/mod/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f/http2/transport.go:1340 +0x810
golang.org/x/net/http2.(*clientStream).doRequest(0x140004fa0d0?, 0x0?)
    /Users/bmizerany/go/pkg/mod/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f/http2/transport.go:1202 +0x24
created by golang.org/x/net/http2.(*ClientConn).RoundTrip
    /Users/bmizerany/go/pkg/mod/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f/http2/transport.go:1131 +0x2f0

goroutine 124 [select]:
tailscale.com/wgengine/magicsock.(*Conn).runDerpWriter(0x140001d1600, {0x1054142a0, 0x140006a6540}, 0x104ccaa64?, 0x140001b2c00, 0x3?, 0x14000182d20)
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1628 +0xa4
created by tailscale.com/wgengine/magicsock.(*Conn).derpWriteChanOfAddr
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1426 +0xdcc

goroutine 123 [select]:
tailscale.com/wgengine/magicsock.(*Conn).runDerpReader(0x140001d1600, {0x1054142a0, 0x140006a6540}, {{{0x0?, 0xffff7f030328?}, 0x140001a01b0?}, 0x2?}, 0x140006e81e0, 0x14000193920?, 0x14000182d20)
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1492 +0xec
created by tailscale.com/wgengine/magicsock.(*Conn).derpWriteChanOfAddr
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1425 +0xd0c

goroutine 210 [select]:
tailscale.com/net/netcheck.(*Client).GetReport(0x140001ce750, {0x105414310, 0x140001b2f00}, 0x14000277200)
    /Users/bmizerany/src/tailscale/net/netcheck/netcheck.go:879 +0x135c
tailscale.com/wgengine/magicsock.(*Conn).updateNetInfo(0x140001d1600, {0x1054142a0, 0x140001d5c40})
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:743 +0x20c
tailscale.com/wgengine/magicsock.(*Conn).determineEndpoints(0x140001d1600, {0x1054142a0, 0x140001d5c40})
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:1035 +0x7c
tailscale.com/wgengine/magicsock.(*Conn).updateEndpoints(0x140001d1600, {0x10519ef1b, 0xe})
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:657 +0x1f8
created by tailscale.com/wgengine/magicsock.(*Conn).updateEndpoints.func1
    /Users/bmizerany/src/tailscale/wgengine/magicsock/magicsock.go:616 +0x17c

goroutine 6 [IO wait]:
internal/poll.runtime_pollWait(0x12ca418f8, 0x72)
    /usr/local/go/src/runtime/netpoll.go:302 +0xa4
internal/poll.(*pollDesc).wait(0x14000348000?, 0x14000138000?, 0x0)
    /usr/local/go/src/internal/poll/fd_poll_runtime.go:83 +0x2c
internal/poll.(*pollDesc).waitRead(...)
    /usr/local/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).ReadFromInet4(0x14000348000, {0x14000138000, 0x5dc, 0x5dc}, 0x1057c02e0?)
    /usr/local/go/src/internal/poll/fd_unix.go:250 +0x1a4
net.(*netFD).readFromInet4(0x14000348000, {0x14000138000?, 0x1400025e8f0?, 0x380?}, 0xc086b5d45c2619b8?)
    /usr/local/go/src/net/fd_posix.go:66 +0x2c
net.(*UDPConn).readFrom(0x14000090000?, {0x14000138000?, 0x0?, 0x105065034?}, 0x140004b6c60)
    /usr/local/go/src/net/udpsock_posix.go:52 +0x148
net.(*UDPConn).readFromUDP(0x140001b0020, {0x14000138000?, 0x14000410030?, 0x1051b3f66?}, 0x140004b6c30?)
    /usr/local/go/src/net/udpsock.go:149 +0x30
net.(*UDPConn).ReadFrom(0x1051b3f66?, {0x14000138000, 0x5dc, 0x5dc})
    /usr/local/go/src/net/udpsock.go:158 +0x50
tailscale.com/net/portmapper.(*Client).Probe(0x140001e77c0, {0x1054142d8, 0x140001b4050})
    /Users/bmizerany/src/tailscale/net/portmapper/portmapper.go:764 +0x7e4
tailscale.com/net/netcheck.(*reportState).probePortMapServices(0x140006b0240)
    /Users/bmizerany/src/tailscale/net/netcheck/netcheck.go:713 +0xbc
created by tailscale.com/net/netcheck.(*Client).GetReport
    /Users/bmizerany/src/tailscale/net/netcheck/netcheck.go:819 +0x7bc

goroutine 9 [chan receive]:
tailscale.com/net/netcheck.(*Client).GetReport.func3({0x140006a1c20?, 0x1?, 0x14000528180?})
    /Users/bmizerany/src/tailscale/net/netcheck/netcheck.go:871 +0x74
created by tailscale.com/net/netcheck.(*Client).GetReport
    /Users/bmizerany/src/tailscale/net/netcheck/netcheck.go:867 +0x110c

r0      0x0
r1      0x0
r2      0x0
r3      0x0
r4      0x0
r5      0x1400058aa50
r6      0x1057f1521
r7      0x1
r8      0x2106db000
r9      0x1ba708061
r10     0x600017d324d4
r11     0x3
r12     0x104de4e90
r13     0x16b682f00
r14     0x0
r15     0x2133c9948
r16     0x105764000
r17     0x1ba314314
r18     0x0
r19     0x14
r20     0x20
r21     0x3c
r22     0xd
r23     0x5a
r24     0xbc7768336e184cda
r25     0x29b2500e1ee89986
r26     0x140000beb78
r27     0x848
r28     0x140005021a0
r29     0x16b682ed0
lr      0x1ba314420
sp      0x16b682ed0
pc      0x1ba4de768
fault   0x1ba4de768
exit status 2

Steps to reproduce

Running Tailscaled 1.22.2 on MacOS:

tshello % tailscaled -version
1.22.2
  tailscale commit: 6f700925cef22d8b2a100840c8d9eb084dadfece
  go version: go1.17.8
  1. Clone repo at a121b9f2639e1fbcd744a9b97bec005c764452a8 (happenes to be the SHA I landed on when cloning today)
  2. Move to tsnet/example/tshello
  3. Run go run tshello.go

Are there any recent changes that introduced the issue?

No response

OS

macOS

OS version

Darwin blaptop.local 21.3.0 Darwin Kernel Version 21.3.0: Wed Jan 5 21:37:58 PST 2022; root:xnu-8019.80.24~20/RELEASE_ARM64_T8101 arm64

Tailscale version

1.22.2

Bug report

BUG-4bd57348bc40af25094c5d7aa1edd8751b48822def1e811633fc4e458032b438-20220323000703Z-6810e1c3785256ee

bradfitz commented 2 years ago

Dup of #4255. You're actually using Go 1.18.0 so you're hitting https://github.com/golang/go/issues/51759

Use Go 1.17.x or Go 1.18.1 when it comes out shortly.

Or if you need to build from our HEAD on macOS, use https://github.com/tailscale/go which contains the fix. Release binaries: https://github.com/tailscale/go/releases

bmizerany commented 2 years ago

Thank you! I did a quick search for tsnet and didn't see that issue. Will be build from source.

bradfitz commented 2 years ago

We've worked around this server-side. You can use Go 1.18.0 on macOS now.

bmizerany commented 2 years ago

Nice!