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