abseil / abseil/abseil-cpp

SymbolizeStackConsumption fails when run alone

Abierto
#1,012 1 comentario 0 reacciones 0 asignados Ver en GitHub
bug
Lenguaje dominante
C++
Estrellas
18.1k
Forks
3.2k
Merge medio
20 h 36 min
PR fusionados (30 d)
1

Descripción

**Describe the bug**

In some builds (see below), running `symbolize_test` with `--gtest_filter=Symbolize.SymbolizeStackConsumption` causes that test to fail, e.g.
```
[ RUN ] Symbolize.SymbolizeStackConsumption
/home/BOSDYN/akhripin/bdi/3rdparty_src/abseil-cpp/absl/debugging/symbolize_test.cc:253: Failure
Expected: (stack_consumed) < (GetStackConsumptionUpperLimit()), actual: 2272 vs 2048
/home/BOSDYN/akhripin/bdi/3rdparty_src/abseil-cpp/absl/debugging/symbolize_test.cc:261: Failure
Expected: (stack_consumed) < (GetStackConsumptionUpperLimit()), actual: 2272 vs 2048
[ FAILED ] Symbolize.SymbolizeStackConsumption (0 ms)
```

**Steps to reproduce the bug**

I have reproduced this in several Linux x86_64 builds on my ubuntu 18.04 machine. Notably, the bazel build without `-O2` does work.

#### cmake
```
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=ON ..
make -j32
./bin/absl_symbolize_test # PASSES
./bin/absl_symbolize_test --gtest_filter=Symbolize.SymbolizeStackConsumption # FAILS
```
#### bazel with -O2
I'm very new to bazel, but:
```
bazel test --copt=-O2 //absl/debugging:symbolize_test
bazel-out/k8-fastbuild/bin/absl/debugging/symbolize_test # PASSES
bazel-out/k8-fastbuild/bin/absl/debugging/symbolize_test --gtest_filter=Symbolize.SymbolizeStackConsumption # FAILS
```

This uses gcc 7 by default . I've tried gcc 8, clang 8, and clang 10. The amount of stack violation varies, but all of them exhibit the problem. Variations like `-O3` and `-Os`, architecture switches, etc, change the exact max stack size, but all exhibit the same problem.

This also fails: `env CC=g++-8 bazel test --copt=-O1 --copt=-fcaller-saves //absl/debugging:symbolize_test`

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

`4bb9e39c88854dbf466688177257d11810719853` (master as of a few hours ago. Problem also manifested with code from Jul 2 (58e042da9210710dc4ac3b320e48b54e2449521e)

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

Ubuntu 18.04, x86_64

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

Default gcc:
```
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
```

Other compilers tested: gcc 8, clang 8, clang 10.

**What build system are you using?**

`bazel 4.0.0` and `cmake version 3.10.2`

**Additional context**

I came across this because I integrated abseil (tests and all) into our gn-based build system. Our parallel test framework runs test cases from each gtest one at a time (each in a separate process).

Running both stack consumption tests in one process also fails on both (`--gtest_filter=Symbolize\*Stack*`)

Other interesting multi-test cases:

* `bazel-out/k8-fastbuild/bin/absl/debugging/symbolize_test --gtest_filter=Symbolize\*Stack*:\*Cache\*`
```
[ RUN ] Symbolize.Cached
[ OK ] Symbolize.Cached (0 ms)
[ RUN ] Symbolize.SymbolizeStackConsumption
[ OK ] Symbolize.SymbolizeStackConsumption (0 ms)
[ RUN ] Symbolize.SymbolizeWithDemanglingStackConsumption
absl/debugging/symbolize_test.cc:273: Failure
Expected: (stack_consumed) < (GetStackConsumptionUpperLimit()), actual: 3696 vs 2048
[ FAILED ] Symbolize.SymbolizeWithDemanglingStackConsumption (0 ms)
[----------] 3 tests from Symbolize (1 ms total)

[----------] Global test environment tear-down
[==========] 3 tests from 1 test suite ran. (1 ms total)
[ PASSED ] 2 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] Symbolize.SymbolizeWithDemanglingStackConsumption
```

One of the stack consumption tests passes, but the other uses way more stack than any other observed failure (3696 bytes; others have been 2100-2200)

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.