-
-
Notifications
You must be signed in to change notification settings - Fork 402
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
recvmmsg
is disallowed by seccomp on Android x86
#1947
Comments
That's a weird one. Can we push for a fix upstream? Bearing mind that we'll need to work around the issue on older devices anyway. |
By upstream, do you mean Android? If so, Android 13 is from 2022 so I'm assuming they'll be reluctant to put in fixes like this. |
Right.
I couldn't guess either way, but it's not clear from the description if this has already been fixed in newer Android versions. Would be nice to make things less bad in the future, if not. |
Intuitively I don't expect that such a pervasive change to a systems default For comparison, next to
As far as I can tell, it is not fixed in the most recent Android version, that is Android 14. See |
With #1966 merged and released, this is fixed. 😮💨 As always, thank you for your help Dirkjan and Benjamin! |
…ply-chain-reviewers,sunil https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were prohibited by seccomp on Android x86. See https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp tracking issue: quinn-rs/quinn#1947 and upstream quinn-udp fix: quinn-rs/quinn#1966 Now that the upstream fix is merged and released, this commit upgrads neqo_glue to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used on Android x86 Firefox Nightly. Thus this commit also removes the conditional around the `network.http.http3.use_nspr_for_io` pref. Differential Revision: https://phabricator.services.mozilla.com/D220890
…ply-chain-reviewers,sunil https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were prohibited by seccomp on Android x86. See https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp tracking issue: quinn-rs/quinn#1947 and upstream quinn-udp fix: quinn-rs/quinn#1966 Now that the upstream fix is merged and released, this commit upgrads neqo_glue to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used on Android x86 Firefox Nightly. Thus this commit also removes the conditional around the `network.http.http3.use_nspr_for_io` pref. Differential Revision: https://phabricator.services.mozilla.com/D220890 UltraBlame original commit: 768c0cdc9453e75f3adca22194c725f78d314cf2
…ply-chain-reviewers,sunil https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were prohibited by seccomp on Android x86. See https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp tracking issue: quinn-rs/quinn#1947 and upstream quinn-udp fix: quinn-rs/quinn#1966 Now that the upstream fix is merged and released, this commit upgrads neqo_glue to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used on Android x86 Firefox Nightly. Thus this commit also removes the conditional around the `network.http.http3.use_nspr_for_io` pref. Differential Revision: https://phabricator.services.mozilla.com/D220890 UltraBlame original commit: 768c0cdc9453e75f3adca22194c725f78d314cf2
…ply-chain-reviewers,sunil https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were prohibited by seccomp on Android x86. See https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp tracking issue: quinn-rs/quinn#1947 and upstream quinn-udp fix: quinn-rs/quinn#1966 Now that the upstream fix is merged and released, this commit upgrads neqo_glue to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used on Android x86 Firefox Nightly. Thus this commit also removes the conditional around the `network.http.http3.use_nspr_for_io` pref. Differential Revision: https://phabricator.services.mozilla.com/D220890 UltraBlame original commit: 768c0cdc9453e75f3adca22194c725f78d314cf2
…ply-chain-reviewers,sunil https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were prohibited by seccomp on Android x86. See https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp tracking issue: quinn-rs/quinn#1947 and upstream quinn-udp fix: quinn-rs/quinn#1966 Now that the upstream fix is merged and released, this commit upgrads neqo_glue to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used on Android x86 Firefox Nightly. Thus this commit also removes the conditional around the `network.http.http3.use_nspr_for_io` pref. Differential Revision: https://phabricator.services.mozilla.com/D220890
…ply-chain-reviewers,sunil https://bugzilla.mozilla.org/show_bug.cgi?id=1910360 replaced NSPR with quinn-udp for HTTP3 QUIC UDP IO on Firefox Nightly. Calls to `recvmmsg` were prohibited by seccomp on Android x86. See https://bugzilla.mozilla.org/show_bug.cgi?id=1910594, upstream quinn-udp tracking issue: quinn-rs/quinn#1947 and upstream quinn-udp fix: quinn-rs/quinn#1966 Now that the upstream fix is merged and released, this commit upgrads neqo_glue to use quinn-udp `v0.5.6`. In addition, given the fix, quinn-udp can now be used on Android x86 Firefox Nightly. Thus this commit also removes the conditional around the `network.http.http3.use_nspr_for_io` pref. Differential Revision: https://phabricator.services.mozilla.com/D220890
What happened
We attempted switching Firefox Nightly to use
quinn-udp
for QUIC UDP I/O by default recently, though we had to roll back due to an error on Android x86. Investigating further, it seems like seccomp on Android x86 disallowssendmsg
andrecvmmsg
. All details are in Bugzilla Bug 1910594 and 1910360.Reasoning
Looking at e.g. Android 13's
SYSCALLS.TXT
we can see support forsendmsg
andrecvmmsg
on 64bit (lp64
) and ARM:While on x86, only the indirect calls through
socketcall
are allowed:Potential Solution
libuv
has faced the same issue (see libuv/libuv#2923). On x86 they use the indirect syscalls throughsocketcall
(see libuv/libuv#2925).Historical context
The above might be due to historical reasons:
https://man7.org/linux/man-pages/man2/socketcall.2.html
I still have to investigate a bit before proposing a fix. Opening this issue early to track progress.
The text was updated successfully, but these errors were encountered: