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