Operational Notification -- Changes in GCC Code Optimization Can Cause a Crash in BIND

Michael McNally mcnally at isc.org
Wed Jun 4 17:49:49 UTC 2014


Summary:

   Versions of the GNU Compiler Collection (GCC) greater than or equal
   to GCC 4.9.0 include changes to code optimization that have been
   reported to cause problems in BIND when default code optimization
   settings are used by the compiler.

Posting date:         4 June 2014
Program Impacted:     BIND 9
Versions affected:    9.8.0 - 9.8.7-W1, 9.9.0 - 9.9.5-W1,
                      9.10.0 - 9.10.0-P1.  Windows binary
                      distributions are NOT affected.

Description:

   ISC is issuing an operational notification to make BIND users
   aware of an unexpected problem caused by the interaction of BIND
   9 and recent versions of GCC.

   Beginning with GCC 4.9.0, code optimization in GCC now includes
   (by default) an optimization which is intended to eliminate
   unnecessary null pointer comparisons in compiled code.
   Unfortunately this optimization removes checks which are necessary
   in BIND and the demonstrated effect is to cause unpredictable
   assertion failures during execution of named, resulting in
   termination of the server process.

   Future versions of BIND will be modified so that the optimizer
   does not incorrectly remove necessary checks when building from
   source, and until those versions are available multiple immediate
   workarounds are available.

Solution:

   If your existing BIND binaries were compiled with a version of
   GCC prior to GCC 4.9.0, or were compiled with a different compiler,
   you do not need to do anything unless you rebuild.

   Until new versions of BIND are released which correct the problem
   automatically, if you need to build (or rebuild) BIND from source,
   you have a choice of several workarounds:

    - Use a version of gcc with a version number less than 4.9.x

    - Add the compiler flag "-fno-delete-null-pointer-checks" to
      your compilation options (e.g.
      "CFLAGS=-fno-delete-null-pointer-checks ./configure [configure
      options]")

    - Use a compiler other than gcc.  (ISC is unable to guarantee
      that no other compilers perform this optimization with BIND,
      but we are not aware of any reported issues other than those
      that have been experienced using GCC 4.9.0)

Do you have Questions? Questions regarding this advisory should go
to support at isc.org.

This operational notification is a copy of the official document
located on our website:  https://kb.isc.org/article/AA-01167

Legal Disclaimer:

   Internet Systems Consortium (ISC) is providing this notice on
   an "AS IS" basis. No warranty or guarantee of any kind is expressed
   in this notice and none should be inferred. ISC expressly excludes
   and disclaims any warranties regarding this notice or materials
   referred to in this notice, including, without limitation, any
   implied warranty of merchantability, fitness for a particular
   purpose, absence of hidden defects, or of non-infringement. Your
   use of, or reliance on, this notice or materials referred to in
   this notice is at your own risk. ISC may change this notice at
   any time.

(c) 2001-2014 Internet Systems Consortium


More information about the bind-announce mailing list