[lsan] Use VReport if not REGISTERS_AVAILABLE (#116555)
commitac38ab594f1b7c9a9f67007f7684e4d46b2588be
authorFangrui Song <i@maskray.me>
Wed, 20 Nov 2024 09:07:28 +0000 (20 01:07 -0800)
committerGitHub <noreply@github.com>
Wed, 20 Nov 2024 09:07:28 +0000 (20 01:07 -0800)
tree4d0338dd1fbabfbe7378485a4d2869c607a3f583
parentd49ee7d54fe2142976494c1c9b930820f0f62259
[lsan] Use VReport if not REGISTERS_AVAILABLE (#116555)

Certain tests (many are from lld/test) run `... '2>&1 | count 0` to
ensure that there is no stderr message.

GetRegistersAndSP may rarely fail, leading to
a spurious failure like (with a local hack to make `count` dump the
input):

```
+ /home/ray/llvm/out/asan/bin/ld.lld func1-gcs.o func2-gcs.o func3-gcs.o -o /dev/null -z gcs-report=warning -z gcs=never
+ /home/ray/llvm/out/asan/bin/count 0
Expected 0 lines, got 1.
==2403039==Unable to get registers from thread 2403018.
```

The failure can reliably be reproduced by running `ninja check-lld` a
few times under asan+lsan (see the bot
sanitizer-x86_64-linux-bootstrap-asan).
compiler-rt/lib/lsan/lsan_common.cpp