Release/2.18

1. Planning

1.1. Release Blockers?

1.2. Desirable this release?

2. Current Status

The release branch of glibc-2.18 is maintained by David Miller.

The 2.18 release branch is release/2.18/master.

Machine status:

Machines that need status information:

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.17 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.17/master as well, more so if they tell me about it!).

3. LSB Tests Status

No regressions (relative to 2.17).

Fixed problems: bug543(hypotl), bug512(tgamma), bug511_1(initstate) and bug803(getdate). Fixed requirements: math.exp.hypotl.08, math.gamma.tgamma.11.01, math.rand.initstate.11 and util.format.time.getdate.{01, 03, 04, 05, 07, 13, 18.01}.

More info: Testing/LSB_Core#Current_results

4. ABI Compatibility Status

ABI checker result (relative to 2.17):

CPU \ Kernel

GNU/Linux

x86

OK (2013/07/25)

x86_64

OK (2013/07/25)

arm

???

Added _elision field (short) to _pthread_mutex_s structure and changed type of _spins field from int to short on x86_64. Both fields are for internal use only. Size of the container structure is not affected. So this change is safe. See related discussion on the mailing list from 10 Jan 2013.

Added field si_addr_lsb to anon-struct-siginfo.h-108 which is a part of siginfo_t::anon-union-siginfo.h-70. The size of the siginfo_t struct is not changed. This change is safe. See related discussion on the mailing list from 07 May 2013.

4 changed constants: E_MIPS_ARCH_32, E_MIPS_ARCH_64, EF_MIPS_ARCH_32 and EF_MIPS_ARCH_64 (elf.h). This change is safe. See related discussion on the mailing list from 10 Jan 2013.

3 removed constants: EPOLL_NONBLOCK (epoll.h), GLIBC_HAVE_LONG_LONG and USE_ANSI (features.h). This is safe change too. See related discussions on the mailing list: 1, 2 and 3.

See also changes in private ABI.

5. Known Issues

5.1. Testsuite Failures

5.1.1. Architecture-independent

5.1.2. AArch64

make[2]: *** [/work/build-glibc/math/test-ldouble.out] Error 1

testing long double (without inline functions)
Failure: Real part of: casin (0x1.fp-16385 + 0x1p-63 i): Exception "Underflow" not set
Failure: Real part of: casin (0x1.fp-16385 - 0x1p-63 i): Exception "Underflow" not set
Failure: Real part of: casin (-0x1.fp-16385 + 0x1p-63 i): Exception "Underflow" not set
Failure: Real part of: casin (-0x1.fp-16385 - 0x1p-63 i): Exception "Underflow" not set
Failure: Real part of: casin (0x1.fp-16385 + 0x1p-112 i): Exception "Underflow" not set
Failure: Real part of: casin (0x1.fp-16385 - 0x1p-112 i): Exception "Underflow" not set
Failure: Real part of: casin (-0x1.fp-16385 + 0x1p-112 i): Exception "Underflow" not set
Failure: Real part of: casin (-0x1.fp-16385 - 0x1p-112 i): Exception "Underflow" not set
Failure: Real part of: casinh (0x1p-63 + 0x1.fp-16385 i): Exception "Underflow" not set
Failure: Real part of: casinh (-0x1p-63 + 0x1.fp-16385 i): Exception "Underflow" not set
Failure: Real part of: casinh (0x1p-63 - 0x1.fp-16385 i): Exception "Underflow" not set
Failure: Real part of: casinh (-0x1p-63 - 0x1.fp-16385 i): Exception "Underflow" not set
Failure: Real part of: casinh (0x1p-112 + 0x1.fp-16385 i): Exception "Underflow" not set
Failure: Real part of: casinh (-0x1p-112 + 0x1.fp-16385 i): Exception "Underflow" not set
Failure: Real part of: casinh (0x1p-112 - 0x1.fp-16385 i): Exception "Underflow" not set
Failure: Real part of: casinh (-0x1p-112 - 0x1.fp-16385 i): Exception "Underflow" not set

5.1.3. alpha

make[2]: *** [/home/rth/work/libc/bld-axp/math/test-float.out] Error 1
make[2]: *** [/home/rth/work/libc/bld-axp/math/test-double.out] Error 1
make[2]: *** [/home/rth/work/libc/bld-axp/math/test-ildoubl.out] Error 1
make[2]: *** [/home/rth/work/libc/bld-axp/math/test-ldouble.out] Error 1
make[2]: *** [/home/rth/work/libc/bld-axp/math/test-ifloat.out] Error 1
make[2]: *** [/home/rth/work/libc/bld-axp/math/test-idouble.out] Error 1

5.1.4. ARM

5.1.5. MIPS

5.1.6. s390

Linux 3.8.0 GCC 4.8.1 Binutils: 2.23.52

Failed to remake target file `/build/glibc/glibc-build-24072013/nptl/tst-cond16.out'.
Failed to remake target file `/build/glibc/glibc-build-24072013/nptl/tst-cleanup2.out'.
Failed to remake target file `/build/glibc/glibc-build-24072013/nptl/tst-cleanupx2.out'.

5.1.7. s390x

Build system: RHEL6.4 on Linux 2.6.32-358.el6.s390x, gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC), GNU assembler version 2.23.52 (s390x-ibm-linux-gnu) using BFD version (GNU Binutils) 2.23.52.20130425

make[2]: *** [/root/build/glibc/math/test-float.out] Error 1
make[2]: *** [/root/build/glibc/math/test-double.out] Error 1
make[2]: *** [/root/build/glibc/math/test-ldouble.out] Error 1
make[2]: *** [/root/build/glibc/math/test-ildoubl.out] Error 1
make[2]: *** [/root/build/glibc/math/test-ifloat.out] Error 1
make[2]: *** [/root/build/glibc/math/test-idouble.out] Error 1
make[1]: *** [math/tests] Error 2
make[2]: *** [/root/build/glibc/wcsmbs/wcsatcliff.out] Error 1
make[1]: *** [wcsmbs/tests] Error 2
make[2]: [/root/build/glibc/posix/annexc.out] Error 1 (ignored)
make[2]: [/root/build/glibc/conform/run-conformtest.out] Error 1 (ignored)
make[2]: *** [/root/build/glibc/elf/tst-unique3lib.so] Error 1
make[2]: *** [/root/build/glibc/elf/tst-unique3lib2.so] Error 1
make[2]: *** [/root/build/glibc/elf/tst-unique4lib.so] Error 1
make[1]: *** [elf/tests] Error 2
make: *** [check] Error 2

Linux 3.8.0 GCC 4.8.1 Binutils: 2.23.52

Failed to remake target file `/home/andreas/glibc/glibc-build/nptl/tst-mutex7.out'.
Failed to remake target file `/home/andreas/glibc/glibc-build/nptl/tst-mutex7a.out'.
Failed to remake target file `/home/andreas/glibc/glibc-build/nptl/tst-mutexpi7.out'.
Failed to remake target file `/home/andreas/glibc/glibc-build/nptl/tst-mutexpi7a.out'.
Failed to remake target file `/home/andreas/glibc/glibc-build/nptl/tst-cleanup2.out'.
Failed to remake target file `/home/andreas/glibc/glibc-build/nptl/tst-cleanupx2.out'.

5.1.8. PowerPC (hard-float)

Build System: RHEL 6.4 on Linux 2.6.32-279.2.1.el6.ppc64, gcc version 4.8.0 (GCC), GNU assembler version 2.23.52 (powerpc64-linux) using BFD version (GNU Binutils) 2.23.52.20130429. The -mcpu=power7 flag was used.

make[2]: *** [/home/azanella/glibc/build/glibc32_power7_4.8/math/test-float.out] Error 1
make[2]: *** [/home/azanella/glibc/build/glibc32_power7_4.8/math/test-double.out] Error 1
make[2]: *** [/home/azanella/glibc/build/glibc32_power7_4.8/math/test-ldouble.out] Error 1
make[2]: *** [/home/azanella/glibc/build/glibc32_power7_4.8/math/test-ildoubl.out] Error 1
make[1]: *** [math/tests] Error 2
make[2]: *** [/home/azanella/glibc/build/glibc32_power7_4.8/stdlib/tst-setcontext.out] Error 1
make[2]: *** [/home/azanella/glibc/build/glibc32_power7_4.8/stdlib/tst-makecontext3.out] Error 1
make[2]: *** [/home/azanella/glibc/build/glibc32_power7_4.8/stdlib/tst-setcontext-fpscr.out] Error 5
make[1]: *** [stdlib/tests] Error 2
make[2]: [/home/azanella/glibc/build/glibc32_power7_4.8/posix/annexc.out] Error 1 (ignored)
make[2]: *** [/home/azanella/glibc/build/glibc32_power7_4.8/rt/tst-cpuclock2.out] Error 1
make[2]: *** [/home/azanella/glibc/build/glibc32_power7_4.8/rt/tst-mqueue5.out] Error 1
make[1]: *** [rt/tests] Error 2
make[2]: [/home/azanella/glibc/build/glibc32_power7_4.8/conform/run-conformtest.out] Error 1 (ignored)
make[2]: *** [/home/azanella/glibc/build/glibc32_power7_4.8/debug/tst-backtrace5.out] Error 1
make[1]: *** [debug/tests] Error 2
make[2]: *** [/home/azanella/glibc/build/glibc32_power7_4.8/elf/check-localplt.out] Error 1
make[2]: *** [check-abi-libc] Error 1
make[1]: *** [elf/tests] Error 2

5.1.9. PowerPC64

Build System: RHEL 6.4 on Linux 2.6.32-279.2.1.el6.ppc64, gcc version 4.8.0 (GCC), GNU assembler version 2.23.52 (powerpc64-linux) using BFD version (GNU Binutils) 2.23.52.20130429. The -mcpu=power7 flag was used.

make[2]: *** [/home/azanella/glibc/build/glibc64_power7_4.8/math/test-float.out] Error 1
make[2]: *** [/home/azanella/glibc/build/glibc64_power7_4.8/math/test-ldouble.out] Error 1
make[2]: *** [/home/azanella/glibc/build/glibc64_power7_4.8/math/test-double.out] Error 1
make[2]: *** [/home/azanella/glibc/build/glibc64_power7_4.8/math/test-ildoubl.out] Error 1
make[1]: *** [math/tests] Error 2
make[2]: [/home/azanella/glibc/build/glibc64_power7_4.8/posix/annexc.out] Error 1 (ignored)
make[2]: *** [/home/azanella/glibc/build/glibc64_power7_4.8/rt/tst-cpuclock2.out] Error 1
make[1]: *** [rt/tests] Error 2
make[2]: [/home/azanella/glibc/build/glibc64_power7_4.8/conform/run-conformtest.out] Error 1 (ignored)
make[2]: *** [/home/azanella/glibc/build/glibc64_power7_4.8/debug/tst-backtrace5.out] Error 1
make[1]: *** [debug/tests] Error 2
make[2]: *** [check-abi-libc] Error 1
make[2]: *** [/home/azanella/glibc/build/glibc64_power7_4.8/elf/check-localplt.out] Error 1
make[1]: *** [elf/tests] Error 2

5.1.10. PowerPC (soft-float)

5.1.11. tilegx/tilepro

5.2. Build Failures

No known unresolved build failures. The final 2.18 release will work correctly with gcc 4.8 even in the presence of -ftree-loop-distribute-patterns.

5.3. Packaging Changes

5.3.1. Removal of ``pt_chown``

By default the GNU C Library no longer ships or requires the pt_chown helper binary.

Your system must use /dev/pts and mount it with gid 5 in order to support automatically handling permission changes.

Your distribution should avoid using pt_chown and should instead rely on /dev/pts to handle the required permission changes. You can still enable the building and use of pt_chown but you must understand and accept the risks involved before using --enable-pt_chown as a configure switch.

5.3.2. Issues with ``__strstr_sse42``

It has been reported that after upgrading to 2.18 some users have experienced crashes in __strstr_sse42. The first reports of this were from Allan McRae (Arch Linux) here: http://www.sourceware.org/ml/libc-alpha/2013-08/msg00257.html.

It appears that this is a compiler issue, but none the less it results in a non-functioning glibc 2.18 that passes the testsuite cleanly but then causes most of x86 userspace to crash. The fundamental issue is that the psABI is not followed and the stack is not maintained aligned. If __strstr_sse42 is called with an unaligned stack it will fault as this violates the psABI.

One "fix" is to patch glibc to make these functions inline again, but that isn't a real fix and only papers over the actual problem which will eventually occur if any of the code is perturbed enough to get a misaligned stack again. One solution is to disable the use of the SSE42 routines in glibc, but that has a performance penalty. Another solution is to rebuild the faulty code that (indirectly) calls __strstr_sse42 with a compiler (such as any GCC released after the year 2000 when -msse went in with the 16 byte stack alignment) that always ensures the stack is aligned modulo 16 bytes, or to correct any assembly code that may leave the stack unaligned. It may also be the case that the stack is misaligned due to compilation flags such as -mpreferred-stack-boundary: BusyBox likes to configure x86 builds with -mpreferred-stack-boundary=2 (see arch/i386/Makefile), for example, and undoing that (EXTRA_CFLAGS='[...] -mpreferred-stack-boundary=4') resolves the problem.

There is still some debate over the issue since glibc should try to be as compatible as possible and should therefore support binaries with misaligned stacks (indirectly) calling SSE42 strstr, and doing this would require new entry points that do dynamic stack realingment. However, doing the dynamic stack realignment is an added cost to the SSE42 strstr routine which already has poor asymptotic performance whom several argue should be removed entirely or fixed, see bug https://sourceware.org/bugzilla/show_bug.cgi?id=12100.

None: Release/2.18 (last edited 2014-08-08 08:21:21 by tschwinge)