irpd core dumps

Vladislav Yasevich vlad at zk3.dec.com
Wed Sep 29 18:37:26 UTC 1999


I forgot to mention the source is 8.2.1

After further investigation I found this to be a problem with the way idle
timers were cleaned up.  In the case of irpd, the timed out idle_timer was
freed twice which cause the dump I reported in the previouse message.

I propose the following change:

*** ev_timers.c Wed Sep 29 14:31:11 1999
--- /stuff/archives/tmp/src/lib/isc/ev_timers.c Fri Jan  8 14:25:29 1999
***************
*** 393,399 ****
        if (evCmpTime(idle, this->max_idle) >= 0) {
                (this->func)(opaqueCtx, this->uap, this->timer->due,
                             this->max_idle);
!               /* at this point idle_timer is removed and the interval is 0 */
        } else {
                /* evDrop() will reschedule the timer. */
                this->timer->inter = evSubTime(this->max_idle, idle);
--- 393,404 ----
        if (evCmpTime(idle, this->max_idle) >= 0) {
                (this->func)(opaqueCtx, this->uap, this->timer->due,
                             this->max_idle);
!               /*
!                * Setting the interval to zero will cause the timer to
!                * be cleaned up in evDrop().
!                */
!               this->timer->inter = evConsTime(0, 0);
!               FREE(this);
        } else {
                /* evDrop() will reschedule the timer. */
                this->timer->inter = evSubTime(this->max_idle, idle);

-vlad 
+++++++++++++++++++++++++++++++
Vladislav Yasevich
Compaq Computer Corp.
110 Spit Brook Rd ZK03-3/T07
Nashua, NH 03062
(603) 884-1079


More information about the bind-workers mailing list