Uh oh!
There was an error while loading. Please reload this page.
[do not merge] debug seccomp-related issues on armhf (arm32v7) - #151
[do not merge] debug seccomp-related issues on armhf (arm32v7)#151thaJeztah wants to merge 6 commits into
Conversation
thaJeztah
commented
Mar 24, 2020
Hm.. failure on arm64; |
Something to do with insufficient permissions when running tar? https://superuser.com/questions/1219214/permissions-cannot-be-restored-for-a-tar (Though everything is generally run as root in Docker, so... trying to write to a read-only or locked filesystem/directory??) |
thaJeztah
commented
Mar 24, 2020
Yeah, thinking either (e.g.) seccomp blocking something, or perhaps an issue with overlayfs or the backing filesystem. Let me push a commit to debug |
thaJeztah
commented
Mar 24, 2020
Found someone else running into this; dotnet/dotnet-docker#1747
|
thaJeztah
commented
Mar 24, 2020
Checking if seccomp is possibly blocking it; moved the failing step to the |
ffcd375 to
3d3a4e9CompareIf not seccomp-related, this tracks pretty closely with what people are reporting in: https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1867431 This was a recent gnarly packaging issue where the absolute path of a shared object ( Per this comment:
Edit to add, from this later comment:
|
3d3a4e9 to
33fa3f3ComparethaJeztah
commented
Mar 24, 2020
Thanks; yes, I was glancing over that issue, and would be plausible as well. Just pushed again, because I forgot to set |
thaJeztah
commented
Mar 24, 2020
OK, so the good news is that with seccomp disabled it works (so at least narrowed down where to look for). The "bad" news is that we now need to figure out what's blocked, and if installing the package is making different syscalls (and if those should be either "not blocked", or if the package needs changing) |
thaJeztah
commented
Mar 24, 2020
For posterity; the failure occurred on; a |
I'm unfamiliar with seccomp, TBH, but does something like this fix it? ETA: (Maybe trying to delete a file that's not actually in the package runs afoul of seccomp?) |
thaJeztah
commented
Mar 24, 2020
The seccomp feature uses a whitelist of syscalls that a process (container in this case) can make. Any syscall that is not whitelisted will be blocked (thus making the container more secure). Chatting with a colleague, it's possible that new syscalls were added for 32 bit platforms that are not yet included in either |
thaJeztah
commented
Mar 24, 2020
Pushed a commit to check if reinstalling |
131a4b2 to
7a683c9ComparethaJeztah
commented
Mar 24, 2020
Reinstall |
7a683c9 to
33fa3f3CompareNot sure if this is helpful, but there are things here that sound related. From the changelog for
Particularly the point about changing syscalls on ARM.
|
6cada01 to
785b3f9CompareDeeDeeG
commented
Mar 24, 2020
One last thought: If your CI's base image can be updated to a more recent image of focal, with recent When I check in the latest focal image, Though admittedly I am doing this with an amd64 host and image, so maybe this problem isn't solved in the latest ARM images/maybe the ARM images failed to update due to this issue? |
785b3f9 to
bbb6799Comparebbb6799 to
84c5cc6ComparethaJeztah
commented
Mar 25, 2020
Gonna use this PR for debugging the issue only, and opened #152 to add Ubuntu 20.04, but skipping arm32 for now |
…ending fix" This reverts commit e406392. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Moved this step to the docker run, instead of docker build, so that we run it without seccomp enabled Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
3cb4f8a to
dad9c88CompareUnfortunately, looks like the updated seccomp profile does not address the issue; libseccomp version installed: |
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
d23ae31 to
753b029CompareSigned-off-by: Sebastiaan van Stijn <github@gone.nl>
753b029 to
b9ed416ComparethaJeztah
commented
Mar 25, 2020
ok; "success" - the problem is solved when installing libseccomp 2.4.3. Unfortunately, that version is not available on Ubuntu versions < 20.03 (https://packages.ubuntu.com/search?keywords=libseccomp2). So for debugging, I installed the package from the ubuntu 20.03 repository. What it comes down to; The container we're running (ubuntu:20.03) makes a syscall that's introduced in Linux 5.x, but docker in this case is running on a 4.x kernel (the host is Ubuntu 16.04). The version of libseccomp installed on the host is not taking kernel 5.x syscalls into account, receives an error, and (likely) in that case blocks the syscall. Solutions for this would be to;
|
mthalman
commented
Jul 1, 2020
@thaJeztah - Have you managed to resolve this now that an updated version of libseccomp has been released? My Docker host machine is running Ubuntu Xenial and it has libseccomp (2.4.3-1ubuntu3.16.04.2) installed but is still running into this |
Carrying #142, because Jenkins doesn't run with updated changes unless the author has write access