[CI] Ensure llvm-symbolizer is available in PATH
Summary:
We see occasional flakiness on TSAN that gives not-so-useful output like this:
==5540==WARNING: failed to fork (errno 12) ==5540==WARNING: Failed to use and restart external symbolizer! ================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=5540) Cycle in lock order graph: M100059481 (0x7fffa93419f8) => M100059482 (0x7fffa93419d0) => M100059481 Mutex M100059482 acquired here while holding mutex M100059481 in main thread: #0 <null> <null> (test_bitcoin+0xeacce) #1 <null> <null> (test_bitcoin+0x7b9675) #2 <null> <null> (test_bitcoin+0x7b8e8b) #3 <null> <null> (test_bitcoin+0x198299) #4 <null> <null> (libboost_unit_test_framework.so.1.67.0+0x55dbd) #5 <null> <null> (libc.so.6+0x2409a)
Attempts to symbolize that memory manually suggests a deadlock that is already in our suppressions file.
Although clang sanitizers will default to llvm-symbolizer, it's not in our path, so it defaults to addr2line.
It's not clear if addr2line can be assumed to perform as well as llvm-symbolizer. Testing both locally
indicates they produce very similar output when suppressions files are not used, for instance.
This patch is more of an experiment to see if llvm-symbolizer is able to correctly symbolize the above logs.
If so, either the suppression will stop being flaky or we will obtain useful information to pinpoint the root
cause.
Test Plan: Run ASAN, TSAN, UBSAN on CI and make sure they still pass
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Differential Revision: https://reviews.bitcoinabc.org/D6746