commit | f96dafab1f118f6b01ce32d712515ef95d9da67e | [log] [tgz] |
---|---|---|
author | Jianzhou Zhao <jianzhouzh@google.com> | Wed Feb 03 19:41:58 2021 +0000 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Feb 05 12:49:17 2021 -0800 |
tree | 0696aae18b44db89279a84fc8e821918bd0a237a | |
parent | e46417047a80f3476abffadf1aed3af1cd65e328 [diff] |
[dfsan] Add thread registration This is a part of https://reviews.llvm.org/D95835. This change is to address two problems 1) When recording stacks in origin tracking, libunwind is not async signal safe. Inside signal callbacks, we need to use fast unwind. Fast unwind needs threads 2) StackDepot used by origin tracking is not async signal safe, we set a flag per thread inside a signal callback to prevent from using it. The thread registration is similar to ASan and MSan. Related MSan changes are * https://github.com/llvm/llvm-project/commit/98f5ea0dbae664a2e5f9381a64f2913fe1add208 * https://github.com/llvm/llvm-project/commit/f653cda2695ac7390fe5663f2c0895213938334d * https://github.com/llvm/llvm-project/commit/5a7c3643437c262137bd3dac7f6a0f5b9e8501be Some changes in the diff are used in the next diffs 1) The test case pthread.c is not very interesting for now. It will be extended to test origin tracking later. 2) DFsanThread::InSignalHandler will be used by origin tracking later. Reviewed-by: morehouse Differential Revision: https://reviews.llvm.org/D95963 GitOrigin-RevId: 0f3fd3b2810d7549d5cf7356b269701d5c5032fa