> On Oct 7, 2017, at 11:13, Ed Hemphill <[email protected]> wrote:
> 
> I have a problem with an abort() getting called by the following code in 
> linux-core.c:
> 
> 
> int uv__io_check_fd(uv_loop_t* loop, int fd) {
>   struct uv__epoll_event e;
>   int rc;
> 
>   e.events = POLLIN;
>   e.data = -1;
> 
>   rc = 0;
>   if (uv__epoll_ctl(loop->backend_fd, UV__EPOLL_CTL_ADD, fd, &e))
>     if (errno != EEXIST)
>       rc = -errno;
> 
>   if (rc == 0)
>     if (uv__epoll_ctl(loop->backend_fd, UV__EPOLL_CTL_DEL, fd, &e))
>       abort();
> 
>   return rc;
> }
> 
> (gdb) frame 2
> #2  0x000000000080d842 in uv__io_check_fd (loop=0x7ffff7dd8c40 <libLoop>, 
> fd=33) at ../src/unix/linux-core.c:164
> 164   ../src/unix/linux-core.c: No such file or directory.
> (gdb) p errno
> $1 = 2
> 
> 
> 
> My understanding is this code is to check whether the FD can actually be 
> added to the epoll set. What I don't get, is why the abort() would ever be 
> reached. I.e. why does epol_ctl() allow you to add the FD if it can't remove 
> it (meaning it really could not add it)?
> 
> I was wondering if someone could shed some light on how this code came about, 
> and why an FD would be in such a state that it would reach the abort().  The 
> amount knowledge on the epoll inner workings out there on the net is minimal.
> 
> In my case, the errno is 2 on second epoll_ctl fail, which is ENOENT
> 
> Thanks so much,
> Ed
> 
> 
> 
> more backtrace
> 
> (gdb) bt
> #0  0x00007ffff6c08c37 in __GI_raise (sig=sig@entry=6) at 
> ../nptl/sysdeps/unix/sysv/linux/raise.c:56
> #1  0x00007ffff6c0c028 in __GI_abort () at abort.c:89
> #2  0x000000000080d842 in uv__io_check_fd (loop=0x7ffff7dd8c40 <libLoop>, 
> fd=33) at ../src/unix/linux-core.c:164
> #3  0x000000000080273c in uv_poll_init (loop=0x7ffff7dd8c40 <libLoop>, 
> handle=0x1780858, fd=33) at ../src/unix/poll.c:58
> #4  0x00007ffff7bc8715 in fdRedirectorTicket::fdRedirectorTicket(unsigned 
> int, int, void (*)(GreaseLibError*, int, int)) ()
>    from 
> /home/ed/work/gostuff/src/github.com/WigWagCo/maestro/../greasego/deps/lib/libgrease.so.1
> 

What kind of fd is that?

--
Saúl

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to