-
Notifications
You must be signed in to change notification settings - Fork 18.7k
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
aarch64: build fails with TestOverlay128LayerRead #27384
Comments
/cc @dmcgowan |
@vielmetti thanks for report, until I can get an aarch64 host to test on do you mind running this set of test suite on the host https://github.com/dmcgowan/dsdbench? They take a little longer to run than the other unit tests but would give a precise point at which layer it is failing. |
Happy to, @dmcgowan - I'll give it a look. |
@dmcgowan - noted a build issue here dmcgowan/dsdbench#1 |
dsdbench output is here, @dmcgowan https://gist.github.com/423b469d21da240608e4ff13bef047f0 one line in particular reads
|
The dsdbench tool also has a benchmark tool, whose output is at https://gist.github.com/e7dafbd07faf4a20a8f829254810de2d
|
@vielmetti thanks for help accessing the machine. Looks like there is indeed a bug, not quite sure yet why it seems to only effect aarch64. Since it also appears to be a regression since 1.12 I will add to the 1.13 milestore. My assessment...
Paths are getting truncated which I attribute to hitting the page boundary. I tested with 1.12.0 and did not hit this issue. |
This might be a bug in the aarch64 implementation of Go.
|
Go can falsely report a larger page size than supported, causing overlay2 mount arguments to be truncated. When overlay2 detects the mount arguments have hit the page limit, it will switch to using relative paths. If this limit is smaller than the actual page size there is no behavioral problems, but if it is larger mounts can fail for images with many layers. Closes moby#27384 Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
Would it be possible to test with Go tip? At tip, |
@aclements are there any tip builds available for arm64? |
If you mean binary packages, then, no. We only package releases. But it's pretty easy to build your own. On any machine that has a Go install (doesn't have to be arm64), run: git clone https://go.googlesource.com/go
cd go/src
export GOROOT_BOOTSTRAP=$(go env GOROOT)
GOOS=linux GOARCH=arm64 ./bootstrap.bash This will create a |
Go can falsely report a larger page size than supported, causing overlay2 mount arguments to be truncated. When overlay2 detects the mount arguments have hit the page limit, it will switch to using relative paths. If this limit is smaller than the actual page size there is no behavioral problems, but if it is larger mounts can fail for images with many layers. Closes moby#27384 cherry-pick from: moby#27520 Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan) Signed-off-by: Lei Jitang <leijitang@huawei.com> (cherry picked from commit 520034e)
If for whatever reason you need a minimal test case to replicate this, this Dockerfile https://gist.github.com/anonymous/bdafb8e961f55b2533fee8fa5221d186 will create 100 layers and would fail to work at build time if you were using an unpatched / unfixed / old version of Docker on arm64. The error you'll expect is something like
|
Description
I'm trying to build master on ARMv8 (aarch64). The overlay2 test fails with "TestOverlay128LayerRead".
Steps to reproduce the issue:
Describe the results you received:
Describe the results you expected:
Expect all tests to pass.
Additional information you deem important (e.g. issue happens only occasionally):
Repeatable on successive builds.
Output of
docker version
:Output of
docker info
:Additional environment details (AWS, VirtualBox, physical, etc.):
Hosted ARMv8 96 core server
The text was updated successfully, but these errors were encountered: