Release/2.21

1. Current status

The release branch of glibc-2.21 is maintained by Carlos O'Donell and its current release is 2.21.0, which we expect to tag on January 30th 2015. There are no immediate plans for the next release.

The ref structure of this branch is:

These people are interested in contents and further revisions tagged on the branch:

The general policies for release branches apply to this branch. Do you think a certain bugfix should be included in this branch?

  1. Is the fix committed in master? It has to be, unless it's not applicable to master (e.g. code has been rewritten meantime).
  2. Do you have commit permissions? If so, go ahead if you think it's reasonably safe. break;
  3. Can you handle Git yourself? Then you can clone the glibc repository, cherry-pick the appropriate fixes, push your branch out and send a pull request at libc-alpha. break;
  4. Add the glibc_2.21 keyword to the appropriate bug report.
  5. If there is no appropriate bug report, send a request for the fix to be included to libc-alpha.

A revision release is tagged either when some critical bug-fix appears, or after some period of real-world testing, usually mainly in some SUSE distribution branch (but other distributions are welcome to run latest release/2.21/master as well, more so if they tell me about it!).

2. Planning

What things do we want to accomplish this release?

2.1. Release blockers?

2.2. Desirable this release?

2.3. Postpone to next release (2.22)

3. Known Issues

3.1. Build and test issues

Describe build and test issues for each architecture, or confirm a clean build with no testsuite failures. The list below is not a complete list of ABI variants; testing should try to cover the different ABI variants as far as possible.

Build system: UNAME -a, GCC?, Binutils?, Kernel ?

TRIMMED LIST OF FAILURES.

3.1.1. Architecture-independent

3.1.2. AArch64

LP64 LE

Build system: Linux version 3.10.55.0-1-linaro-lt-vexpress64, gcc-4.9.3 20141121, binutils 2.25.51.20141124.

FAIL: debug/tst-backtrace5
FAIL: debug/tst-backtrace6
FAIL: nptl/tst-cond10
FAIL: nptl/tst-stack4
FAIL: stdio-common/test-vfprintf
FAIL: stdio-common/tst-sprintf
FAIL: string/stratcliff
FAIL: wcsmbs/wcsatcliff
Summary of test results:
      8 FAIL
   2160 PASS
    198 XFAIL
      4 XPASS

3.1.3. Alpha

Build system: Linux 3.16.0, gcc gentoo 4.9.2 p1.0, binutils 2.24.51, qemu 2.2.50

FAIL: conform/POSIX2008/termios.h/conform
FAIL: conform/UNIX98/termios.h/conform
FAIL: crypt/badsalttest
FAIL: debug/tst-backtrace5
FAIL: debug/tst-backtrace6
FAIL: elf/check-localplt
FAIL: math/atest-sincos
FAIL: math/test-fenv-return
FAIL: math/test-float
Summary of test results:
      9 FAIL
   2127 PASS
    128 XFAIL
     74 XPASS

3.1.4. ARM

Build system: (soft-float) GCC 4.9.3 20150124 (prerelease), binutils 2.25.51.20150124, Linux 2.6.34.1 (Joseph Myers)

FAIL: elf/check-localplt
FAIL: io/ftwtest
FAIL: math/basic-test
FAIL: nptl/tst-cancel7
FAIL: nptl/tst-cancelx7
FAIL: nptl/tst-mutexpi9
FAIL: nptl/tst-stack4
FAIL: stdio-common/bug22
FAIL: stdio-common/test-vfprintf
FAIL: stdio-common/tst-sprintf

3.1.5. HPPA

3.1.6. IA64

3.1.7. M68K

3.1.8. MicroBlaze

3.1.9. MIPS

3.1.10. NIOS2

3.1.11. PowerPC (32-bit soft-float)

Build system: (soft-float) GCC 4.9.3 20150124 (prerelease), binutils 2.25.51.20150124, Linux 2.6.34.1 (Joseph Myers)

FAIL: elf/check-localplt
FAIL: io/ftwtest
FAIL: math/test-double
FAIL: math/test-float
FAIL: math/test-ildoubl
FAIL: math/test-ldouble
FAIL: rt/tst-cpuclock2
FAIL: stdio-common/bug22

3.1.12. PowerPC (32-bit hard-float)

3.1.13. PowerPC (64-bit hard-float)

3.1.14. PowerPC (64-bit hard-float Little-Endian)

Build system: RHEL 7.1 Build Box, gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC), GNU assembler version 2.23.52.0.1 (ppc64le-redhat-linux) using BFD version version 2.23.52.0.1-26.ael7a 20130226, Kernel 3.10.0-153.el7.ppc64le5.ppc64le (Carlos O'Donell)

FAIL: math/test-double
FAIL: math/test-float
FAIL: math/test-ildoubl
FAIL: math/test-ldouble
FAIL: posix/tst-chmod
FAIL: posix/tst-getaddrinfo5
FAIL: rt/tst-cpuclock2
Summary of test results:
      7 FAIL
   2164 PASS
    129 XFAIL
     73 XPASS

Test math/test-double:

testing double (without inline functions)
Failure: nexttoward (qNaN, 1.1): Exception "Inexact" set
Failure: nexttoward_downward (qNaN, 1.1): Exception "Inexact" set
Failure: nexttoward_towardzero (qNaN, 1.1): Exception "Inexact" set
Failure: nexttoward_upward (qNaN, 1.1): Exception "Inexact" set

Test suite completed:
  51320 test cases plus 49465 tests for exception flags and
    49465 tests for errno executed.
  4 errors occurred.

Test math/test-float:

testing float (without inline functions)
Failure: nexttoward (qNaN, 1.1): Exception "Inexact" set
Failure: nexttoward_downward (qNaN, 1.1): Exception "Inexact" set
Failure: nexttoward_towardzero (qNaN, 1.1): Exception "Inexact" set
Failure: nexttoward_upward (qNaN, 1.1): Exception "Inexact" set

Test suite completed:
  33141 test cases plus 31458 tests for exception flags and
    31458 tests for errno executed.
  4 errors occurred.

Test math/test-ildoubl:

...
Failure: Test: yn_upward (42, 0x8p-972)
Result:
 is:         -1.79769313486231570814e+308  -0x1.fffffffffffff0000000p+1023
 should be:  -1.79769313486231580793e+308  -0x1.fffffffffffff7ffffffp+1023
 difference:  1.79769313486231550857e+308   0x1.ffffffffffffe0000000p+1023
 ulp       :  81129638414606663681390495662080.0000
 max.ulp   :  9.0000

Test suite completed:
  73495 test cases plus 71036 tests for exception flags and
    71036 tests for errno executed.
  1648 errors occurred.

A lot of failures here, mostly what appear to be precision issues.

Similarly for math/test-idouble:

Failure: Test: yn_upward (42, 0x8p-972)
Result:
 is:         -1.79769313486231570814e+308  -0x1.fffffffffffff0000000p+1023
 should be:  -1.79769313486231580793e+308  -0x1.fffffffffffff7ffffffp+1023
 difference:  1.79769313486231550857e+308   0x1.ffffffffffffe0000000p+1023
 ulp       :  81129638414606663681390495662080.0000
 max.ulp   :  9.0000

Test suite completed:
  73897 test cases plus 71438 tests for exception flags and
    71438 tests for errno executed.
  3074 errors occurred.

Test posix/tst-chmod

file mode not changed to 0777 | S_ISUID | S_ISGID

Looks like a kernel bug.

Test posix/tst-getaddrinfo5

resolving "localhost." failed, skipping this hostname
resolving "www.gnu.org." worked, proceeding to test
resolving "www.gnu.org.." worked, test failed

Looks like a real bug.

Lastly rt/tst-cpuclock2.out is the ever present intermittent test that fails due to timing. That test needs review.

e.g.

live thread clock fffffffffffe50de resolution 0.000000001
live thread before sleep => 0.001486400
self thread before sleep => 0.001844110
live thread after sleep => 0.501535910
self thread after sleep => 0.001876460
absolute clock_nanosleep on process 18446744073709550418 past target (outside reasonable range)
absolute clock_nanosleep on process slept 99998802 (outside reasonable range)
absolute clock_nanosleep on PROCESS_CPUTIME_ID 18446744073709543220 past target (outside reasonable range)
absolute clock_nanosleep on PROCESS_CPUTIME_ID slept 99991604 (outside reasonable range)

3.1.15. S/390 (32-bit)

3.1.16. S/390 (64-bit)

3.1.17. SH

3.1.18. SPARC (32-bit)

3.1.19. SPARC (64-bit)

3.1.20. TILE-Gx

3.1.21. TILEPro

3.1.22. x86 (32-bit, Linux)

Build system: Fedora 21 Build Box, gcc version 4.9.2 20141101 (Red Hat 4.9.2-1) (GCC) , GNU assembler version 2.24 (x86_64-redhat-linux) using BFD version version 2.24, Kernel 3.17.8-300.fc21.x86_64. (Carlos O'Donell)

FAIL: math/test-float
Summary of test results:
      1 FAIL
   2169 PASS
      1 UNRESOLVED
    198 XFAIL
      4 XPASS

The test float errors are all ERANGE failures:

testing float (without inline functions)
Failure: exp10 (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp10 (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp10_downward (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp10_downward (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp10_towardzero (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp10_towardzero (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp2 (-0x4.01p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp2 (-0x4.32p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_downward (-0x4.01p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp2_downward (-0x4.32p+8): errno set to 0, expected 34 (ERANGE)
Failure: exp2_towardzero (-0x4.01p+12): errno set to 0, expected 34 (ERANGE)
Failure: exp2_towardzero (-0x4.32p+8): errno set to 0, expected 34 (ERANGE)
Failure: pow10 (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: pow10 (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)
Failure: pow10_downward (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: pow10_downward (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)
Failure: pow10_towardzero (-0x1.31p+8): errno set to 0, expected 34 (ERANGE)
Failure: pow10_towardzero (-0x1.344p+12): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x1.86a08p+16): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x1.f3fffep+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x1.f40002p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x2.9ffffcp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x2.a00004p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x2.edfffcp+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x2.ee0004p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x3.1ffffcp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x3.200004p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x3.e7fffcp+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x3.e80004p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x4.e1fff8p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x4.e20008p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x5.dbfff8p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x5.dc0008p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.3ffff8p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.400008p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.d5fff8p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.d60008p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.e2fff8p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.e30008p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.e3fff8p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.e40008p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.e4fff8p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.e50008p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.e5fff8p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.e60008p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.ebfff8p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.ec0008p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.ecfff8p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.ed0008p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.edfff8p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.ee0008p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.eefff8p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x6.ef0008p+8): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x9.5ffffp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0x9.60001p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xa.c0001p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.4ffffp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.50001p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.5ffffp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.60001p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.6ffffp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.70001p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.7ffffp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.80001p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.bffffp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.c0001p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.cffffp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.d0001p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.dffffp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.e0001p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.effffp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xb.f0001p+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xf.9ffffp+4): errno set to 0, expected 34 (ERANGE)
Failure: tgamma (-0xf.a0001p+4): errno set to 0, expected 34 (ERANGE)

Test suite completed:
  33061 test cases plus 31378 tests for exception flags and
    31378 tests for errno executed.
  74 errors occurred.

Need to investigate these.

3.1.23. x86_64 (64-bit, Linux)

Build system: Fedora 21 Build Box, gcc version 4.9.2 20141101 (Red Hat 4.9.2-1) (GCC) , GNU assembler version 2.24 (x86_64-redhat-linux) using BFD version version 2.24, Kernel 3.17.8-300.fc21.x86_64. (Carlos O'Donell)

Summary of test results:
   2184 PASS
      1 UNRESOLVED
    199 XFAIL
      3 XPASS

3.1.24. x86_64 (x32, Linux)

Build system: Fedora 21/x86-64, gcc version 4.9.2 20150107 (Red Hat 4.9.2-5) (GCC) , GNU binutils 2.25.51.20150123, Kernel 3.18.3-201.fc21.x86_64. (H.J. Lu)

FAIL: elf/check-localplt
FAIL: elf/tst-leaks1-mem
FAIL: nptl/tst-robust8
FAIL: nptl/tst-sem1
FAIL: nptl/tst-sem14
FAIL: rt/tst-mqueue5
Summary of test results:
      6 FAIL
   1785 PASS
     76 XFAIL 
      2 XPASS

FAIL: nptl/tst-setuid2
Summary of test results for extra tests:
      1 FAIL
     15 PASS

3.1.25. x86 (32-bit, Hurd)

3.2. Packaging Changes

Describe any distribution packing changes that may be required.

3.2.1. Minimum required gcc version increased to 4.6

The minimum GCC version that can be used to build this version of the GNU C Library is GCC 4.6. Older GCC versions, and non-GNU compilers, can still be used to compile programs using the GNU C Library.

3.2.2. -Werror is enabled by default

The -Werror compiler flag in now enabled by default when building glibc. Although most warnings when building have been addressed, you may need to pass "--disable-werror" to configure when building with a toolchain combination that was untested by the developers.