abseil / abseil/abseil-cpp

Symbolize.SymbolizeWithMultipleMaps fails in absl_symbolize_test on s390x with LTO

Ouverte
#1,133 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
bug priority: p3
Langage dominant
C++
Étoiles
18.1k
Forks
3.2k
Merge moyen
20 h 36 min
PR mergées (30 j)
1

Description

**Describe the bug**

In the Fedora Linux [distribution package](https://src.fedoraproject.org/rpms/abseil-cpp/) for `abseil-cpp`, we find that `Symbolize.SymbolizeWithMultipleMaps` in `absl_symbolize_test` fails on the `s390x` architecture. When the test fails, a message like
```
/builddir/build/BUILD/abseil-cpp-20210324.2/absl/debugging/symbolize_test.cc:315: Failure
Expected equality of these values:
"kPadding1"
buf
Which is: ""
/builddir/build/BUILD/abseil-cpp-20210324.2/absl/debugging/symbolize_test.cc:349: Failure
Expected equality of these values:
expected[i]
Which is: "kPadding1"
buf
Which is: ""
/builddir/build/BUILD/abseil-cpp-20210324.2/absl/debugging/symbolize_test.cc:349: Failure
Expected equality of these values:
expected[i]
Which is: "kPadding1"
buf
Which is: ""
```
is printed.

When LTO is disabled in the build, the test does not fail.

**Steps to reproduce the bug**

The error can be observed in the RPM build infrastructure for Fedora Linux, but there is nothing particularly special about how we are building the library, and there are no significant downstream patches involved. I expect that this error can probably be reproduced on any `s390x` system when combined with LTO.

**What version of Abseil are you using?**

20111102.0

**What operating system and version are you using**

Fedora Linux Rawhide/37 (development version)

**What compiler and version are you using?**

```
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/12/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-12.0.1-20220308/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none --without-cuda-driver --enable-offload-defaulted --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.0.1 20220308 (Red Hat 12.0.1-0) (GCC)
```

**What build system are you using?**

```
cmake version 3.23.0-rc2

CMake suite maintained and supported by Kitware (kitware.com/cmake).
```

**Additional context**

We are using https://github.com/abseil/abseil-cpp/archive/20111102.0/abseil-cpp-20111102.0.tar.gz with:

- CMake build system (using `ninja` backend)
- System copies of `gtest`/`gmock` 1.11.0
- A [small patch](https://src.fedoraproject.org/rpms/abseil-cpp/blob/c43daf75e50307a61f4a64f7d44b9e5ddff8a0d4/f/abseil-cpp-20211102.0-gtest-unreleased-features.patch) for #1063
- System compiler GCC 12.0.1

While I don’t have convenient interactive access to real `s390x` hardware, I can easily test patches or try experiments on real hardware by submitting “scratch” RPM builds.

I have attached a [complete failing build log](https://github.com/abseil/abseil-cpp/files/8255334/build.log) including compiler flags.

No other architectures (of `x86_64`, `i686`, `aarch64`, and `ppc64le`) are affected.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Le test en échec se trouve dans absl/debugging/symbolize_test.cc, autour des lignes 315 et 349, et vérifie la symbolisation de 'kPadding1'. Le problème est spécifique à l’architecture s390x avec LTO activé. Commencez par reproduire l’échec dans un environnement s390x avec LTO, examinez l’implémentation de la symbolisation dans absl/debugging/symbolize.cc et comprenez comment LTO affecte la visibilité des symboles sur s390x. Consultez le journal de build pour connaître les options du compilateur et tenez compte des interactions avec le LTO de GCC sur les systèmes big-endian.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
cmake, cpp, linux
Domaine
backend, compilers, testing
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.