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