Closed
Description
On macOS, on an M1 Mac running macOS 12.3 and Go 1.18, crypto/x509.(*Certificate).Verify
crashes:
SIGTRAP: trace trap
PC=0x197f52664 m=13 sigcode=0
goroutine 0 [idle]:
crypto/x509/internal/macos.syscall(0x14000200480?, 0x140002329f0?, 0x1400024ca68?, 0x1001f770c?, 0x1400024ca38?, 0x100341f84?, 0x10091c100?)
/Users/bradfitz/sdk/go1.18/src/runtime/sys_darwin.go:99 +0x40 fp=0x1400024c9d0 sp=0x1400024c970 pc=0x100228880
crypto/x509/internal/macos.CFRelease(0x140002329f0?)
/Users/bradfitz/sdk/go1.18/src/crypto/x509/internal/macos/corefoundation.go:152 +0x44 fp=0x1400024ca20 sp=0x1400024c9d0 pc=0x100341bb4
crypto/x509/internal/macos.ReleaseCFArray(0x1400024caa8?)
/Users/bradfitz/sdk/go1.18/src/crypto/x509/internal/macos/corefoundation.go:204 +0x34 fp=0x1400024ca50 sp=0x1400024ca20 pc=0x100341e24
crypto/x509.(*Certificate).systemVerify.func1()
/Users/bradfitz/sdk/go1.18/src/crypto/x509/root_darwin.go:14 +0x2c fp=0x1400024ca70 sp=0x1400024ca50 pc=0x10034b58c
runtime.deferreturn()
/Users/bradfitz/sdk/go1.18/src/runtime/panic.go:436 +0x38 fp=0x1400024cab0 sp=0x1400024ca70 pc=0x1001f7718
crypto/x509.(*Certificate).systemVerify(0x14000474000, 0x1400024ce80)
/Users/bradfitz/sdk/go1.18/src/crypto/x509/root_darwin.go:35 +0x30c fp=0x1400024cd10 sp=0x1400024cab0 pc=0x10034affc
crypto/x509.(*Certificate).Verify(0x14000474000, {{0x14000036408, 0x14}, 0x140005e4750, 0x0, {0x0, 0x0, 0x0}, {0x0, 0x0, ...}, ...})
/Users/bradfitz/sdk/go1.18/src/crypto/x509/verify.go:747 +0x478 fp=0x1400024ce70 sp=0x1400024cd10 pc=0x10034efd8
tailscale.com/net/tlsdial.Config.func1({0x304, 0x0, 0x0, 0x1301, {0x0, 0x0}, 0x1, {0x14000036408, 0x14}, {0x140002382e0, ...}, ...})
/Users/bradfitz/src/tailscale.com/net/tlsdial/tlsdial.go:79 +0x168 fp=0x1400024cfb0 sp=0x1400024ce70 pc=0x1004894c8
crypto/tls.(*Conn).verifyServerCertificate(0x1400017ce00, {0x1400010fec0, 0x4, 0x4})
/Users/bradfitz/sdk/go1.18/src/crypto/tls/handshake_client.go:893 +0x3cc fp=0x1400024d240 sp=0x1400024cfb0 pc=0x10036763c
crypto/tls.(*clientHandshakeStateTLS13).readServerCertificate(0x1400024d648)
/Users/bradfitz/sdk/go1.18/src/crypto/tls/handshake_client_tls13.go:457 +0x280 fp=0x1400024d450 sp=0x1400024d240 pc=0x100369d60
crypto/tls.(*clientHandshakeStateTLS13).handshake(0x1400024d648)
/Users/bradfitz/sdk/go1.18/src/crypto/tls/handshake_client_tls13.go:87 +0x1c0 fp=0x1400024d490 sp=0x1400024d450 pc=0x100368160
crypto/tls.(*Conn).clientHandshake(0x1400017ce00, {0x1009bb0a0, 0x1400036e600})
/Users/bradfitz/sdk/go1.18/src/crypto/tls/handshake_client.go:219 +0x444 fp=0x1400024d720 sp=0x1400024d490 pc=0x100363cb4
crypto/tls.(*Conn).clientHandshake-fm({0x1009bb0a0?, 0x1400036e600?})
<autogenerated>:1 +0x40 fp=0x1400024d750 sp=0x1400024d720 pc=0x100386640
crypto/tls.(*Conn).handshakeContext(0x1400017ce00, {0x1009bb0d8, 0x1400003c080})
/Users/bradfitz/sdk/go1.18/src/crypto/tls/conn.go:1452 +0x3cc fp=0x1400024d830 sp=0x1400024d750 pc=0x10036232c
crypto/tls.(*Conn).HandshakeContext(...)
/Users/bradfitz/sdk/go1.18/src/crypto/tls/conn.go:1402
crypto/tls.(*Conn).Handshake(...)
/Users/bradfitz/sdk/go1.18/src/crypto/tls/conn.go:1386
tailscale.com/derp/derphttp.(*Client).connect(0x14000470000, {0x1009bb0a0, 0x140003de340}, {0x10073b067, 0x17})
/Users/bradfitz/src/tailscale.com/derp/derphttp/derphttp_client.go:374 +0xe78 fp=0x1400024df90 sp=0x1400024d830 pc=0x10048b218
tailscale.com/derp/derphttp.(*Client).Connect(...)
/Users/bradfitz/src/tailscale.com/derp/derphttp/derphttp_client.go:131
tailscale.com/wgengine/magicsock.(*Conn).derpWriteChanOfAddr.func2()
/Users/bradfitz/src/tailscale.com/wgengine/magicsock/magicsock.go:1421 +0x44 fp=0x1400024dfd0 sp=0x1400024df90 pc=0x1005d5674
runtime.goexit()
/Users/bradfitz/sdk/go1.18/src/runtime/asm_arm64.s:1259 +0x4 fp=0x1400024dfd0 sp=0x1400024dfd0 pc=0x10022b9a4
created by tailscale.com/wgengine/magicsock.(*Conn).derpWriteChanOfAddr
/Users/bradfitz/src/tailscale.com/wgengine/magicsock/magicsock.go:1420 +0xc1c
/cc @rolandshoemaker @FiloSottile @ianlancetaylor @josharian
Metadata
Metadata
Assignees
Type
Projects
Relationships
Development
No branches or pull requests
Activity
bradfitz commentedon Mar 17, 2022
Minimal repro:
bradfitz commentedon Mar 17, 2022
Interestingly,
https://google.com
works. So something about the cert? Lack of OCSP stapling? (it was made with autocert)AGWA commentedon Mar 17, 2022
I see that
https://derp10.tailscale.com
is serving an extra self-signed certificate at the end of its chain with a subject ofCN = derpkey8dc58100b2493614ee1692831a461f3f4dd3f9b3b088e244f887f81b4906ac26
- maybe that's triggering the crash?bradfitz commentedon Mar 17, 2022
@AGWA, ah, right! We send that along to clients to save an RTT.
moderation commentedon Mar 17, 2022
Same here
josharian commentedon Mar 17, 2022
Brad and I have a diagnosis, working on a fix and test. They'll be ready soon.
gopherbot commentedon Mar 17, 2022
Change https://go.dev/cl/393655 mentions this issue:
crypto/x509: fix Certificate.Verify crash
josharian commentedon Mar 17, 2022
@bradfitz
[tailscale1.18] crypto/x509: fix Certificate.Verify crash
cmd/tailscaled: fail early with nice error on macOS with go1.18
cmd/tailscaled: fail early with nice error on macOS with go1.18
cmd/tailscaled: fail early with nice error on macOS with go1.18
bradfitz commentedon Mar 17, 2022
@gopherbot please consider this for backport to 1.18, it's a regression
18 remaining items
chore: bump go to 1.18.1
chore: bump go to 1.17.9
chore: bump go to 1.17.9
chore: bump go to 1.17.9
chore: bump go to 1.18.1
chore: bump go to 1.18.1
crypto/x509: fix Certificate.Verify crash