07.09.2011, 12:35, "Auxten wpc" <[email protected]>: > libev-4.04 may have a infi loop at ev.c line 1020,1019 > >> for (w = (ev_io *)anfd->head; w; w = (ev_io *)((WL)w)->next) >> anfd->events |= (unsigned char)w->events; > > as my trace there a possiblity "w == (ev_io *)((WL)w)->next", the next point > to itself > this cause one of my threads infi loop here, so the simple fix is > > diff -r libev-4.04/ev.c libev-4.04-fixed/ev.c >> 1020c1020,1024 >> < anfd->events |= (unsigned char)w->events; >> --- >>> { >>> anfd->events |= (unsigned char)w->events; >>> if (w == (ev_io *)((WL)w)->next) >>> break; >>> } >
Patch is useless. In normal there is no case when w == w->next. Check if you call ev_io_start () twice for the same watcher in a row. That may cause infinite loop. -- br, Denis F. Latypoff. _______________________________________________ libev mailing list [email protected] http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev
