BIND 10 #2024: Segfault in RecursiveQueryTest.v6UDPSendSpecific on Solaris (SPARC)

BIND 10 Development do-not-reply at isc.org
Sun Jun 10 18:17:16 UTC 2012


#2024: Segfault in RecursiveQueryTest.v6UDPSendSpecific on Solaris (SPARC)
-------------------------------------+-------------------------------------
                   Reporter:  muks   |                 Owner:  jinmei
                       Type:         |                Status:  reviewing
  defect                             |             Milestone:
                   Priority:         |  Sprint-20120612
  medium                             |            Resolution:
                  Component:         |             Sensitive:  0
  resolver                           |           Sub-Project:  DNS
                   Keywords:         |  Estimated Difficulty:  0
            Defect Severity:  N/A    |           Total Hours:  0
Feature Depending on Ticket:         |
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------
Changes (by muks):

 * owner:  muks => jinmei


Comment:

 Replying to [comment:3 jinmei]:
 > The patch itself at least doesn't seem to be harmful, but it's not
 > obvious to me what exactly happened in the original version and how
 > this change solves it.  Could you elaborate please?

 In the following code:

 {{{
         io_service_.reset(new IOService());
         callback_.reset(new ASIOCallBack(this));
         dns_service_.reset(new DNSService(*io_service_, callback_.get(),
 NULL,
                                           NULL));
 }}}

 after the `io_service_.reset()`, the old `IOService object` is destroyed,
 but it is still referenced and used inside `dns_service_` including during
 its destruction (two lines below).

 Destroying `dns_service_` first also causes this issue to go away.
 {{{
 +       dns_service_.reset(NULL);
         io_service_.reset(new IOService());
         callback_.reset(new ASIOCallBack(this));
         dns_service_.reset(new DNSService(*io_service_, callback_.get(),
 NULL,
                                           NULL));
 }}}

-- 
Ticket URL: <http://bind10.isc.org/ticket/2024#comment:5>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list