open /dev/null O_NOFOLLOW fails with ELOOP

gs-cygwin.com@gluelogic.com gs-cygwin.com@gluelogic.com
Wed Dec 21 19:32:54 GMT 2022


On Wed, Dec 21, 2022 at 03:29:42PM +0100, Corinna Vinschen via Cygwin wrote:
> Hi Glenn,
> 
> On Dec 21 12:31, Corinna Vinschen via Cygwin wrote:
> > On Dec 21 06:15, gs-cygwin.com--- via Cygwin wrote:
> > > open /dev/null O_NOFOLLOW fails with ELOOP
> > > 
> > > Windows 10, 64-bit cygwin
> > > 
> > > Failed with my existing install, then I ran setup.exe, updated to
> > > latest, and my tests still failed.
> > > 
> > > a.c
> > > ---
> > > 
> > > #include <sys/types.h>
> > > #include <fcntl.h>
> > > #include <stdio.h>
> > > 
> > > int main (void)
> > > {
> > >     int fd = open("/dev/null", O_RDWR | O_NOFOLLOW, 0);
> > >     if (fd < 0)
> > >         perror("open(/dev/null)");
> > >     return fd;
> > > }
> > > 
> > > 
> > > $ gcc a.c ; ./a.exe
> > > open(/dev/null): Too many levels of symbolic links
> > > 
> > > While troubleshooting this, there were times where it succeeded and then
> > > times where it failed, though it failed most of the time.  It did not
> > > fail (or succeed) randomly, but seemingly in streaks.
> > > 
> > > Trying to start lighttpd seems to run into this bug reliably,
> > >   $ /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
> > > In the next release of lighttpd, I may end up omitting O_NOFOLLOW
> > > if __CYGWIN__ is defined.
> > 
> > Thanks for the report.  I think I see what's going on, stay tuned.
> 
> I pushed a patch:
> https://cygwin.com/git/?p=newlib-cygwin.git;a=commitdiff;h=09cb4cd2940f
> 
> Please try the latest test release cygwin-3.5.0-0.60.g09cb4cd2940f.
> For installation, see https://cygwin.com/faq.html#faq.setup.testrels
> 
> 
> Thanks,
> Corinna

cygwin-3.5.0-0.60.g09cb4cd2940f works for my test case and for lighttpd.
I was unable to reproduce the problem after (somewhat limited) testing
with the test version.

When I reverted back to 3.4.3-1, I was immediately able to reproduce the
issue with 3.4.3-1.

Thank you!  Happy Holidays!
Cheers, Glenn


More information about the Cygwin mailing list