-
Notifications
You must be signed in to change notification settings - Fork 29
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
Last two versions of R (4.0.5 and 4.1.0) won't run under Docker #2361
Comments
It works fine on native Clear Linux. |
Thanks for the detailed report. I will investigate. |
I can test any time. Thanks @phmccarty |
@scotstan I just ran your test script, and I cannot reproduce the issue. Maybe the snapshots of Here's the output I see from the script on first run:
And the second run:
|
I re-tested this several times in the past few months, and I still could not reproduce. If it's still a problem on your end, please reopen. |
Thanks. I'll try to retest when I get a chance. |
Great, thanks. And just to clarify, I only tested running the script on a Clear Linux host. But the underlying host OS should not matter in this case, I would think. |
Good idea on cleaning out the old images. I did that so they would pull down fresh. However, still the same problem. I think the solution is somewhere in the bash script I get great performance with R using ClearLinux. That's why this was important. I'm not blocked, but leaving this here for others. |
Thanks for testing. Reopening. |
Revisiting this issue... Neither the Nothing stands out to me in the 4.0.3, 4.0.4, or 4.0.5 release notes as candidate breakage. Looking the Clear Linux package history between 4.0.2 and 4.0.5, we modified I will proceed by testing this out on Ubuntu 20.04.3 and hopefully reproduce it :-) |
I have some time now to poke at it too. I think the answer is in the R script, in that it's using an environment variable or path no longer valid or something. |
Might be related (from an open issue on bash 5.1 on Alpine). and |
Workaround!Delete these lines in With one command: bash 5.1Not sure what's happening here, because none of the bash -x tests seem to work now. This will likely have big ramifications for bash scripts that test for validity of folder, execute bits, read bits, etc. Issue below has more details, but it's above my paygrade to attempt more fixes. For now, I'm good with a workaround. This should not fail
|
The above just allows one to run Workaround attempt: going back to last-known-stable version 4.0.2 that used bash 5.0. |
Thanks for the detailed debug findings :-) I still have not tested Ubuntu 20.04.3, but my suspicion is that the patch to There are a bunch of interlinked packages involved here. We have docker, runc, libseccomp, and the running kernel on the Ubuntu host, and glibc plus whatever userspace programs are running within a container based on any of the The |
is this the seccomp on the host side or inside the container ?
…On Mon, Feb 7, 2022 at 12:44 PM Patrick McCarty ***@***.***> wrote:
Thanks for the detailed debug findings :-)
I still have not tested Ubuntu 20.04.3, but my suspicion is that the patch
to include/seccomp-syscalls.h from seccomp/libseccomp#322
<seccomp/libseccomp#322> (also see report
seccomp/libseccomp#314 <seccomp/libseccomp#314>)
should be backported. The current Ubuntu package version is
2.5.1-1ubuntu1~20.04.2, and I don't see any backports for this specific
bug.
There are a bunch of interlinked packages involved here. We have docker,
runc, libseccomp, and the running kernel on the Ubuntu host, and glibc plus
whatever userspace programs are running within a container based on any of
the clearlinux/r-base images.
The clearlinux/r-base:4.0.2 image contains glibc 2.31, but
clearlinux/r-base:4.0.5 has glibc 2.33. Support for faccessat2 was added
for glibc 2.33 (see ***@***.***
<bminor/glibc@3d3ab57>),
so I think this is the primary reason you are seeing the image with 4.0.2
work correctly. Bash itself likely calls faccessat, resulting in glibc <
2.33 always wrapping that system call, and glibc >= 2.33 trying to use
faccessat2 first, and falling back to faccessat if it's unsupported. I
suspect the failure here is caused by the libseccomp bug linked above;
glibc will see the wrong error code within the container environment and
propagate it to bash, R, etc.
—
Reply to this email directly, view it on GitHub
<#2361 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAJ54FOMENLUAIUVJGXXB4LU2AVLJANCNFSM45KLQ2BQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
The issue is your host Docker. It's applying a seccomp filter that blocks the This is a design flaw in libseccomp. It needs to use three categories, not two:
|
Very interesting. Is there something in the host Docker configuration that controls this? I can also test on Debian Raspberry Pi. Maybe a few other hosts. |
You can disable seccomp completely ("disable security"): |
I installed the last 5
clearlinux/r-base
versions to bisect when theR
command stopped working. Seems as if something changed between 4.0.2 and 4.0.5 that prevents R from running.The last two versions (4.0.5 and 4.1.0) respond with
ERROR: R_HOME ('/usr/lib64/R') not found
My host is Ubuntu 20.04.2.
Here's the short script to reproduce:
R 4.1.0 works fine with
rocker/r-base
The text was updated successfully, but these errors were encountered: