NetBSD-Bugs archive

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

Re: kern/57369: unexpected poll timeout on pipe



The following reply was made to PR kern/57369; it has been noted by GNATS.

From: mlelstv%serpens.de@localhost (Michael van Elst)
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/57369: unexpected poll timeout on pipe
Date: Thu, 20 Apr 2023 06:22:36 -0000 (UTC)

 yamt9999%gmail.com@localhost writes:
 
 >please see the following test code.
 >(it's available on github as well: https://github.com/yamt/garbage/blob/master/c/poll/test.c)
 >it succeeds on macOS and ubuntu.
 >but on netbsd, poll times out. (returns 0)
 >its 9.3 GENERIC kernel + older userland if it matters.
 
 
 This can be changed with:
 
 Index: sys/kern/sys_pipe.c
 ===================================================================
 RCS file: /cvsroot/src/sys/kern/sys_pipe.c,v
 retrieving revision 1.158
 diff -p -u -r1.158 sys_pipe.c
 --- sys/kern/sys_pipe.c 11 Oct 2021 01:07:36 -0000      1.158
 +++ sys/kern/sys_pipe.c 20 Apr 2023 06:20:45 -0000
 @@ -846,7 +846,7 @@ pipe_poll(file_t *fp, int events)
                 revents |= POLLHUP;
  
         if (revents == 0) {
 -               if (events & (POLLIN | POLLRDNORM))
 +               if (events & (POLLIN | POLLHUP | POLLRDNORM))
                         selrecord(curlwp, &rpipe->pipe_sel);
  
                 if (events & (POLLOUT | POLLWRNORM))
 
 
 But I don't see that this has ever worked. It also doesn't help (alone)
 for the opposite direction.
 
 


Home | Main Index | Thread Index | Old Index