[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#300640: glibc: select() buggy on Hurd



Hi,

Bastian Blank, le Mon 21 Mar 2005 10:16:26 +0100, a écrit :
> On Sun, Mar 20, 2005 at 11:23:27PM +0100, Marc Dequènes wrote:
> >         while ((ret = poll(pfd, 1, 10)) >= 0)
> >         {
> >                 if (ret == 0)
> >                         continue;
> >                 if (pfd[0].revents & POLLERR)
> >                         break;
> >                 if (pfd[0].revents & POLLIN)
> >                 {
> >                         printf("DATA !\n");
> >                         read(fd, &c, 1);
> >                 }
> >         }
> 
> > Result on linux :
> > I've got 1 "DATA !" per character (including "\n").
> 
> Yes, linux sets POLLERR if the fifo is not readable.
> 
> > Result on Hurd :
> > I've got an infinite number of "DATA !".
> 
> You miss the test for EOF.
> 
> > It is like if the select state is not reset after reading.
> 
> No, it is just a difference in the implementation. Both behaviours are
> okay.
> 
> > I tried to find the bug but i need help, this software is not an easy peace.
> 
> As it lacks checks of return values, it can't be easy.

Should we really keep this bug opened?  I agree with Bastian Blank that
the program should check the result of read() so as to discover end of
file.

Samuel



Reply to: