[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 intodocker:masterfrom
Conversation
|
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??) |
|
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 |
|
Found someone else running into this; dotnet/dotnet-docker#1747
|
|
Checking if seccomp is possibly blocking it; moved the failing step to the |
ffcd375 to
3d3a4e9
Compare
|
If 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
33fa3f3
Compare
|
Thanks; yes, I was glancing over that issue, and would be plausible as well. Just pushed again, because I forgot to set |
|
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) |
|
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?) |
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 |
|
Pushed a commit to check if reinstalling |
131a4b2 to
7a683c9
Compare
|
Reinstall |
7a683c9 to
33fa3f3
Compare
|
Not 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
785b3f9
Compare
|
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
bbb6799
Compare
bbb6799 to
84c5cc6
Compare
|
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 <[email protected]>
Signed-off-by: Sebastiaan van Stijn <[email protected]>
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 <[email protected]>
Signed-off-by: Sebastiaan van Stijn <[email protected]>
3cb4f8a to
dad9c88
Compare
|
Unfortunately, looks like the updated seccomp profile does not address the issue; libseccomp version installed: |
Signed-off-by: Sebastiaan van Stijn <[email protected]>
d23ae31 to
753b029
Compare
Signed-off-by: Sebastiaan van Stijn <[email protected]>
753b029 to
b9ed416
Compare
|
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;
|
|
@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