On Thu, 09 Dec 2010 11:38:34 +0900
Mike McCormack <mj.mccorm...@samsung.com> wrote:

> On 12/09/2010 10:31 AM, Mike Blumenkrantz wrote:
> 
> >>> Upon arriving at _ecore_main_fd_handlers_bads_rem, perhaps we should
> >>> rebuild the epoll fd (ie close it, then reopen and add all fds again) as
> >>> well by default? Or, if not by default, at least rebuild it if we don't
> >>> find anything by looping over the inlist?
> >>
> >> It's already done.  See ecore/src/lib/ecore/ecore_main.c # 272
> >>
> >> thanks,
> >>
> >> Mike
> >>
> > Line 272 is this:
> >     if (!ECORE_MAGIC_CHECK(fdh, ECORE_MAGIC_FD_HANDLER))
> 
> I've still got patches floating on top of that file.  I meant here:
> 
> static inline void
> _ecore_main_fdh_poll_del(Ecore_Fd_Handler *fdh)
> ...
>     if ((epoll_ctl(efd, EPOLL_CTL_DEL, fdh->fd, &ev) < 0))
>       {
>          if (errno == EBADF)
>            {
>               WRN("fd %d was closed, can't remove from epoll - reinit!",
>                   fdh->fd);
>               _ecore_main_loop_shutdown();
>               _ecore_main_loop_init();
>            }
> 
> thanks,
> 
> Mike
Okay, but the only place that _ecore_main_fdh_poll_del can be called from is
ecore_main_fd_handler_del.  If a bad fd gets into epoll and then is selected on
without being removed, it will just loop infinitely without ever being able to
be removed, just like we're seeing in this bug.  Might be good to add
shutdown+init inside bads_rem if no bads are found, yes?

-- 
Mike Blumenkrantz
Zentific: We run the three-legged race individually.

------------------------------------------------------------------------------
This SF Dev2Dev email is sponsored by:

WikiLeaks The End of the Free Internet
http://p.sf.net/sfu/therealnews-com
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to