-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Bad syscall 202 (sys_futex) on instance start with glibc #2044
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
Hello and thank you for raising this issue. I have tried to reproduce it using the standard kernel and rootfs we provide in the docs, building with glibc. Could you please provide the clear configuration steps you took, the kernel and rootfs you used? |
Thank you for looking into this. I can reproduce this with {
"boot-source": {
"kernel_image_path": "hello-vmlinux.bin",
"boot_args": "console=ttyS0 reboot=k panic=1 pci=off quiet i8042.noaux i8042.nomux i8042.nopnp i8042.dumbkbd"
},
"drives": [
{
"drive_id": "rootfs",
"path_on_host": "hello-rootfs.ext4",
"is_root_device": true,
"is_read_only": true
}
],
"machine-config": {
"vcpu_count": 1,
"mem_size_mib": 128,
"ht_enabled": false
}
} I do not use |
The problem with glibc builds is that the seccomp allow list is not reliable as it depends on the version and implementation of libc on the system where Firecracker runs. With that in mind, what libc are you using where you're running Firecracker? Probably the only way to make this work long term with any libc version is to implement #1366 |
I use glibc 2.30, which is also the version |
I upgraded to glibc 2.31 and rebuilt firecracker with that version. That does not seem to change anything at all. |
Hello, as @andreeaflorescu pointed out, the only reliable way to address these seccomp issues with glibc is to implement #1366 , an issue which is currently in research. |
@andreeaflorescu asked for the version, so I thought I'd update the info here ;) Regarding the issue at hand: Is there anything (less-reliable) you can/will do about this? Maybe generating the list of required syscalls at compile-time, i.e. for the version of glibc that firecracker is built with? Is that possible? If your course of action is limited to implementing #1366, I do not see the point in keeping this issue open. Personally I'd prefer if firecracker worked "out-of-the-box", without the user/administrator having to figure out what syscalls to allow. But if that's not feasible for glibc, I'll switch to using the musl builds. |
Thank you for the suggestions. Currently, we decided there is nothing feasible we should do, apart from implementing #1366 . Regarding your suggestion of generating the whitelist at compile-time, this could actually break the intended behaviour of seccomp. I recommend using the musl builds instead of glibc in this case. Are there any reasons you would prefer using glibc? |
Thank you for the information and the reasoning. I would prefer using the glibc build simply because that is what I can easily install and update using the package manager on Gentoo. I already suggested packaging the official musl-builds (gentoo/gentoo#16219). Using someone else's binaries feels somewhat strange on Gentoo, but that seems to be the easiest solution here. |
Thank you for the explanation, I see. I will close this issue for now. |
I built firecracker for glibc and found that it fails on instance start with the following error:
Version: 0.21.1 with #2039 applied
Running
strace firecracker --config-file config.json
gives (last few lines only):Note: The official musl build works, running my glibc build with
--seccomp-level 0
works. So this seems unrelated to my particular rootfs, kernel and config.The text was updated successfully, but these errors were encountered: