[
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]