Release/2.23
Contents
1. Current status
The release branch of glibc-2.23 is maintained by Adhemerval Zanella and was released on 2016-02-18. There are no immediate plans for the next release.
The ref structure of this branch is:
- release/2.23/master: main branch
- glibc-2.23.N: revision releases tagged out of release/2.23/master
These people are interested in contents and further revisions tagged on the branch:
<Add your name here>
The general policies for release branches apply to this branch. Do you think a certain bugfix should be included in this branch?
- Is the fix committed in master? It has to be, unless it's not applicable to master (e.g. code has been rewritten meantime).
- Do you have commit permissions? If so, go ahead if you think it's reasonably safe. break;
- 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;
- Add the glibc_2.23 keyword to the appropriate bug report.
- 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.23/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?
Incorrect collation for Danish (bug 18589) (a regression in 2.22, causes sort-test.sh to fail at random).
- Fixed by 87701a58e291bd7ac3b407d10a829dac52c9c16e.
Go through fixed security+ bugs. Try to obtain CVE identifiers where they are still missing. (FlorianWeimer volunteered for this)
Add strlcpy/strlcat
- Decision pushed to 2.24
BZ #19467 - Fast_Unaligned_Load needs to be enabled for Excavator core CPU's
Fix ABI for external copies of string function inlines on AArch64. See patch or alternative patch variant.
BZ #19329 Fix race between tls allocation at thread creation and dlopen
- Postponed to 2.24
2.2. Desirable this release?
Update the i18n, UTF-8, and translit_* files to Unicode 8.0.0.
- Fixed by 85bafe6f3d0e4647af5e74178b46abdf44d3b981, 23256f5ed889266223380c02b2750d19e3fe666b, 589ac5232867e36a8242c2505a45274b6c7b0f00, dd8e8e547647bf7a3f6feb816a848a846feeaf14, 40b59cace2fd5e5aa04367073a54efc995059376, 6f84663a4f8105da59859ce699309c2d284d6494.
POWER9 support in AT_HWCAP2
- Implemented by d2de9ef7.
Compiler barriers for POWER HTM built-ins)
- Implemented by 42bf1c89.
New condvar implementation
- Moved to 2.24
- Add tunables framework
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
On systems with limited memory, stdio-common/test-vfprintf and stdio-common/bug22 may fail (bug 14231).
- If cross-testing, and the physical path to the build directory is different on the build system and the host used for testing (if it involves a symlink on one system but not the other), io/ftwtest fails.
If the test system does not have suitable copies of libgcc_s.so and libstdc++.so installed in system library directories, it is necessary to copy or symlink them into the build directory before testing (see https://sourceware.org/ml/libc-alpha/2012-04/msg01014.html regarding the use of system library directories here).
- nss/tst-nss-getpwent may time out with large numbers of users on slow systems.
Cause of nptl/tst-cancel24-static failure, seen on multiple architectures, unknown, but responsible commit identified.
posix/tst-regex started to fail after d2bb040b.
3.1.2. AArch64
Build system: gcc version 6.0.0 20160129, binutils 2.26.51.20160129, linux 3.13 (Szabolcs Nagy)
FAIL: debug/tst-backtrace5 FAIL: debug/tst-backtrace6 FAIL: misc/bug18240
- debug/tst-backtrace5,6 failures are because cancellation point syscall names are missing from the backtrace, this will be fixed when the cancellation cleanup happens.
misc/bug18240 timeouts because of memset over huge memory
Transient failures observed:
FAIL: rt/tst-cpuclock2 FAIL: nptl/tst-stack4
- rt/tst-cpuclock2 sometimes spuriously fails on this machine (possibly kernel issue).
nptl/tst-stack4 is bug 19329.
Build system: gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC), GNU assembler version 2.23.52.0.1 (aarch64-redhat-linux), 4.5.0-0.rc4.28.el7.aarch64 (Carlos O'Donell)
FAIL: debug/tst-backtrace5 FAIL: debug/tst-backtrace6 FAIL: math/basic-test FAIL: math/test-double FAIL: math/test-float UNSUPPORTED: math/test-nearbyint-except-2 UNSUPPORTED: nptl/tst-thread_local1 FAIL: rt/tst-mqueue6 Summary of test results: 6 FAIL 2331 PASS 2 UNSUPPORTED 86 XFAIL
math/test-double, a lot of tgamma_upward failures e.g.
testing double (without inline functions) Failure: tgamma_upward (-0x1.86a08p+16): errno set to 0, expected 34 (ERANGE)
Should investigate as a toolchain issue probably.
3.1.3. Alpha
3.1.4. ARM
Build system: (soft-float) GCC 5.3.1 20160121, binutils 2.26.51.20160121, Linux 3.5.0 (Joseph Myers)
FAIL: io/ftwtest FAIL: math/basic-test FAIL: nptl/tst-cancel24-static FAIL: rt/tst-cputimer1 FAIL: stdlib/tst-makecontext
On soft-float systems, math/basic-test fails because of GCC bug 59833.
Build system: (hard-float ABI) GCC 5.3.1 20160121, binutils 2.26.51.20160121, Linux 3.5.0 (Joseph Myers)
FAIL: io/ftwtest FAIL: nptl/tst-cancel24-static FAIL: rt/tst-cputimer1 FAIL: stdlib/tst-makecontext
- Cause of rt/tst-cputimer1 failure unknown, but seen sometimes on other architectures.
- Cause of stdlib/tst-makecontext failure unknown.
3.1.5. HPPA
Note: You will need two patches to get things working:
https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=57dbdc64994f65c96d7ffcf4ead6b24bb78e7135
https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=e973063f44ce67dd737e88765afb024a06fca847
Build system: parisc PA8600 (PCX-W+) 9000/785/C3600, gcc (Gentoo 4.8.4 p1.6, pie-0.6.1), GNU assembler (Gentoo 2.25.1 p1.1), Linux headers 3.18, Linux 3.18.7-gentoo. (Mike Frysinger)
FAIL: debug/backtrace-tst FAIL: debug/tst-backtrace2 FAIL: debug/tst-backtrace3 FAIL: debug/tst-backtrace4 FAIL: debug/tst-backtrace5 FAIL: debug/tst-backtrace6 FAIL: debug/tst-longjmp_chk2 FAIL: elf/check-execstack FAIL: elf/check-localplt FAIL: elf/check-textrel FAIL: elf/tst-audit2 FAIL: malloc/tst-malloc-thread-fail FAIL: math/test-double FAIL: math/test-double-finite FAIL: math/test-float FAIL: math/test-float-finite FAIL: math/test-idouble FAIL: math/test-ifloat FAIL: nptl/tst-cancel24-static FAIL: nptl/tst-cancel3 FAIL: nptl/tst-cancel4 FAIL: nptl/tst-cancel5 FAIL: nptl/tst-cancelx20 FAIL: nptl/tst-cancelx21 FAIL: nptl/tst-cancelx3 FAIL: nptl/tst-cancelx4 FAIL: nptl/tst-cancelx5 FAIL: nptl/tst-cleanup4 FAIL: nptl/tst-cleanupx4 FAIL: nptl/tst-default-attr FAIL: nss/bug17079 FAIL: rt/tst-cputimer1 FAIL: rt/tst-cputimer2 FAIL: rt/tst-cputimer3 FAIL: rt/tst-mqueue8 FAIL: rt/tst-mqueue8x FAIL: rt/tst-timer4 FAIL: rt/tst-timer5 FAIL: stdio-common/test-vfprintf FAIL: stdlib/tst-makecontext FAIL: stdlib/tst-setcontext2 FAIL: stdlib/tst-setcontext3
3.1.6. IA64
Note: Building with gcc-4.8+ and --hash-style=gnu will create an ldso that segfaults immediately. See https://gcc.gnu.org/PR60465 for more details. You can workaround this in three ways:
build glibc with <=gcc-4.7
- build glibc with -Wl,--hash-style=sysv
build glibc with this hack
Build system: ia64 Dual-Core Intel(R) Itanium(R) Processor 9040, gcc (Gentoo 4.9.3 p1.2, pie-0.6.3), GNU assembler (Gentoo 2.25.1 p1.1), Linux headers 3.18, Linux 3.14.14-gentoo. (Mike Frysinger)
FAIL: debug/tst-backtrace4 FAIL: math/test-double FAIL: math/test-fenv-return FAIL: math/test-float FAIL: math/test-idouble FAIL: math/test-ifloat FAIL: math/test-ildoubl FAIL: math/test-ldouble FAIL: nptl/tst-cancel24-static FAIL: stdio-common/tst-long-dbl-fphex FAIL: stdlib/tst-makecontext3
tst-backtrace4 is known to fail on IA64 due to limited backtrace output; mailing list thread
- all the math/ tests probably match some open bugs on the topic, or need some baselines updated, or are limitations in the IA64 optimized libm
- tst-cancel24-static crash is unknown
- tst-cpuclock2 seems to be flaky as it passes normally, but sometimes fails under load
tst-makecontext3 fails as makecontext is known to be limited on IA64; bug 14250
3.1.7. M68K
Build system: gcc (Gentoo 4.9.2 p1.4, pie-0.6.2), GNU assembler (Gentoo 2.25.1 p1.0), Linux headers 4.4 (Mike Frysinger)
Build-test only for m68k-unknown-linux-gnu is OK.
3.1.8. MicroBlaze
Build system: gcc (Gentoo 4.9.3 p1.2, pie-0.6.2), GNU assembler (Gentoo 2.25.1 p1.0), Linux headers 4.4. (Mike Frysinger)
Build-test only for microblaze-linux-gnu is OK.
3.1.9. MIPS
Build system: (soft-float) GCC 5.3.1 20160121, binutils 2.26.51.20160121, Linux 2.6.35.9 (Joseph Myers)
The following failures apply to both BE and LE, o32, n32 and n64, both hard-float and soft-float.
FAIL: elf/check-execstack FAIL: elf/check-localplt FAIL: io/ftwtest FAIL: nptl/tst-cancel24-static FAIL: nss/tst-nss-getpwent FAIL: stdio-common/bug22 FAIL: stdio-common/test-vfprintf FAIL: timezone/tst-tzset
The following applies to n32:
FAIL: malloc/tst-malloc-thread-fail
The following applies to n32 and o32:
FAIL: posix/tst-mmap-offset
The following apply to soft-float:
FAIL: math/test-fenv FAIL: math/test-fenvinline FAIL: math/test-nearbyint-except
The following was seen for BE n64 soft-float:
FAIL: nptl/tst-stack4
- On soft-float MIPS systems, there is no support for floating-point exceptions and rounding modes, causing math/test-fenv, math/test-fenvinline and math/test-nearbyint-except to fail.
MIPS GCC does not use PT_GNU_STACK markers, causing elf/check-execstack to fail. Because of how the kernel FPU emulator works, fixing this involves complicated changes to components including both the Linux kernel and glibc.
- Peculiarities of MIPS ELF cause elf/check-localplt to fail.
- Cause of timezone/tst-tzset failure unknown, but may result from limited memory or slow system.
- Cause of nptl/tst-stack4 failure unknown, maybe intermittent.
A patch for tst-malloc-thread-fail is available.
See discussion of tst-mmap-offset.
3.1.10. Nios II
Build system: GCC 5.2.0, binutils 2.25.51, Linux headers 4.2, test board running Linux 4.0 (Chung-Lin Tang)
FAIL: elf/tst-rtld-load-self FAIL: elf/tst-tls13 FAIL: iconvdata/tst-tables FAIL: io/ftwtest FAIL: malloc/tst-malloc-thread-fail FAIL: nptl/tst-cancel24-static FAIL: nptl/tst-cancel7 FAIL: nptl/tst-cancelx7 FAIL: nptl/tst-cond12 FAIL: nptl/tst-cond13 FAIL: nptl/tst-stack4 FAIL: nss/bug17079 FAIL: nss/tst-nss-getpwent FAIL: stdio-common/bug22 FAIL: stdio-common/test-vfprintf FAIL: stdio-common/tst-sprintf FAIL: string/test-strcasecmp FAIL: string/test-strncasecmp FAIL: timezone/tst-tzset FAIL: wcsmbs/test-wcsncmp FAIL: build stdlib/bug-getcontext.o FAIL: build sunrpc/tst-xdrmem FAIL: build sunrpc/tst-xdrmem2
- malloc/tst-malloc-thread-fail crashes the system; might be kernel bug somewhere.
- nptl/tst-cond12 hangs, reason unknown.
- nss/bug17079 is a timeout, manually verified to work. Submitted patch to libc-alpha to enlarge TIMEOUT setting.
- All others are known from 2.22.
3.1.11. PowerPC (32-bit soft-float)
Build system: (soft-float) GCC 5.3.1 20160121, binutils 2.26.51.20160121, Linux 3.10.38 (Joseph Myers)
FAIL: io/ftwtest FAIL: malloc/tst-malloc-thread-fail FAIL: math/test-double FAIL: math/test-float FAIL: math/test-ildoubl FAIL: math/test-ldouble FAIL: math/test-ldouble-finite FAIL: nss/tst-nss-getpwent FAIL: stdio-common/bug22 FAIL: stdio-common/test-vfprintf FAIL: stdlib/tst-setcontext2 FAIL: timezone/tst-tzset
test-double, test-float fail because of GCC bug 64811 causing __gcc_qadd in libgcc to generate spurious floating-point exceptions.
- test-ildoubl, test-ldouble and test-ldouble-finite fail because of IBM long double issues.
A patch for tst-malloc-thread-fail is available.
- Cause of stdlib/tst-setcontext2 failure unknown.
- Cause of timezone/tst-tzset failure unknown, but may result from limited memory or slow system.
3.1.12. PowerPC (32-bit hard-float)
Build system: Linux 4.0.0, gcc 5.3.1, Binutils 2.25.90.20151209 (Tulio Magno)
FAIL: malloc/tst-malloc-thread-fail FAIL: math/test-ildoubl FAIL: math/test-ldouble FAIL: math/test-ldouble-finite
malloc/tst-malloc-thread-fail is a known failure reported as bug #6527.
3.1.13. PowerPC64 (64-bit hard-float)
Build system: Linux 3.19.3, gcc 4.9.2 20150212, Binutils 2.24 (Tulio Magno)
FAIL: math/test-ildoubl FAIL: math/test-ldouble FAIL: math/test-ldouble-finite
3.1.14. PowerPC64LE (64-bit hard-float)
Build system: Linux 4.3.3, gcc 6.0.0 [rev. 232670], Binutils 2.25.0 (Tulio Magno)
FAIL: math/test-ildoubl FAIL: math/test-ldouble FAIL: math/test-ldouble-finite
In another server (Linux 3.13.0, GCC 4.8.4, Binutils 2.24), I get the following intermittent failures:
malloc/tst-malloc-thread-exit: this is a known issue and it already has a proposed fix.
Build system: gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC), GNU assembler version 2.23.52.0.1 (ppc64le-redhat-linux), 3.10.0-349.el7.ppc64le (Carlos O'Donell)
XPASS: elf/tst-protected1a XPASS: elf/tst-protected1b FAIL: math/test-double FAIL: math/test-float FAIL: math/test-ildoubl FAIL: math/test-ldouble FAIL: math/test-ldouble-finite UNSUPPORTED: nptl/tst-thread_local1 Summary of test results: 5 FAIL 2368 PASS 1 UNSUPPORTED 84 XFAIL 2 XPASS
Requires patching test-get_hwcap.c, see https://www.sourceware.org/ml/libc-alpha/2016-02/msg00485.html
3.1.15. S/390 (32-bit)
Build system: gcc version 5.3.0, GNU Binutils version 2.25, Linux 4.2 (Stefan Liebler)
FAIL: nptl/tst-setuid2
nptl/tst-setuid2 passes with root privileges.
3.1.16. S/390 (64-bit)
Build system: gcc version 5.3.0, GNU Binutils version 2.25, Linux 4.2 (Stefan Liebler)
FAIL: nptl/tst-cancelx4 FAIL: nptl/tst-cancelx5 FAIL: nptl/tst-cancelx16 FAIL: nptl/tst-setuid2
nptl/tst-cancelx4|5 fails due to "cleanup handler not called for 'sigwait'". GCC 4.9 and higher saves r15 in a floating-point register in do_sigwait() and emits false cfi information. If a thread is cancelled while sigwait blocks, unwinding has already stopped before the function with the cleanup-handler. See gcc commits "S/390: Fix cfi for GPR 2 FPR saves" in gcc 4.9 branch, gcc 5 branch and gcc-head. This issue occures if built with -O2. With -O3, r15 is not saved in fpr here and the test passes.
nptl/tst-cancelx16 fails due to not called cleanup handler around lockf - same issue as above.
nptl/tst-setuid2 passes with root privileges.
Build system: gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC), GNU assembler version 2.26.51 (s390x-ibm-linux-gnu), Linux 3.10.0-349.el7.s390x (Carlos O'Donell)
FAIL: iconvdata/iconv-test FAIL: nptl/tst-cancel17 UNSUPPORTED: nptl/tst-thread_local1 Summary of test results: 2 FAIL 2364 PASS 1 UNSUPPORTED 86 XFAIL
iconvdata/iconv-test is a sigsegv, probably a compiler related issue.
nptl/tst-cancel17 is the usual sporadic cancellation failure.
nptl/tst-thread_local1 because gcc didn't have thread_local support.
3.1.17. SuperH
Build system: gcc (Gentoo 4.9.2 p1.4, pie-0.6.2), GNU assembler (Gentoo 2.25.1 p1.0), Linux headers 4.4 (Mike Frysinger)
Build-test only for sh4-unknown-linux-gnu is OK.
3.1.18. SPARC (32-bit)
3.1.19. SPARC (64-bit)
3.1.20. TILE-Gx (64-bit and 32-bit)
Build system: TILE-Gx72 running CentOS 6.3, with gcc 4.8.2, binutils 2.21, and Linux 3.10.55. (Chris Metcalf)
FAIL: nptl/tst-cancel24 FAIL: nptl/tst-cancel24-static FAIL: nptl/tst-cancelx16 FAIL: nptl/tst-cancelx17 FAIL: nptl/tst-cancelx18 FAIL: nptl/tst-cancelx20 FAIL: nptl/tst-cancelx21 FAIL: nptl/tst-cancelx4 FAIL: nptl/tst-cancelx5 FAIL: nptl/tst-cleanupx0 FAIL: nptl/tst-cleanupx1 FAIL: nptl/tst-cleanupx3 FAIL: nptl/tst-cleanupx4 FAIL: nptl/tst-oncex3 FAIL: nptl/tst-oncex4 FAIL: rt/tst-mqueue8x
The failures above are due to bug 14266
FAIL: nptl/tst-cancel17
The failure above occurs only on tilegx32: segfault, cause unknown.
3.1.21. TILEPro
Cross "make" on x86_64 successful with binutils-2.23.1, linux-3.9.2 headers, and gcc 4.8.5. "make check" was not run. (Chris Metcalf)
3.1.22. x86 (32-bit, Linux)
Build system: gcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC), GNU assembler version 2.25 (x86_64-redhat-linux), 4.3.5-300.fc23.x86_64 (Carlos O'Donell)
Summary of test results: 2381 PASS 86 XFAIL
3.1.23. x86_64 (64-bit, Linux)
Build system: gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC), GNU assembler version 2.23.52.0.1 (x86_64-redhat-linux), 3.10.0-349.el7.x86_64 (Carlos O'Donell)
UNSUPPORTED: nptl/tst-thread_local1 Summary of test results: 2400 PASS 1 UNSUPPORTED 86 XFAIL
Build system: gcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC), GNU assembler version 2.25 (x86_64-redhat-linux), 4.3.5-300.fc23.x86_64 (Carlos O'Donell)
Summary of test results: 2403 PASS 86 XFAIL
3.1.24. x86_64 (x32, Linux)
Tested with GCC 5.3.1 and binutils 2.26 20160106 under kernel 4.3.3 on Fedora 23.
3.1.25. x86 (32-bit, Hurd)
3.2. Packaging Changes
3.2.1. regexp.h
The header file regexp.h (not to be confused with regex.h) has been removed, leaving behind a stub containing only an #error directive. No packaging changes are required, and binary backward compatibility is preserved, but any program that uses this header will fail to compile with 2.23.
This header and the API it defines were formerly part of SUS, but were deprecated in 1994 and removed from the standard in 2001. Moreover, the glibc implementation suffered from bugs that had gone unnoticed from 1996 through 2009, including memory leaks which were impractical to fix. See bug 18681 for more information.
Programs that use this header are expected to be rare. They should be updated to use regex.h, and the somewhat different API defined there, instead. regcomp is the replacement for the compile function and its associated macros, and regexec is the replacement for the step and advance functions and their associated global variables.