Thanks for your support

I solved my problems a while ago, and I completely redesigned the code
because as you said it was running in O(N)

Thanks for your support mate

Cheers

On Mon, May 17, 2010 at 11:57 PM, Nick Mathewson <ni...@freehaven.net>wrote:

> On Thu, Apr 8, 2010 at 7:46 AM, Sherif Fanous <sherif.fan...@gmail.com>
> wrote:
> > Hi
> > I am using libevent 2.0.4 alpha in my C application.
> > The below snapshot of my code occasionally encounters the following 2
> > problems
> >
> > [err] event.c:1961: Assertion !(ev->ev_flags & ~EVLIST_ALL) failed in
> > event_del_internal
> > Aborted
> > Segmentation Fault. I've traced down that it occurs in
> the event_base_loop
> > call
> >
> > In a nutshell, I have a linked list of servers. I loop through every
> server,
> > if I'm connected to that server then I create an event for the socket. I
> > then run the event loop with a timeout. I use the timeout to break out of
> > the event loop and check if the termination condition has been
> encountered
> > in another thread. I also run the event loop with EVLOOP_ONCE to break
> out
> > of the loop as soon as 1 event triggers to re-evaluate the linked list of
> > servers (new connections established, current connections terminated,
> ...)
> > When I break of the event loop, I delete the events and free them.
> > Can anyone please tell me what I'm doing wrong here? Is it an internal
> > libevent problem, or is my code messing up somewhere?
>
> Try running 2.0.5-beta with the debugging options.  (That is, call
> event_enable_debug_mode() before any other libevent call.)
>
> I think the problem in the code you posted might be that your cleanup
> loop is calling event_del() and event_free() on every event[i], but
> your setup loop is only setting event[i] if
> servers_array[i]->is_socket_connected.  This will make some of the
> entries in event[i] be uninitialized, which will make event_del() very
> unhappy.
>
> [Also, fwiw, the code you posted is going to be pretty inefficient: it
> loops over all the servers every time you call the event loop, so it's
> going to be O(N) in the number of servers, even if you're on an OS
> with an efficient O(1) backend for Libevent to use.]
>
> hth,
> --
> Nick
> ***********************************************************************
> To unsubscribe, send an e-mail to majord...@freehaven.net with
> unsubscribe libevent-users    in the body.
>

Reply via email to