[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[Libevent-users] [2.0.19-stable] Infinite loop



Hi,

Getting stuck in infinite loop after retry on evhttp_connection. After attaching GDB this is what i found:

----------

#0  0x00007f9a8f5efdb9 in event_queue_remove (base=base@entry=0x24bf830, ev=ev@entry=0x7f9a84006da0, queue=queue@entry=8)
    at event.c:2495
#1  0x00007f9a8f5f4040 in event_del_internal (ev=0x7f9a84006da0) at event.c:2234
#2  timeout_process (base=0x24bf830) at event.c:2481
#3  event_base_loop (base=base@entry=0x24bf830, flags=flags@entry=0) at event.c:1614


---------

#0  event_active_nolock (ev=<optimized out>, res=<optimized out>, ncalls=<optimized out>) at event.c:2315
#1  0x00007f9a8f5f3f76 in timeout_process (base=0x24bf830) at event.c:2485
#2  event_base_loop (base=base@entry=0x24bf830, flags=flags@entry=0) at event.c:1614


So the event is getting removed and queued in active queue. And event given by 

ev = min_heap_top(&base->timeheap)

doesn't have EV_TIMEOUT flag set due which it won't remove from the min_heap and it always get the same event on the top hence the infinite loop.

* event_base not being shared across multiple threads.

* How 1 have event in min_heap without EV_TIMEOUT  flag set and e->ev_timeout_pos.min_heap_idx = -1  as on adding we always set the flag ?


Will appreciate any help.