[823] forwarder setting with NetBSD/sparc
Mark.Andrews at nominum.com
Mark.Andrews at nominum.com
Mon Feb 5 10:26:01 UTC 2001
Looks like a reasonable analysis. Patch shortly.
> with BIND823 on on NetBSD/sparc, there are problem reports like this:
> http://www.NetBSD.org/cgi-bin/query-pr-single.pl?number=12128
> to sumamrize, if we set multiple forwarders into named.conf, named
> will coredump. (there's some report that it does not happen on i386).
>
> i looked at the code briefly, and found a possible source of problem.
> it would be good if you can check if my reasoning is correct.
>
>
> global variable fwddata[] keeps the all list forwarder data,
> created in find_forwarder(). fwddata->ref_count (in struct fwddata)
> does not count the pointer from fwddata.
>
> when ftp->fwddata->ref_count reaches 0, we free ftp->fwddata
> (ns_config.c near line 2400). we do not cleanup pointers from
> fwddata[] for this particular item, therefore, we leave a dangling
> pointer in fwddata[].
>
> next time we visit find_forwarder(), we have possibility to touch
> dangling pointer in fwddata[]. the pointer would be returned to
> the caller of find_forwarder if we are (un)lucky, and the pointer
> will be kept into ftp->fwddata. when the region gets reused, we will
> see coredump.
>
>
> solution would be to cleanup pointer from fwddata[], when a fwddata
> item goes away.
>
> itojun
>
--
Mark Andrews, Nominum Inc.
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742 INTERNET: Mark.Andrews at nominum.com
More information about the bind-workers
mailing list