[lldb/test] Enable faulthandler in dotest
authorJordan Rupprecht <rupprecht@google.com>
Wed, 16 Sep 2020 21:26:40 +0000 (14:26 -0700)
committerJordan Rupprecht <rupprecht@google.com>
Wed, 16 Sep 2020 21:26:40 +0000 (14:26 -0700)
commitdd67581407c1693e43ac8a90b3a20c597614bda8
tree4df6b46fc684a31f42c0a008dd6657e4c5412103
parentb1cb9d6271263b197ba53cac28a0fc3bf27ec5b8
[lldb/test] Enable faulthandler in dotest

Register the `faulthandler` module so we can see what lldb tests are doing when they misbehave (e.g. run under a test runner that sets a timeout). This will print a stack trace for the following signals:

- `SIGSEGV`, `SIGFPE`, `SIGABRT`, `SIGBUS`, and `SIGILL` (via `faulthandler.enable()`)
- `SIGTERM` (via `faulthandler.register(SIGTERM)`) [This is what our test runners sends when it times out].

The only signal we currently handle is `SIGINT` (via `unittest2.signals.installHandler()`) so there should be no overlap added by this patch.

Because this import is not available until python3, and the `register()` method is not available on Windows, this is enabled defensively.

This should have absolutely no effect when tests are passing (or even normally failing), but can be observed by running this while ninja is running:

```
kill -s SIGTERM $(ps aux | grep dotest.py | head -1 | awk '{print $2}')
```

Reviewed By: JDevlieghere

Differential Revision: https://reviews.llvm.org/D87637
lldb/packages/Python/lldbsuite/test/dotest.py