[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#800574: marked as done (libc6: lock elision hazard on Intel Broadwell and Skylake)



Your message dated Mon, 19 Oct 2015 05:19:14 +0000
with message-id <E1Zo2qo-0005tU-Kx@franck.debian.org>
and subject line Bug#800574: fixed in glibc 2.21-0experimental2
has caused the Debian Bug report #800574,
regarding libc6: lock elision hazard on Intel Broadwell and Skylake
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
800574: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800574
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: libc6
Version: 2.19-4
Severity: grave
Justification: causes non-serious data loss

Intel Broadwell-H and Skylake-S/H have critical errata that causes HLE
to be extremely dangerous to use on those processors, resulting in
unpredictable behavior (i.e. process crashes when you are lucky, data
corruption when you are not) when hardware lock-elision is enabled in
glibc/libpthread.

Broadwell errata BBD50 (desktop/mobile), BDW50 (server):

	An HLE (Hardware Lock Elision) transactional region begins with
	an instruction with the XACQUIRE prefix.  Due to this erratum,
	reads from within the transactional region of the memory
	destination of that instruction may return the value that was
	in memory before the transactional region began

According to the Intel errata list, a firmware fix is possible, but I
have no idea whether it is done by toggling a boot-locked MSR that
disables HLE, or through a microcode update.  The MSR is more likely,
but if it is a microcode update, it is going to be as much of a hazard
as the Haswell one that disabled TSX+HLE.

I recommend that we extend the HLE blacklist in glibc to also include
CPU signature 0x40671.  This will disable HLE on Xeon E3-1200v4, and
5th-generation Core i5/i7.  These processors are supposed to already
have TSX disabled (errata BBD51/BDW51).

Skylake's latest public specification update still doesn't list any HLE
errata, but it is not really recent.  OTOH, there is a Gentoo user's
report that Skylake is also unstable when HLE is enabled in glibc and
that the crashes stop when glibc is compiled without lock elision.

For that reason, it might be a good idea to also blacklist HLE on CPU
signatures 0x506e1, 0x506e2 and 0x506e3, which would disable HLE on
Skylake-S and Skylake-H (6th gen Core i5/i7).  This won't cover the
Skylake Xeon E3-1200v5, for which there are no reports of breakage (nor
a public specification update I could find).

References: 
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=762195
https://bbs.archlinux.org/viewtopic.php?id=202545

In hindsight, it looks like we would have been better off by disabling
lock elision entirely for Debian jessie when we fixed #762195.
Something to consider when the time comes to fix this bug in stable
through a stable update...

-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh

--- End Message ---
--- Begin Message ---
Source: glibc
Source-Version: 2.21-0experimental2

We believe that the bug you reported is fixed in the latest version of
glibc, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 800574@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Aurelien Jarno <aurel32@debian.org> (supplier of updated glibc package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.8
Date: Mon, 19 Oct 2015 00:20:34 +0200
Source: glibc
Binary: libc-bin libc-dev-bin libc-l10n glibc-doc glibc-source locales locales-all nscd multiarch-support libc6 libc6-dev libc6-dbg libc6-pic libc6-udeb libc6.1 libc6.1-dev libc6.1-dbg libc6.1-pic libc6.1-udeb libc0.3 libc0.3-dev libc0.3-dbg libc0.3-pic libc0.3-udeb libc0.1 libc0.1-dev libc0.1-dbg libc0.1-pic libc0.1-udeb libc6-i386 libc6-dev-i386 libc6-sparc libc6-dev-sparc libc6-sparc64 libc6-dev-sparc64 libc6-s390 libc6-dev-s390 libc6-amd64 libc6-dev-amd64 libc6-powerpc libc6-dev-powerpc libc6-ppc64 libc6-dev-ppc64 libc6-mips32 libc6-dev-mips32 libc6-mipsn32 libc6-dev-mipsn32 libc6-mips64 libc6-dev-mips64 libc0.1-i386 libc0.1-dev-i386 libc6-x32 libc6-dev-x32 libc6-i686 libc6-xen libc0.1-i686 libc0.3-i686 libc0.3-xen libc6.1-alphaev67 libnss-dns-udeb libnss-files-udeb
Architecture: source
Version: 2.21-0experimental2
Distribution: experimental
Urgency: medium
Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
Changed-By: Aurelien Jarno <aurel32@debian.org>
Description:
 glibc-doc  - GNU C Library: Documentation
 glibc-source - GNU C Library: sources
 libc-bin   - GNU C Library: Binaries
 libc-dev-bin - GNU C Library: Development binaries
 libc-l10n  - GNU C Library: localization files
 libc0.1    - GNU C Library: Shared libraries
 libc0.1-dbg - GNU C Library: detached debugging symbols
 libc0.1-dev - GNU C Library: Development Libraries and Header Files
 libc0.1-dev-i386 - GNU C Library: 32bit development libraries for AMD64
 libc0.1-i386 - GNU C Library: 32bit shared libraries for AMD64
 libc0.1-i686 - GNU C Library: Shared libraries [i686 optimized]
 libc0.1-pic - GNU C Library: PIC archive library
 libc0.1-udeb - GNU C Library: Shared libraries - udeb (udeb)
 libc0.3    - GNU C Library: Shared libraries
 libc0.3-dbg - GNU C Library: detached debugging symbols
 libc0.3-dev - GNU C Library: Development Libraries and Header Files
 libc0.3-i686 - GNU C Library: Shared libraries [i686 optimized]
 libc0.3-pic - GNU C Library: PIC archive library
 libc0.3-udeb - GNU C Library: Shared libraries - udeb (udeb)
 libc0.3-xen - GNU C Library: Shared libraries [Xen version]
 libc6      - GNU C Library: Shared libraries
 libc6-amd64 - GNU C Library: 64bit Shared libraries for AMD64
 libc6-dbg  - GNU C Library: detached debugging symbols
 libc6-dev  - GNU C Library: Development Libraries and Header Files
 libc6-dev-amd64 - GNU C Library: 64bit Development Libraries for AMD64
 libc6-dev-i386 - GNU C Library: 32-bit development libraries for AMD64
 libc6-dev-mips32 - GNU C Library: o32 Development Libraries for MIPS
 libc6-dev-mips64 - GNU C Library: 64bit Development Libraries for MIPS64
 libc6-dev-mipsn32 - GNU C Library: n32 Development Libraries for MIPS64
 libc6-dev-powerpc - GNU C Library: 32bit powerpc development libraries for ppc64
 libc6-dev-ppc64 - GNU C Library: 64bit Development Libraries for PowerPC64
 libc6-dev-s390 - GNU C Library: 32bit Development Libraries for IBM zSeries
 libc6-dev-sparc - GNU C Library: 32bit Development Libraries for SPARC
 libc6-dev-sparc64 - GNU C Library: 64bit Development Libraries for UltraSPARC
 libc6-dev-x32 - GNU C Library: X32 ABI Development Libraries for AMD64
 libc6-i386 - GNU C Library: 32-bit shared libraries for AMD64
 libc6-i686 - GNU C Library: Shared libraries [i686 optimized]
 libc6-mips32 - GNU C Library: o32 Shared libraries for MIPS
 libc6-mips64 - GNU C Library: 64bit Shared libraries for MIPS64
 libc6-mipsn32 - GNU C Library: n32 Shared libraries for MIPS64
 libc6-pic  - GNU C Library: PIC archive library
 libc6-powerpc - GNU C Library: 32bit powerpc shared libraries for ppc64
 libc6-ppc64 - GNU C Library: 64bit Shared libraries for PowerPC64
 libc6-s390 - GNU C Library: 32bit Shared libraries for IBM zSeries
 libc6-sparc - GNU C Library: 32bit Shared libraries for SPARC
 libc6-sparc64 - GNU C Library: 64bit Shared libraries for UltraSPARC
 libc6-udeb - GNU C Library: Shared libraries - udeb (udeb)
 libc6-x32  - GNU C Library: X32 ABI Shared libraries for AMD64
 libc6-xen  - GNU C Library: Shared libraries [Xen version]
 libc6.1    - GNU C Library: Shared libraries
 libc6.1-alphaev67 - GNU C Library: Shared libraries (EV67 optimized)
 libc6.1-dbg - GNU C Library: detached debugging symbols
 libc6.1-dev - GNU C Library: Development Libraries and Header Files
 libc6.1-pic - GNU C Library: PIC archive library
 libc6.1-udeb - GNU C Library: Shared libraries - udeb (udeb)
 libnss-dns-udeb - GNU C Library: NSS helper for DNS - udeb (udeb)
 libnss-files-udeb - GNU C Library: NSS helper for files - udeb (udeb)
 locales    - GNU C Library: National Language (locale) data [support]
 locales-all - GNU C Library: Precompiled locale data
 multiarch-support - Transitional package to ensure multiarch compatibility
 nscd       - GNU C Library: Name Service Cache Daemon
Closes: 672774 764692 785796 788799 797538 797831 798064 798316 799418 800574 800846 801691 802256
Changes:
 glibc (2.21-0experimental2) experimental; urgency=medium
 .
   [ Samuel Thibault ]
   * Symbol versions which contain _DEBIAN_ are unexpected by upstream scripts.
     Add hurd-i386-only patches/hurd-i386/local-versions-hack.diff to work
     around the issue.  Also take the opportunity of the upstream version bump
     to bump the versions to GLIBC_2_21, which will allow one to remove the
     _DEBIAN_ hacks once packages are rebuilt.
   * patches/hurd-i386/unsubmitted-libpthread-semaphore.h.diff: Remove
     libpthread/sysdeps/i386/bits/semaphore.h, now that hurd Implies
     libpthread/sysdeps/generic. Move libpthread/include/semaphore.h into
     libpthread/sysdeps/pthread/semaphore.h instead of the latter just
     including the former, since the latter is what gets installed.
   * patches/hurd-i386/cvs-cache-mach_host_self.diff: New patch to avoid port
     count issue on the host port.
   * patches/hurd-i386/unsubmitted-gnumach.defs.diff: Also build
     task_notify.defs stubs.  Drop unneeded change.
   * libc0.3.symbols.hurd-i386: Update.
   * patches/hurd-i386/local-mach_print.diff: New patch to export mach_print.
 .
   [ Aurelien Jarno ]
   * rules.d/debhelper.mk: replace GLIBC_VERSION before LIBC.  Closes:
     #797538.
   * Drop loongson-2f flavour on mipsel as this machine is not supported
     anymore (default to R2 ISA).
   * kfreebsd/local-sysdeps.diff: update to revision 5772 (from glibc-bsd).
     Closes: #764692, #785796.
   * testsuite-checking/expected-results-mips*: allow the new tst-audit9
     fail, like the others tst-auditX.
   * testsuite-checking/expected-results-mips(el)-linux-gnu-libc: allow
     conformtest for sys/stat.h to fail for O32 ABI. They were previously
     under the failing test run-conformtest.out, but it has been lost in
     the conversion to the new format.
   * testsuite-checking/expected-results-mips*: sort the files. Remove
     failures due to old kernel now that all buildds run jessie.
   * debhelper.in/locales-all.prerm: do not specify a path to check for
     locale-gen.
   * libc6.1.symbols.alpha: remove invoke_dynamic_linker from libpcprofile.so.
     It has disappeared, but it is a private library.
   * Remove debver2localesdep.pl, it is unused since 2.19-16.
   * Use $(GLIBC_VERSION) for shlib, instead of defining the version in a
     separate shlibver file.
   * Remove completely outdated README, README.source and TODO files.
   * rules.d/debhelper.mk: use the default compression format for libc6,
     libc-bin and multiarch-support. Nowadays deboostrap is able to handle
     the xz format and modern distributions also support it. Anyway almost
     all packages installed by debootstrap are now using the xz format.
   * Bump debhelper compatibility to level 9. This brings compressed debug
     file using the build-id instead of a fixed path. This is much more
     multiarch friendly.
   * control.in/*: remove pre-squeeze conflicts.
   * libc-bin, libc-dev-bin: Recommends the manpages package and add lintian
     override for missing manpages.
   * sysdeps/s390x.mk: --enable-lock-elision.
   * testsuite-checking/expected-results-x86_64-linux-gnux32-*: allow
     conformtest for headers with tv_nsec to fail for x32. The type
     non-compliance is intentional. These tests were previously marked as
     failing under the run-conformtest.out, but they have been lost during
     the conversion to the new format.
   * testsuite-checking/compare.sh: re-enable failures in case of regressions.
   * rules.d/build.mk: don't require flavours to be tested before being
     installed. They are still tested when calling the build-arch or
     binary-arch targets, but not anymore when calling the build-indep or
     binary-indep targets.
   * patches/hppa/cvs-alloca-werror.diff: new patch from upstream to fix a
     build failure.
   * debhelper.in/libc.preinst: fix up error message for too old Linux
     kernels.  Closes: #800846.
   * patches/any/cvs-ld_pointer_guard.diff: new patch from upstream to
     unconditionally disable LD_POINTER_GUARD.  Closes: #798316, #801691.
   * patches/any/cvs-mangle-tls_dtor_list.diff: new patch from upstream to
     mangle function pointers in tls_dtor_list.  Closes: #802256.
   * Update Brazilian Portuguese debconf translation, by Adriano Rafael
     Gomes.  Closes: #799418.
 .
   [ Steven Chamberlain ]
   * sysdeps/kfreebsd.mk: find kfreebsd-kernel-headers in multiarch path.
     Closes: #672774, #798064.
 .
   [ Helmut Grohne ]
   * Fix some issues with stage 1.  Closes: #797831.
 .
   [ Adam Conrad ]
   * debian/patches/arm/local-arm-futex.diff: Lie about the minimum kernel
     support for futex_atomic_cmpxchg_inatomic to restore the  previous state
     and fix the pulsesink (and others) regression on ARM (closes: #788799)
 .
   [ Henrique de Moraes Holschuh ]
   * Replace patches/amd64/local-blacklist-on-TSX-Haswell.diff by
     local-blacklist-for-Intel-TSX.diff also blacklisting some Broadwell
     models.  Closes: #800574.
Checksums-Sha1:
 fd761ec4eac7bf3d13369eab55e538574f0e2245 8248 glibc_2.21-0experimental2.dsc
 31c082c59310c4b7735bbb6717e74a4fb603f7ed 986484 glibc_2.21-0experimental2.debian.tar.xz
Checksums-Sha256:
 9fdadce8edf4dc52a5341a4306f1e1d9db2c03e5eeeb5c6512833074965f326f 8248 glibc_2.21-0experimental2.dsc
 2582ce18e1f909e9234ba3169fc2130e8a3b6324988122003647fb05e25bb7b7 986484 glibc_2.21-0experimental2.debian.tar.xz
Files:
 cba9eeba0df44a6eacecb9c6f946a7dc 8248 libs required glibc_2.21-0experimental2.dsc
 472c7e0d0fe1269e1aa94ce9c5141c3d 986484 libs required glibc_2.21-0experimental2.debian.tar.xz

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBAgAGBQJWJHmqAAoJELqceAYd3YybLU4P/ArJFWaiJKc4PDSLWppEGjJj
bVooDTNIEiQ2hEyhf0cAV7elwlqLdRYlQL7L40zVt43C0IgIfKVRfAgq2OtPoCW6
78nfS2Wx39cc+LXPsGFZrARGPdw+bc/QOUOzUcQs/A39+BFuesqTl+DU0/bGpHTp
d2xOhGTWu4JNsGYK9DExlm8KvbnXEikd6xJJCmvCKbVep5YF2bXcseSdgKmZlXAw
BAFLhA/T3OblvSCoOkkZSkp/SJyMaR/KJ9LZ9Fqvt04gO2Z0ok2AdpOBMCdkMt34
vU0ACY3L1cb4+xeXDAuSvcHMi0X32m/caG/0xm3iK1rQ32erk59XhUaJy+GNXWMu
wOqoySQ8mCVZ9Zs4GsE+1M2RYCmsmumjRnV4rZAE52WF3hY+iPkodZNSDi9vh5WB
VjYh3A9G+eClAhLNM0xBV7ztmULd5koT6raTdFaWZew1In4xxn+OlhVIDWdELSOU
M86qZCNDJQpxbs0HoDgTBYLoqy4weqnY+mTejjo8EGFKXHNrK1kZ7gLQmogmTkvr
P/xI8ng7iv7odEjjsGgIVx8w8FV7V27VBQtQsSKVqogS30mJRZQ/wYsyDmWD/wne
vQ98Y0ruTGrnvTDtTxn6EVKJxq7DD4udrdt6FXuTzK+mbD+EpLfj7BgOwvIVRbxs
mgivdzwe6BsWafTtBRPu
=O16T
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: