abseil / abseil/abseil-cpp

absl::FailureSignalHandler does not produce useful results on assert() failures

Ouverte
#769 2 commentaires 0 réactions 1 personne assignée Réclamée par @suertreus Voir sur GitHub
bug
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**

After setting up symbolization and installing a failure signal handler, a failing `assert()` with glibc does not produce a useful stack trace, consisting entirely of:
```
cxx_extractor: kythe/cxx/extractor/cxx_extractor.cc:922: virtual void kythe::KzipWriterSink::OpenIndex(const std::string &): Assertion `0 == 1' failed.
*** SIGABRT received at time=1597685134 ***
PC: @ 0x7fbd21014761 (unknown) raise
@ 0x14fe81d 144 absl::WriteFailureInfo()
@ 0x14fe5f7 64 absl::AbslFailureSignalHandler()
@ 0x7fbd211cf110 (unknown) (unknown)
@ 0x4173257325203a75 (unknown) (unknown)
Aborted
```

Calling std::abort directly or CHECK-failing produces a useful stack trace:
```
*** SIGABRT received at time=1597685257 ***
PC: @ 0x7ff5af672761 (unknown) raise
@ 0x14fe81d 144 absl::WriteFailureInfo()
@ 0x14fe5f7 64 absl::AbslFailureSignalHandler()
@ 0x7ff5af82d110 184382256 (unknown)
@ 0x4111da 896 kythe::CompilationWriter::WriteIndex()
@ 0x41db08 80 std::_Function_handler<>::_M_invoke()
@ 0x416c22 144 kythe::(anonymous namespace)::ExtractorAction::EndSourceFileAction()
@ 0x5171fa 144 clang::FrontendAction::EndSourceFile()
@ 0x495cb8 160 clang::CompilerInstance::ExecuteAction()
@ 0x47b902 448 clang::tooling::FrontendActionFactory::runInvocation()
@ 0x47b494 80 clang::tooling::ToolInvocation::runInvocation()
@ 0x47a4c4 2400 clang::tooling::ToolInvocation::run()
@ 0x4130bb 272 kythe::ExtractorConfiguration::Extract()
@ 0x413449 112 kythe::ExtractorConfiguration::Extract()
@ 0x40d36a 1120 main
@ 0x7ff5af65de0b (unknown) __libc_start_main
@ 0x5541d68949564100 (unknown) (unknown)
Aborted
```

**Steps to reproduce the bug**

```
#include
int main(int argc, char** argv) {
google::InitGoogleLogging(argv[0]);
absl::InitializeSymbolizer(argv[0]);
absl::InstallFailureSignalHandler({});
assert(false);
}
```

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

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

If you are using a Linux distribution please include the name and version of the
distribution as well.

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

Debian GNU/Linux rodete

```
$ clang -v
clang version 9.0.1-12
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/10
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/10
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
```

**What build system are you using?**
```
$ bazel --version
bazel 3.4.1
```

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

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