redis doesn't accept requests when run on AArch64.
There seems to be a mismatch between O_NONBLOCK and FNONBLOCK. FNONBLOCK shoud be an alias for O_NONBLOCK used by vfscore to create a nonblocking socket. However, redis makes use of the O_NONBLOCK flag, and even though the value for these 2 flags should be the same, it isn't.
That is because on AArch64 the O_NONBLOCK flag is redefined in include/fcntl.h, while, FNONBLOCK isn't.
The result is a blocking socket, which makes it impossible for redis to accept further requests.
Steps to reproduce
Build and run redis using newlib support on AArch64.
Can confirm this issue is present on my end, as well. This seems to affect all apps which are using newlibc and the internal library vfscore to manage blocking/non-blocking I/O.
Describe the bug
redis
doesn't accept requests when run onAArch64
.There seems to be a mismatch between
O_NONBLOCK
andFNONBLOCK
.FNONBLOCK
shoud be an alias forO_NONBLOCK
used byvfscore
to create a nonblocking socket. However,redis
makes use of theO_NONBLOCK
flag, and even though the value for these 2 flags should be the same, it isn't.That is because on
AArch64
theO_NONBLOCK
flag is redefined ininclude/fcntl.h
, while,FNONBLOCK
isn't.The result is a blocking socket, which makes it impossible for
redis
to accept further requests.Steps to reproduce
Build and run
redis
usingnewlib
support onAArch64
.Download this executable and run it using this command:
Expected behavior
redis
to be responding to requests:Which architectures were you using or does this bug affect?
AArch64
Which platforms were you using or does this bug affect?
KVM