Azat, Could this patch
On 14 September 2016 at 18:48, sahil aggarwal <[email protected]> wrote: > Azat, > > Yes this happens every time server close the connection. To reproduce i : > * start my client (multiple threads but event_base being exclusive to > 1 thread handling the events) > * start server > * generate some requests from client which succeed > * stop server > * generate some requests where now it loops forever. > > I can write reproducer and try it with latest libevent too. In the > mean time i have live GDB attached, if you need any info let me know. > > Thanks > > On 14 September 2016 at 16:37, Azat Khuzhin <[email protected]> wrote: >> On Wed, Sep 14, 2016 at 04:33:41PM +0530, sahil aggarwal wrote: >>> 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 ? >> >> Hi, >> >> Does it triggers every time? If so can you please try libevent from >> sources (https://github.com/libevent/libevent)? And does you program >> single-threaded or multi? >> >> Also if you have a reproducer (~100 lines) it will be useful to see it. >> >> Thanks, >> Azat. >> *********************************************************************** >> To unsubscribe, send an e-mail to [email protected] with >> unsubscribe libevent-users in the body. *********************************************************************** To unsubscribe, send an e-mail to [email protected] with unsubscribe libevent-users in the body.
