* [musl] faccessat() always return EPERM
@ 2021-07-24 1:16 Yuri Kanivetsky
2021-07-24 1:40 ` Rich Felker
2021-07-24 1:56 ` Wolf
0 siblings, 2 replies; 6+ messages in thread
From: Yuri Kanivetsky @ 2021-07-24 1:16 UTC (permalink / raw)
To: musl
Hi,
I'm not sure that it has something to do with musl. But experienced in
a Alpine Linux docker container (ruby:2.6-alpine3.14) on Debian 9 or
10. I can't reproduce it with Alpine Linux 3.13 (container) or Debian
8 (host).
For example, the following program outputs -1:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
int r;
r = faccessat(AT_FDCWD, "/", R_OK, AT_EACCESS);
printf("%i", r);
return 0;
}
I believe whatever is passed as the second parameter, it would return -1.
As a result at least irb and bundler doesn't work. Is this some sort
of binary incompatibility with Linux kernel?
Regards,
Yuri
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] faccessat() always return EPERM
2021-07-24 1:16 [musl] faccessat() always return EPERM Yuri Kanivetsky
@ 2021-07-24 1:40 ` Rich Felker
2021-07-24 5:56 ` Rich Felker
2021-07-24 23:36 ` Alex Xu (Hello71)
2021-07-24 1:56 ` Wolf
1 sibling, 2 replies; 6+ messages in thread
From: Rich Felker @ 2021-07-24 1:40 UTC (permalink / raw)
To: Yuri Kanivetsky; +Cc: musl
On Sat, Jul 24, 2021 at 04:16:25AM +0300, Yuri Kanivetsky wrote:
> Hi,
>
> I'm not sure that it has something to do with musl. But experienced in
> a Alpine Linux docker container (ruby:2.6-alpine3.14) on Debian 9 or
> 10. I can't reproduce it with Alpine Linux 3.13 (container) or Debian
> 8 (host).
>
> For example, the following program outputs -1:
>
> #include <stdio.h>
> #include <fcntl.h>
> #include <unistd.h>
>
> int main()
> {
> int r;
> r = faccessat(AT_FDCWD, "/", R_OK, AT_EACCESS);
> printf("%i", r);
> return 0;
> }
>
> I believe whatever is passed as the second parameter, it would return -1.
>
> As a result at least irb and bundler doesn't work. Is this some sort
> of binary incompatibility with Linux kernel?
No, it's almost surely Docker blocking the operation with the wrong
error code (EPERM):
https://github.com/opencontainers/runc/issues/2151
I'm not sure what the status on getting fix deployed is. It might go
away if the host running Docker can upgrade.
Rich
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] faccessat() always return EPERM
2021-07-24 1:16 [musl] faccessat() always return EPERM Yuri Kanivetsky
2021-07-24 1:40 ` Rich Felker
@ 2021-07-24 1:56 ` Wolf
1 sibling, 0 replies; 6+ messages in thread
From: Wolf @ 2021-07-24 1:56 UTC (permalink / raw)
To: musl
[-- Attachment #1: Type: text/plain, Size: 1469 bytes --]
Hello,
On 2021-07-24 04:16:25 +0300, Yuri Kanivetsky wrote:
> I'm not sure that it has something to do with musl. But experienced in
> a Alpine Linux docker container (ruby:2.6-alpine3.14) on Debian 9 or
> 10. I can't reproduce it with Alpine Linux 3.13 (container) or Debian
> 8 (host).
Cannot reproduce over here, your sample program works for me in
alpine 3.14 container running under podman.
> For example, the following program outputs -1:
Not here:
/ # ./main
0
/ # strace -f ./main
execve("./main", ["./main"], 0x7ffdaab97618 /* 8 vars */) = 0
arch_prctl(ARCH_SET_FS, 0x7f2305385b48) = 0
set_tid_address(0x7f2305385f90) = 19
brk(NULL) = 0x562e4bf54000
brk(0x562e4bf56000) = 0x562e4bf56000
mmap(0x562e4bf54000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x562e4bf54000
mprotect(0x7f2305382000, 4096, PROT_READ) = 0
mprotect(0x562e4b3a9000, 4096, PROT_READ) = 0
faccessat2(AT_FDCWD, "/", R_OK, AT_EACCESS) = 0
ioctl(1, TIOCGWINSZ, {ws_row=53, ws_col=95, ws_xpixel=21852, ws_ypixel=0}) = 0
writev(1, [{iov_base="0", iov_len=1}, {iov_base="\n", iov_len=1}], 20
) = 2
exit_group(0) = ?
+++ exited with 0 +++
Maybe you can try to strace the 3.14 and 3.13 versions to see if there
is any difference.
W.
--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] faccessat() always return EPERM
2021-07-24 1:40 ` Rich Felker
@ 2021-07-24 5:56 ` Rich Felker
2021-07-24 23:36 ` Alex Xu (Hello71)
1 sibling, 0 replies; 6+ messages in thread
From: Rich Felker @ 2021-07-24 5:56 UTC (permalink / raw)
To: Yuri Kanivetsky; +Cc: musl
On Fri, Jul 23, 2021 at 09:40:22PM -0400, Rich Felker wrote:
> On Sat, Jul 24, 2021 at 04:16:25AM +0300, Yuri Kanivetsky wrote:
> > Hi,
> >
> > I'm not sure that it has something to do with musl. But experienced in
> > a Alpine Linux docker container (ruby:2.6-alpine3.14) on Debian 9 or
> > 10. I can't reproduce it with Alpine Linux 3.13 (container) or Debian
> > 8 (host).
> >
> > For example, the following program outputs -1:
> >
> > #include <stdio.h>
> > #include <fcntl.h>
> > #include <unistd.h>
> >
> > int main()
> > {
> > int r;
> > r = faccessat(AT_FDCWD, "/", R_OK, AT_EACCESS);
> > printf("%i", r);
> > return 0;
> > }
> >
> > I believe whatever is passed as the second parameter, it would return -1.
> >
> > As a result at least irb and bundler doesn't work. Is this some sort
> > of binary incompatibility with Linux kernel?
>
> No, it's almost surely Docker blocking the operation with the wrong
> error code (EPERM):
>
> https://github.com/opencontainers/runc/issues/2151
>
> I'm not sure what the status on getting fix deployed is. It might go
> away if the host running Docker can upgrade.
I forgot to mention: if you can disable seccomp in Docker, that's a
workaround that doesn't require upgrading.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] faccessat() always return EPERM
2021-07-24 1:40 ` Rich Felker
2021-07-24 5:56 ` Rich Felker
@ 2021-07-24 23:36 ` Alex Xu (Hello71)
2021-07-27 4:34 ` Yuri Kanivetsky
1 sibling, 1 reply; 6+ messages in thread
From: Alex Xu (Hello71) @ 2021-07-24 23:36 UTC (permalink / raw)
To: musl, Yuri Kanivetsky
Excerpts from Rich Felker's message of July 23, 2021 9:40 pm:
> On Sat, Jul 24, 2021 at 04:16:25AM +0300, Yuri Kanivetsky wrote:
>> Hi,
>>
>> I'm not sure that it has something to do with musl. But experienced in
>> a Alpine Linux docker container (ruby:2.6-alpine3.14) on Debian 9 or
>> 10. I can't reproduce it with Alpine Linux 3.13 (container) or Debian
>> 8 (host).
>>
>> For example, the following program outputs -1:
>>
>> #include <stdio.h>
>> #include <fcntl.h>
>> #include <unistd.h>
>>
>> int main()
>> {
>> int r;
>> r = faccessat(AT_FDCWD, "/", R_OK, AT_EACCESS);
>> printf("%i", r);
>> return 0;
>> }
>>
>> I believe whatever is passed as the second parameter, it would return -1.
>>
>> As a result at least irb and bundler doesn't work. Is this some sort
>> of binary incompatibility with Linux kernel?
>
> No, it's almost surely Docker blocking the operation with the wrong
> error code (EPERM):
>
> https://github.com/opencontainers/runc/issues/2151
>
> I'm not sure what the status on getting fix deployed is. It might go
> away if the host running Docker can upgrade.
>
> Rich
>
https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.14.0#faccessat2
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] faccessat() always return EPERM
2021-07-24 23:36 ` Alex Xu (Hello71)
@ 2021-07-27 4:34 ` Yuri Kanivetsky
0 siblings, 0 replies; 6+ messages in thread
From: Yuri Kanivetsky @ 2021-07-27 4:34 UTC (permalink / raw)
To: Alex Xu (Hello71); +Cc: musl
Hi
On Sat, Jul 24, 2021 at 4:40 AM Rich Felker <dalias@libc.org> wrote:
>
> No, it's almost surely Docker blocking the operation with the wrong
> error code (EPERM):
>
> https://github.com/opencontainers/runc/issues/2151
>
> I'm not sure what the status on getting fix deployed is. It might go
> away if the host running Docker can upgrade.
Indeed. It seems to depend on docker version:
Debian 8 18.06.3-ce 0
Debian 8 18.06.3-ce 0
Debian 8 18.06.3-ce 0
Debian 8 18.06.3-ce 0
Debian 9 19.03.6 -1
Debian 9 19.03.13 -1
Debian 9 19.03.13 -1
Debian 9 19.03.14 -1
Debian 10 19.03.13 -1
Debian 10 19.03.13 -1
Debian 10 20.10.5 0
On Sat, Jul 24, 2021 at 4:57 AM Wolf <wolf@wolfsden.cz> wrote:
>
> Cannot reproduce over here, your sample program works for me in
> alpine 3.14 container running under podman.
What OS and docker version are you using?
On Sat, Jul 24, 2021 at 8:56 AM Rich Felker <dalias@libc.org> wrote:
>
> I forgot to mention: if you can disable seccomp in Docker, that's a
> workaround that doesn't require upgrading.
Indeed, `--security-opt seccomp=unconfined` or `security_opt:
[seccomp=unconfined]` (docker-compose) kind of resolve it.
On Sun, Jul 25, 2021 at 2:36 AM Alex Xu (Hello71) <alex_y_xu@yahoo.ca> wrote:
>
> https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.14.0#faccessat2
Good point.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-07-27 4:36 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-24 1:16 [musl] faccessat() always return EPERM Yuri Kanivetsky
2021-07-24 1:40 ` Rich Felker
2021-07-24 5:56 ` Rich Felker
2021-07-24 23:36 ` Alex Xu (Hello71)
2021-07-27 4:34 ` Yuri Kanivetsky
2021-07-24 1:56 ` Wolf
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).