abseil / abseil-cpp

Abseil Common Libraries (C++)
https://abseil.io
Apache License 2.0
15.05k stars 2.62k forks source link

Symbolize.SymbolizeWithMultipleMaps fails in absl_symbolize_test on s390x with LTO #1133

Open musicinmybrain opened 2 years ago

musicinmybrain commented 2 years ago

Describe the bug

In the Fedora Linux distribution package 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:

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 including compiler flags.

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

musicinmybrain commented 1 year ago

I confirmed this still happens with:

musicinmybrain commented 9 months ago

I confirmed this still happens with: