BIND 10 #1439: "now" binding is required to prevent deadlocks in g++ startup code in Solaris
BIND 10 Development
do-not-reply at isc.org
Tue Nov 29 12:21:36 UTC 2011
#1439: "now" binding is required to prevent deadlocks in g++ startup code in
Solaris
-------------------------------------+-------------------------------------
Reporter: dvv | Owner: dvv
Type: defect | Status: new
Priority: major | Milestone:
Component: Unclassified | Sprint-20111206
Sensitive: 0 | Keywords:
Sub-Project: DNS | Defect Severity:
Estimated Difficulty: 0 | Medium
Total Hours: 16 | Feature Depending on Ticket:
| Add Hours to Ticket: 0
| Internal?: 0
-------------------------------------+-------------------------------------
The functionality of the dynamic libraries is badly dependent on what the
C++ compiler inlines and what it makes a resolvable symbol, and if the
default "lazy" binding is in use (i.e. a code reference gets resolved at
its first use), certain combinations of the compiler -O flags causes the
initialization code for static objects to make an inderect recursive call
to an initialization thunk and a deadlock in its guard lock, and the
process won't even make it to main(). Fortunately enough, the loader in
Solaris allows for forced binding of all symbols on module load, which can
be controlled by an ld flag or an environ variable at runtime. It adds
some cycles at startup, but I don't think it's an issue for us. I don't
know if there is a problem like this in other systems tho.
--
Ticket URL: <http://bind10.isc.org/ticket/1439>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list