Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

crypto: boringcrypto cgo pointer failures #55318

Open
gopherbot opened this issue Sep 21, 2022 · 4 comments
Open

crypto: boringcrypto cgo pointer failures #55318

gopherbot opened this issue Sep 21, 2022 · 4 comments
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Milestone

Comments

@gopherbot
Copy link

gopherbot commented Sep 21, 2022

#!watchflakes
post <- builder ~ `boringcrypto` && `cgo argument has Go pointer to Go pointer`

Issue created automatically to collect these failures.

Example (log):

--- FAIL: TestVersion (0.00s)
panic: runtime error: cgo argument has Go pointer to Go pointer [recovered]
	panic: runtime error: cgo argument has Go pointer to Go pointer

goroutine 488 [running]:
panic({0x3af200, 0x40002fc4c0})
	/workdir/go/src/runtime/panic.go:987 +0x3e0 fp=0x4000400f60 sp=0x4000400ea0 pc=0x12e190
testing.tRunner.func1.2({0x3af200, 0x40002fc4c0})
	/workdir/go/src/testing/testing.go:1396 +0x1c8 fp=0x4000401010 sp=0x4000400f60 pc=0x1d7308
testing.tRunner.func1()
...
crypto/tls.TestVersion(0x40002a04e0)
	/workdir/go/src/crypto/tls/handshake_server_test.go:390 +0xc4 fp=0x4000401f60 sp=0x4000401c30 pc=0x3317c4
testing.tRunner(0x40002a04e0, 0x436b00)
	/workdir/go/src/testing/testing.go:1446 +0x10c fp=0x4000401fb0 sp=0x4000401f60 pc=0x1d6a3c
testing.(*T).Run.func1()
	/workdir/go/src/testing/testing.go:1493 +0x2c fp=0x4000401fd0 sp=0x4000401fb0 pc=0x1d777c
runtime.goexit()
	/workdir/go/src/runtime/asm_arm64.s:1165 +0x4 fp=0x4000401fd0 sp=0x4000401fd0 pc=0x1617a4
created by testing.(*T).Run
	/workdir/go/src/testing/testing.go:1493 +0x328

watchflakes

@gopherbot gopherbot added the NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. label Sep 21, 2022
@gopherbot
Copy link
Author

Found new dashboard test flakes for:

#!watchflakes
post <- pkg == "crypto/tls" && test == "TestVersion"
2022-08-18 21:54 linux-arm64-boringcrypto go@17211c35 crypto/tls.TestVersion (log)
--- FAIL: TestVersion (0.00s)
panic: runtime error: cgo argument has Go pointer to Go pointer [recovered]
	panic: runtime error: cgo argument has Go pointer to Go pointer

goroutine 488 [running]:
panic({0x3af200, 0x40002fc4c0})
	/workdir/go/src/runtime/panic.go:987 +0x3e0 fp=0x4000400f60 sp=0x4000400ea0 pc=0x12e190
testing.tRunner.func1.2({0x3af200, 0x40002fc4c0})
	/workdir/go/src/testing/testing.go:1396 +0x1c8 fp=0x4000401010 sp=0x4000400f60 pc=0x1d7308
testing.tRunner.func1()
...
crypto/tls.TestVersion(0x40002a04e0)
	/workdir/go/src/crypto/tls/handshake_server_test.go:390 +0xc4 fp=0x4000401f60 sp=0x4000401c30 pc=0x3317c4
testing.tRunner(0x40002a04e0, 0x436b00)
	/workdir/go/src/testing/testing.go:1446 +0x10c fp=0x4000401fb0 sp=0x4000401f60 pc=0x1d6a3c
testing.(*T).Run.func1()
	/workdir/go/src/testing/testing.go:1493 +0x2c fp=0x4000401fd0 sp=0x4000401fb0 pc=0x1d777c
runtime.goexit()
	/workdir/go/src/runtime/asm_arm64.s:1165 +0x4 fp=0x4000401fd0 sp=0x4000401fd0 pc=0x1617a4
created by testing.(*T).Run
	/workdir/go/src/testing/testing.go:1493 +0x328

watchflakes

@rsc rsc changed the title crypto/tls: TestVersion failures crypto: boringcrypto cgo pointer failures Sep 21, 2022
@rsc
Copy link
Contributor

rsc commented Sep 21, 2022

Changed to track boringcrypto pointer failures. I think they're over but I don't remember fixing them.

@gopherbot
Copy link
Author

Found new dashboard test flakes for:

#!watchflakes
post <- builder ~ `boringcrypto` && `cgo argument has Go pointer to Go pointer`
2022-08-17 18:37 linux-amd64-boringcrypto crypto@04dced17 go@57d05512 x/crypto/internal/wycheproof.TestHkdf (log)
--- FAIL: TestHkdf (0.02s)
panic: runtime error: cgo argument has Go pointer to Go pointer [recovered]
	panic: runtime error: cgo argument has Go pointer to Go pointer

goroutine 1732 [running]:
testing.tRunner.func1.2({0x740ea0, 0xc00006ecb0})
	/workdir/go/src/testing/testing.go:1396 +0x24e
testing.tRunner.func1()
	/workdir/go/src/testing/testing.go:1399 +0x39f
panic({0x740ea0, 0xc00006ecb0})
	/workdir/go/src/runtime/panic.go:884 +0x212
crypto/internal/boring.(*boringHMAC).Reset.func1(0xc000479c20)
	/workdir/go/src/crypto/internal/boring/hmac.go:107 +0x57
crypto/internal/boring.(*boringHMAC).Reset(0xc000479c20)
	/workdir/go/src/crypto/internal/boring/hmac.go:107 +0x94
crypto/internal/boring.NewHMAC(0xc000641b88?, {0xc000024d20, 0x38, 0x0?})
	/workdir/go/src/crypto/internal/boring/hmac.go:79 +0x125
crypto/hmac.New(0xc000641cd8, {0xc000024d20, 0x38, 0x70})
	/workdir/go/src/crypto/hmac/hmac.go:131 +0x31
golang.org/x/crypto/hkdf.Extract(0xc00044bc20?, {0xc000476a00, 0x20, 0x40}, {0xc000024d20?, 0x20?, 0x30?})
	/workdir/gopath/src/golang.org/x/crypto/hkdf/hkdf.go:30 +0x85
golang.org/x/crypto/hkdf.New(0x15?, {0xc000476a00?, 0x20?, 0x82d248?}, {0xc000024d20?, 0xc000057ca0?, 0x5c57f9?}, {0xc00044bc20, 0x14, 0x30})
	/workdir/gopath/src/golang.org/x/crypto/hkdf/hkdf.go:91 +0x2b
golang.org/x/crypto/internal/wycheproof.TestHkdf(0xc000600820)
	/workdir/gopath/src/golang.org/x/crypto/internal/wycheproof/hkdf_test.go:95 +0x450
testing.tRunner(0xc000600820, 0x792668)
	/workdir/go/src/testing/testing.go:1446 +0x10b
created by testing.(*T).Run
	/workdir/go/src/testing/testing.go:1493 +0x35f
2022-08-17 18:37 linux-amd64-boringcrypto crypto@04dced17 go@ebda5a73 x/crypto/internal/wycheproof.TestHkdf (log)
--- FAIL: TestHkdf (0.00s)
panic: runtime error: cgo argument has Go pointer to Go pointer [recovered]
	panic: runtime error: cgo argument has Go pointer to Go pointer

goroutine 879 [running]:
testing.tRunner.func1.2({0x740ea0, 0xc00014f2b0})
	/workdir/go/src/testing/testing.go:1396 +0x24e
testing.tRunner.func1()
	/workdir/go/src/testing/testing.go:1399 +0x39f
panic({0x740ea0, 0xc00014f2b0})
	/workdir/go/src/runtime/panic.go:884 +0x212
crypto/internal/boring.(*boringHMAC).Reset.func1(0xc0001efd40)
	/workdir/go/src/crypto/internal/boring/hmac.go:107 +0x57
crypto/internal/boring.(*boringHMAC).Reset(0xc0001efd40)
	/workdir/go/src/crypto/internal/boring/hmac.go:107 +0x94
crypto/internal/boring.NewHMAC(0xc000173b88?, {0xc0003ebb90, 0x41, 0x0?})
	/workdir/go/src/crypto/internal/boring/hmac.go:79 +0x125
crypto/hmac.New(0xc000173cd8, {0xc0003ebb90, 0x41, 0x90})
	/workdir/go/src/crypto/hmac/hmac.go:131 +0x31
golang.org/x/crypto/hkdf.Extract(0xc0001cd410?, {0xc0001cd3e0, 0x14, 0x30}, {0xc0003ebb90?, 0x20?, 0x30?})
	/workdir/gopath/src/golang.org/x/crypto/hkdf/hkdf.go:30 +0x85
golang.org/x/crypto/hkdf.New(0x13?, {0xc0001cd3e0?, 0x20?, 0x82d248?}, {0xc0003ebb90?, 0xc00037b4a0?, 0x5c57f9?}, {0xc0001cd410, 0x14, 0x30})
	/workdir/gopath/src/golang.org/x/crypto/hkdf/hkdf.go:91 +0x2b
golang.org/x/crypto/internal/wycheproof.TestHkdf(0xc00042a1a0)
	/workdir/gopath/src/golang.org/x/crypto/internal/wycheproof/hkdf_test.go:95 +0x450
testing.tRunner(0xc00042a1a0, 0x792648)
	/workdir/go/src/testing/testing.go:1446 +0x10b
created by testing.(*T).Run
	/workdir/go/src/testing/testing.go:1493 +0x35f

watchflakes

@seankhliao seankhliao added this to the Unplanned milestone Nov 19, 2022
@DeeptimanQlik
Copy link

DeeptimanQlik commented Jan 5, 2024

Changed to track boringcrypto pointer failures. I think they're over but I don't remember fixing them.

@rsc We are started to seeing the cgo pointer failures with boringcrypto recently. Any plan to fix this issue?

panic: runtime error: cgo argument has Go pointer to unpinned Go pointer

goroutine 1 [running]:
solace.dev/go/messaging/internal/ccsmp.(*SolClientContext).SolClientSessionCreate.func1.1(0x7f76c6d08a68?, 0x30?, 0xc000600400?, 0xc000226de0?)
/go/src/example/vendor/solace.dev/go/messaging/internal/ccsmp/ccsmp_core.go:265 
+0x51solace.dev/go/messaging/internal/ccsmp.(*SolClientContext).SolClientSessionCreate.func1()
/go/src/example/vendor/solace.dev/go/messaging/internal/ccsmp/ccsmp_core.go:265 +0x25

The internal library solace uses a CGO function with //go:cgo_unsafe_args directives. And this is causing the runtime error with boringcrypto.

And this Unpinned pointer runtime error only happens when we try to enable GOEXPERIMENT=boringcrypto in the application.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Projects
Status: Active
Development

No branches or pull requests

4 participants