Position of the problem:
write_dns_event DNS.cc line 1140: e->id[dns_retries - e->retries] = i;
- e->retries was assinged with dns_retries in DNSProcessor::getby.
- The value of dns_retries is combined with "proxy.config.dns.retries".
- if "proxy.config.dns.retries" is changed to be a smaller value by traffic_ctl, for example:
/opt/ats/bin/traffic_ctl config set proxy.config.dns.retries 9 -- > 0.
- [dns_retries - e->retries] will underflow. The memory before id[] will be writen by wrong value.
struct DNSEntry : public Continuation {
int id[MAX_DNS_RETRIES];
...
Solution:
Consider assign dns_retries to DNSEntry in DNSProcessor::getby?