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

isGSOSupported incorrect value on some Android devices #4446

Closed
requilence opened this issue Apr 19, 2024 · 1 comment · Fixed by #4456
Closed

isGSOSupported incorrect value on some Android devices #4446

requilence opened this issue Apr 19, 2024 · 1 comment · Fixed by #4456
Labels
Milestone

Comments

@requilence
Copy link

requilence commented Apr 19, 2024

I was debugging issues with slow (or completely stuck) streams on some Android devices that we are experiencing with quic-go in production on anytype. After disabling UDP optimizations by using basicConn, the problems were resolved, so I began investigating different syscalls in sys_conn_oob.go.

isGSOSupported returns true on the problematic device, so I tried to disable it by setting the OS environment variable QUIC_GO_DISABLE_GSO=1, and it helped. According to the Linux manual pages, the UDP_SEGMENT socket option may return 0 if it is disabled. Currently, in the Linux implementation, only the error is checked. This check only verifies whether the Linux kernel recognizes this socket option (kernels >=4.18 should recognize it). The Android device I tested has a kernel version of 4.14.180-perf+, but it appears to recognize this socket option and returns 0.

Also there are no errors on writePacket, so isGSOError is never called.

More device info:

Model: OnePlus 7 Pro (GM1913)
Android version: 12
Kernel version: 4.14.180-perf+
RAM: 8GB
Processor: Qualcomm Snapdragon 855 Octa-core
@requilence
Copy link
Author

May be also related to this issue #4169

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
2 participants