[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [Libevent-users] [nicholas.marriott@xxxxxxxxx: libevent and invalid fds]
I'd be inclined to go with 3 too, it would be nice if all were
consistent as can be in the long run to avoid similar problems later.
It looks like NetBSD has returned EBADF here (sys_pipe.c:pipe_kqfilter)
since 2002 but it's a pretty easy change, maybe they'd like to make it
consistent. It sort of sucks not being able to tell which end was
closed.
On Thu, Feb 09, 2012 at 04:50:14PM -0500, Nick Mathewson wrote:
> On Thu, Feb 9, 2012 at 3:37 PM, Frank Denis <libevent@xxxxxxxxxxxx> wrote:
> > Le Thu, Feb 09, 2012 at 03:23:32PM -0500, Nick Mathewson ecrivait :
> >> On Thu, Feb 9, 2012 at 4:32 AM, Nicholas Marriott
> >> I'm asking around; I'll let you know if anybody tells me they can test NetBSD.
> >
> > $ ./a
> > pipefd[0] = {4,5}
> > pipefd[1] = {6,7}
> > pipefd[2] = {8,9}
> > pipefd[3] = {10,11}
> > 1 events:
> > ?9: filter=1 flags=4000 error=9 [Bad file descriptor]
> > 3 events:
> > ?4: filter=0 flags=8001
> > ?11: filter=1 flags=8001
> > ?6: filter=0 flags=8001
> >
> > $ uname -a
> > NetBSD ?5.1.2 NetBSD 5.1.2 (GENERIC) #0: Thu Feb ?2 12:12:28 UTC 2012 ?builds@xxxxxxxxxxxxx:/home/builds/ab/netbsd-5-1-2-RELEASE/amd64/201202021012Z-obj/home/builds/ab/netbsd-5-1-2-RELEASE/src/sys/arch/amd64/compile/GENERIC amd64
>
> And Linus Norberg reports:
>
> =====
> bash-4.1$ uname -a
> ... NetBSD 5.0_STABLE ...
>
> bash-4.1$ ./a.out
> pipefd[0] = {4,5}
> pipefd[1] = {6,7}
> pipefd[2] = {8,9}
> pipefd[3] = {10,11}
> 1 events:
> 9: filter=1 flags=4000 error=9 [Bad file descriptor]
> 3 events:
> 4: filter=0 flags=8001
> 11: filter=1 flags=8001
> 6: filter=0 flags=8001
> bash-4.1$
> =====
>
> So it looks like our initial reports of NetBSD giving EBADF for this
> situation were accurate: When adding the write side of a pipe to a
> write filter, if the read side has already been closed, NetBSD tells
> us "EBADF."
>
> Some options:
>
> 1) Go with Nicholas Marriott's patch, which makes everybody's EBADF
> get ignored, since it is _mostly_ something to ignore.
> 2) As 1 above, but keep the current behavior on NetBSD, where it
> might be helpful somehow, though I kinda doubt it, since reporting
> this as EV_READ is a bit silly.
> 3) As 1 above, and try to make all the backends as consistent as we
> can for this case in 2.1.
> 4) As 3 above, but try to make all the backends consistent right now.
> 5) other
>
> Personally, I'm inclined to go with 3, since it tries to minimize
> added cleverness in 2.0, but also tries to get stuff right eventually.
>
> Thoughts? I plan to merge something here tonight or tomorrow, then
> put out another release then or this weekend.
>
> yrs,
> --
> Nick
> ***********************************************************************
> To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
> unsubscribe libevent-users in the body.
***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users in the body.