clone 887169 -1
reassign -1 gcc-7
retitle -1 gcc-7: missed optimization of glibc strspn SSE 4.2 variant
forwarded -1 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81481
block 887169 by -1
thanks

On 2018-01-14 10:35, James Lu wrote:
> Package: libc6
> Version: 2.26-3
> Severity: normal
> 
> Dear maintainers,
> 
> On a recent glibc upgrade on buster/sid (first to 2.26-2 and then
> 2.26-3), one Steam game (Civilization V) consistently segfaults on startup.
> 
> Similar issues have been reported in Arch Linux[1], Fedora[2], and
> OpenSUSE[3], where the consensus was that building glibc with

From what I get about the above reported issues, this bug is caused by:
- the Steam games not following the Linux/x86 ABI wrt stack alignement
- the SSE4.2 version of the strspn function needing to push an SSE
  register to the stack when build with GCC 7, due to a missed
  optimization.

> -mstackrealign fixed the issue. (I haven't been able to get such a local
> build working though)

I don't think it is actually the consensus, only Arch Linux has chosen
this solution, and building the whole glibc with this option will have
an impact of the performances for all binaries, not only the broken
Steam ones. I therefore don't think it's the right way to fix the bug.

Instead it looks like fixing PR81481 [1] on the GCC 7 side, and then
rebuilding glibc is the way to go. I am therefore cloning this bug to
gcc-7 so that it can happens.

In the meantime I guess you can run the Steam games by disabling SSE4.2
optimized function using the glibc tunables. Run the game with the
GLIBC_TUNABLES environment variable defined as follow:

  GLIBC_TUNABLES=glibc.tune.hwcaps=-SSE4_2

Aurelien

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81481

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurel...@aurel32.net                 http://www.aurel32.net

Reply via email to