BIND 10 #3025: Segmentation fault in SegmentObjectHolderTest.grow test

BIND 10 Development do-not-reply at isc.org
Wed Aug 7 11:26:07 UTC 2013


#3025: Segmentation fault in SegmentObjectHolderTest.grow test
-------------------------------------+-------------------------------------
            Reporter:  stephen       |                        Owner:
                Type:  defect        |  UnAssigned
            Priority:  medium        |                       Status:
           Component:  Unclassified  |  reviewing
            Keywords:                |                    Milestone:
           Sensitive:  0             |  Sprint-20130820
         Sub-Project:  DNS           |                   Resolution:
Estimated Difficulty:  4             |                 CVSS Scoring:
         Total Hours:  0             |              Defect Severity:  N/A
                                     |  Feature Depending on Ticket:
                                     |          Add Hours to Ticket:  0
                                     |                    Internal?:  0
-------------------------------------+-------------------------------------
Changes (by vorner):

 * owner:  vorner => UnAssigned
 * status:  assigned => reviewing


Comment:

 Hello

 I did not find the find the exact reason for what is happening. But it
 seems to be bug either in gcc or boost, which is probably fixed in newer
 versions. It happens only when:
  * Boost is version 1.46 (or older, it does /not/ happen with 1.48).
  * GCC 4.6 (it didn't happen on 4.5, I don't know about newer).
  * Optimisations are turned on.

 My guess is boost contained something which has undefined behaviour
 according to the standard and GCC introduced some new optimisation which
 relied on assumption broken by boost.

 First, I tried disabling optimisation selectively. But there are two
 problems with that:
  * Such thing is not really supported with autotools. I can't append -O0
 after user-set flags. There are workarounds, but they seem ugly, complex
 and fragile
 (https://lists.gnu.org/archive/html/automake/2006-09/msg00038.html).
  * When I managed to make the only file that includes the shared-memory
 related things compile with -O0, I got a different segfault in that area.
 If the whole thing is compiled without optimisations, it works. I wouldn't
 think this to be possible, but it seems it is.

 So I propose different solution. The problem happens only in shared-memory
 related functionality. I added a check and ask the user to disable shared
 memory if the boost version is older than 1.48. That is quite old already
 and the few people who really do need shared memory support (because they
 have large zones and need to run auth multi-core) are big admins and can
 upgrade.

 Do you think that is OK?

 If so, I propose this changelog:
 {{{
 Due to various problems with older versions of boost and shared memory,
 the server rejects to compile with combination of boost < 1.48 and
 shared memory enabled. Most users don't need shared memory, admins of
 large servers are asked to upgrade boost.
 }}}

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


More information about the bind10-tickets mailing list