[ 
https://issues.apache.org/jira/browse/PROTON-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Cliff Jansen resolved PROTON-1483.
----------------------------------
       Resolution: Fixed
         Assignee: Cliff Jansen
    Fix Version/s: 0.18.0

Required changing method to track expected callbacks for expired timers.

Abandoned strict accounting for looser "in doubt" transitions.

> proactor/epoll.c:181: ptimer_callback: Assertion
> ------------------------------------------------
>
>                 Key: PROTON-1483
>                 URL: https://issues.apache.org/jira/browse/PROTON-1483
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-c
>    Affects Versions: 0.18.0
>         Environment: Fedora 25
> Master source builds of qpid-proton and qpid-dispatch
>            Reporter: Chuck Rolke
>            Assignee: Cliff Jansen
>             Fix For: 0.18.0
>
>         Attachments: A.conf, B.conf
>
>
> Start a dispatch router network of two routers. Send client traffic or not. 
> Let it sit for a few minutes.
> {noformat}
> qdrouterd: /home/chug/git/qpid-proton/proton-c/src/proactor/epoll.c:181: 
> ptimer_callback: Assertion `exp_count >= pt->skip_count' failed.
> {noformat}
> Either router A or B may fail this way. Looking at one core dump the 
> internals show:
> {noformat}
> (gdb) list
> 176     ssize_t l = read(pt->timerfd, &u_exp_count, sizeof(uint64_t));
> 177     (void)l; /* Silence compiler complaints in release build */
> 178     assert(l == sizeof(uint64_t));
> 179     assert(u_exp_count < INT_MAX);  // or test and log it?
> 180     int exp_count = (int) u_exp_count;
> 181     assert(exp_count >= pt->skip_count);
> 182     assert(exp_count <= pt->pending_count);
> 183     exp_count -= pt->skip_count;
> 184     pt->skip_count = 0;
> 185     pt->pending_count -= exp_count;
> (gdb) p exp_count
> $1 = 1
> (gdb) p pt->skip_count 
> $2 = 2
> (gdb) bt
> #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
> #1  0x00007fc51c49d51a in __GI_abort () at abort.c:89
> #2  0x00007fc51c493da7 in __assert_fail_base (fmt=<optimized out>, 
> assertion=assertion@entry=0x7fc51d45fbc2 "exp_count >= pt->skip_count", 
>     file=file@entry=0x7fc51d45fb30 
> "/home/chug/git/qpid-proton/proton-c/src/proactor/epoll.c", 
> line=line@entry=181, 
>     function=function@entry=0x7fc51d45fe70 <__PRETTY_FUNCTION__.7041> 
> "ptimer_callback") at assert.c:92
> #3  0x00007fc51c493e52 in __GI___assert_fail (assertion=0x7fc51d45fbc2 
> "exp_count >= pt->skip_count", file=0x7fc51d45fb30 
> "/home/chug/git/qpid-proton/proton-c/src/proactor/epoll.c", line=181, 
>     function=0x7fc51d45fe70 <__PRETTY_FUNCTION__.7041> "ptimer_callback") at 
> assert.c:101
> #4  0x00007fc51d45b620 in ptimer_callback (pt=0xfd8db8) at 
> /home/chug/git/qpid-proton/proton-c/src/proactor/epoll.c:181
> #5  0x00007fc51d45ebae in proactor_process (p=0xfd8d40, timeout=true) at 
> /home/chug/git/qpid-proton/proton-c/src/proactor/epoll.c:1537
> #6  0x00007fc51d45f0ae in proactor_do_epoll (p=0xfd8d40, can_block=true) at 
> /home/chug/git/qpid-proton/proton-c/src/proactor/epoll.c:1657
> #7  0x00007fc51d45f196 in pn_proactor_wait (p=0xfd8d40) at 
> /home/chug/git/qpid-proton/proton-c/src/proactor/epoll.c:1680
> #8  0x00007fc51d901d6a in thread_run (arg=0xfcfdd0) at 
> /home/chug/git/qpid-dispatch/src/server.c:817
> #9  0x00007fc51d2416ca in start_thread (arg=0x7fc50fd93700) at 
> pthread_create.c:333
> #10 0x00007fc51c56df7f in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
> {noformat}
> The attached conf files are for the test routers.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to