-
Notifications
You must be signed in to change notification settings - Fork 17.6k
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
net: Panics in TCP/UDP with Go 1.23 due to IPv6 link-local zone mishandling #69397
Comments
I wonder whether this might be related to the |
Please show us the full panic message, so that we can see the addresses involved. Thanks. CC @mknyszek |
Sure thing. The sanitized version is roughly this: The target address was specified as
|
Thanks. I was really hoping to see the address. I would expect the output to start with something like
Do you see anything like that "signal SIGSEGV" line? |
@ianlancetaylor Ah, sorry, this panic was caught by our goroutine recover() and did not crash the process (vs a runtime panic). There is no SEGV or similar as a result, the trace above is via the recover() error print with a debug.Stack() dump. |
Ah, OK, thanks. |
I agree that this must be somehow related to the way that net/netip uses the unique package in 1.23. |
I agree with @ianlancetaylor's assessment. I suspect this is related to #69210 whose fix will be in Go 1.23.2. Is there any chance you could try at tip-of-tree? If you're still seeing failures even so, I'm happy to help narrow them down. |
@mknyszek thanks! so far we are only seeing in a very small percentage of cases in customer environments; we may not be able to use a tip build, but i will keep trying to come up with a minimal reproducer |
Thanks. For the record, I think the failure mode in #69210 is a direct result of using the |
Go version
go 1.23.1 linux/amd64
Output of
go env
in your module/workspace:What did you do?
In an application that makes many TCP connections and sends many UDP packets, some of which target link-local IPv6 destinations, two panics started to appear with Go 1.23.
What did you see happen?
UDP sockets:
The net.dtoi() code:
TCP sockets:
Both issues occur infrequently (2-3 times a day with millions of connections/day) and seem related to the IPv6 link-local zone cache.
What did you expect to see?
No panics
The text was updated successfully, but these errors were encountered: