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