Release/2.18
Contents
1. Planning
1.1. Release Blockers?
- PowerPC POWER8 Hardware Enablement
Re: [PATCH V2] PowerPC: Merge ports/ dl-procinfo.[hc] with base and remove ports versions of these files http://sourceware.org/ml/libc-alpha/2013-05/msg00395.html
- Subsumed in latest patch on rsa/power8
Preparing to commit
commit b90832c35a08a29ecfbe3a35331771ac1a448c2b Author: Ryan S. Arnold <rsa@linux.vnet.ibm.com> Date: Mon May 13 15:38:13 2013 -0500 PowerPC: Remove redundant ports/sysdeps/powerpc/dl-procinfo.[hc]. commit c796dcbe0df1184991f332f2eb955becff7e5770 Author: Ryan S. Arnold <rsa@linux.vnet.ibm.com> Date: Mon May 13 15:31:55 2013 -0500 PowerPC: Merge ports/ dl-procinfo.[hc] with base.
[PATCH rsa/power8] PowerPC: Add support for POWER8. http://sourceware.org/ml/libc-alpha/2013-05/msg00601.html
- This has been acked by Roland.. just waiting on HWCAP2 and dl-procinfo to push.
commit 7ec34a51099d54a38517d6856e32282d2f1187ae Author: Ryan S. Arnold <rsa@linux.vnet.ibm.com> Date: Thu May 16 12:12:16 2013 -0500 PowerPC: Add support for POWER8.
- This has been acked by Roland.. just waiting on HWCAP2 and dl-procinfo to push.
Power Architecture Event-Based Branching facility ABI
http://sourceware.org/ml/libc-alpha/2013-06/msg00647.html - PowerPC: Reserve TCB space for EBB framework
- Pushed as e55a9b256d53c7fc5145e3e4d338d3741b23e232
1.2. Desirable this release?
- Open bug count below 400
- Some cross-localdef support
- Testsuite generating logs with PASS/FAIL statuses
- Substantial progress on merging distribution patches
- Merging in changes from gnulib
- Unify wiki todo lists and items from miscellaneous text files (Carlos)
- libm multiprecision code cleanup and performance improvement (Siddhesh)
- Review and fix getaddrinfo (particularly AI_ADDRCONFIG issues) issues (Carlos)
- There are 24 getaddrinfo issues in the bug tracker.
- There are 15 getaddrinfo issues in the Red Hat bugzilla.
- There needs to be a review of the conformance of the implementation.
- We need to compare against other vendors e.g. Solaris, FreeBSD, Windows, etc.
- We need to fix things with an eye to not breaking applications.
BZ#11787 - Programs with large TLS segment fail (Carlos)
- A workaround here is going to be to use Siddhesh's new LIBC_PTHREAD_DEFAULT_STACK_SIZE env var to bump up default stack sizes.
BZ#13690 - pthread_mutex_unlock potentially cause invalid access (Carlos)
- Review code and potential race.
- PowerPC POWER8 Hardware Enablement
[PATCH] PowerPC: Add functions for shared resources hints http://sourceware.org/ml/libc-alpha/2012-11/msg00741.html
Upstream
[PATCH] RFC: PowerPC: Add Program Priority Register support
[PATCH] PowerPC - Add a faster way to get the thread id http://sourceware.org/ml/libc-alpha/2012-11/msg00200.html
- Contentious and I don't think we'll have time for this discussion in glibc 2.18
[PATCH rsa/hwcap2_v3] Implement AT_HWCAP2 version 3 http://sourceware.org/ml/libc-alpha/2013-05/msg00117.html
- Subsumed in latest patch on rsa/power8
- Waiting on Roland or others to ack.
commit f58f65cd7d3318d3af0073c782844d1a6008b111 Author: Ryan S. Arnold <rsa@linux.vnet.ibm.com> Date: Fri May 3 14:14:40 2013 -0500 Add support for AT_HWCAP2.
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:
x86, builds, no testsuite failures (By: Allan McRae on Arch Linux on Linux 3.9.8, gcc version 4.8.1, BFD assembler version 2.23.2)
x86 GNU/Hurd, needs patching.
x86-64, builds, no testsuite failures (By: Allan McRae on Arch Linux on Linux 3.9.8, gcc version 4.8.1, BFD assembler version 2.23.2)
- x32 builds, no testsuite failures (By: H.J. Lu on Linux 3.9.8, gcc version 4.7.2, binutils 2.23.52)
- PowerPC (soft-float), builds, some testsuite failures listed below.
- PowerPC (hard-float), builds, some testsuite failutes listed below (By: Adhemerval Zanella on 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)
- PowerPC64, builds, some testsuite failutes listed below (By: Adhemerval Zanella on 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)
- s390, builds, some testsuite failures listed below (By: Krebbel Linux 3.8.0 GCC 4.8.1 Binutils: 2.23.52)
s390x, builds, some testsuite failures listed below
(By: Carlos on 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)
(By: Krebbel Linux 3.8.0 GCC 4.8.1 Binutils: 2.23.52)sparc, builds, no testsuite failures (By: DaveMiller on Debian GNU/Linux 7.0 on Linux 3.11.0-rc1, gcc version 4.6.3 (Debian 4.6.3-14), GNU assembler version 2.22 (GNU Binutils for Debian))
sparc64, builds, no testsuite failures (By: DaveMiller on Debian GNU/Linux 7.0 on Linux 3.11.0-rc1, gcc version 4.6.3 (Debian 4.6.3-14), GNU assembler version 2.22 (GNU Binutils for Debian))
- ARM, builds, some testsuite failures listed below.
- MIPS, builds, some testsuite failures listed below.
- Alpha, builds, some testsuite failures listed below (By: rth on qemu 1.5.50 alpha-linux-user, gcc version 4.8.2 20130702 (prerelease), GNU assembler 2.22.52.20120604)
- SH, (By: Kaz Kojima, sh4, builds, relatively many (~100) failures, though almost failures aren't new. (linux-2.6.30, gcc version 4.6.4, BFD assembler version 2.22.52)
- tilegx/tilepro, builds, some testsuite failures listed below (By: cmetcalf, gcc version 4.4.6, GNU assembler 2.21)
Microblaze, (By: David Holsgrove, MicroBlaze builds with 2.18, no issues, gcc 4.8.2, binutils 2.23.2 and linux-3.8)
- AArch64, builds, cross tested, some failures listed below (By: Marcus Shawcroft, Linux 3.7.0-rc5+, GCC 4.9.0 20130715, Binutils 2.23.52.20130715)
- IA64, builds, no regressions compared to 2.17 tests (By: Mike Frysinger, Linux 3.3.8, gcc 4.6.3, binutils 2.22)
Machines that need status information:
- HP-PARISC, ??? Carlos to update.
- m68k, ??? Andreas Scwab to update.
The ref structure of this branch is:
- release/2.18/master: main branch
- glibc-2.18.1: revision releases tagged out of release/2.18/master
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?
- 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.17 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.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 |
|
x86_64 |
|
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
On systems with limited memory, stdio-common/test-vfprintf and stdio-common/bug22 may fail (bug 14231).
On some systems, a race condition may cause nptl/tst-cancel7 and nptl/tst-cancelx7 to fail (bug 14232).
- 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.
On systems with Linux kernels before September 2011, rt-tst-cpuclock2 fails (http://sourceware.org/ml/libc-alpha/2012-02/msg00468.html).
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 http://sourceware.org/ml/libc-alpha/2012-04/msg01014.html regarding the use of system library directories here).
pthread_cond_signal fails with recursive prio_inherit mutex; see bug 15988 (non-x86 systems).
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
Exception "Inexact" failures in as described in http://sourceware.org/ml/libc-alpha/2013-06/msg00939.html
5.1.4. ARM
- On systems with VFPv3 or VFPv4 (not VFPv2, VFPv3U or VFPv4U), math/test-fenv fails. fesetenv (FE_NOMASK_ENV) fails on such systems for lack of support for trapping exceptions, but the test does not handle that failure; feenableexcept should also fail, but does not, and the test does not handle failure of feenableexcept either. Similarly, math/test-fenv fails on systems without VFP hardware.
5.1.5. MIPS
- On soft-float MIPS systems, there is no support for floating-point exceptions and rounding modes, causing math/test-fenv to fail.
- MIPS GCC does not use PT_GNU_STACK markers (this is a GCC issue), causing elf/check-execstack to fail (the relevant kernel support went in around February 2010).
Peculiarities of MIPS ELF cause elf/tst-audit1, elf/tst-audit2, elf/tst-audit8 and elf/check-localplt to fail. For the first two, see bug 2981.
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
The single and double precision math test fail with the same issue: "Failure: nexttoward (qNaN, 1.1): Exception "Inexact" set". It is due a compiler issue regarding IBM log double implementation of addition, where adding NaN and normal number raises inexact exception. Bug already opened against GCC: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57363 .
- The IBM long double tests shows 155 errors and while some are just ULPs update, some recent fixes for cacos, cacosh, casin, casinh, catan, catanh, tgamma are triggering inacuracies and underflow exceptions.
- As previous releases, tst-setcontext, tst-makecontext3, tst-setcontext-fpscr are due a kernel bug.
The local PLT test fails due a GCC optimization (-ftree-loop-distribute-patterns) enabled at -O3 that transform some loops into memset/memmove calls. Since in some source code, the functions are not defined to use internal glibc symbols, compiler ends up generating PLT calls. The patch http://sourceware.org/ml/libc-alpha/2013-05/msg00878.html (pending review) fixes it.
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
The single and double precision math test fail with the same issue: "Failure: nexttoward (qNaN, 1.1): Exception "Inexact" set". It is due a compiler issue regarding IBM log double implementation of addition, where adding NaN and normal number raises inexact exception. Bug already opened against GCC: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57363 .
- The IBM long double tests shows 155 errors and while some are just ULPs update, some recent fixes for cacos, cacosh, casin, casinh, catan, catanh, tgamma are triggering inacuracies and underflow exceptions.
The local PLT test fails due a GCC optimization (-ftree-loop-distribute-patterns) enabled at -O3 that transform some loops into memset/memmove calls. Since in some source code, the functions are not defined to use internal glibc symbols, compiler ends up generating PLT calls. The patch http://sourceware.org/ml/libc-alpha/2013-05/msg00878.html (pending review) fixes it.
5.1.10. PowerPC (soft-float)
- math/test-float, math/test-double, math/test-ldouble, math/test-ildoubl and debug/tst-backtrace5 fail similarly to hard-float.
- There are further failures in math/test-ldouble and math/test-ildoubl beyond those for hard float. Underflowing results of fmal are inaccurate in directed rounding modes, and one test of clog10l and one of clogl have the wrong sign of zero in the imaginary part of the result, probably because the soft-fp code used in libgcc as part of implementing IBM long double does not handle the software rounding mode from libc and does not handle signs of zero results the same as the instruction used in the hardware floating-point case.
5.1.11. tilegx/tilepro
tile doesn't handle -fexceptions correctly for pthread_cancel(); see bug 14266.
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.