-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
GSO handling causes data race #4228
Comments
Actual data race happens when accessing sconn.gotGSOError. Changing its' type to |
Thanks for reporting. Changing the type of |
Affected as well (I initially thought it was a data race like #4303 - however even when disabling 0-RTT, the data race appears sometime).
I have run it a couple of times with a simple test of mine and apparently the GSOError does not appear on the first write (in the following example it appears on the 7th):
With such an execution trace, I see two possible solutions:
type Connection interface {
// ...
// ConnectionState returns information about the TLS connection state
ConnectionState() tls.ConnectionState
// QuicState returns basic details about the QUIC connection.
// Warning: This API should not be considered stable and might change soon.
QuicState() QuicState
// ...
} I would be willing to draft a PR to address this. |
Interesting! What system are you running on?
This wouldn't solve the race, it would just hide it, right? |
Arch Linux. Investigating a bit more, the GSOError happens at the first GSO packet (which is the 7th). The first 6 packets have
I think this would solve the race because it happens during the So nothing outside of the library should be able to call |
Hi! I would like to report an issue. Key to reproduction is to have GSO not working in the system. This can be simulated with:
Then running such
main.go
application:results in such output when executed with
-race
:The text was updated successfully, but these errors were encountered: