diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2016-07-20 10:29:08 +0000 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2016-07-20 10:29:08 +0000 |
| commit | dcad913ab66fde15d00c8d5116b00efef082cc41 (patch) | |
| tree | 1829328cdacc16c3b8a958ffc4ca7359b4c713c2 | |
| parent | e3b9ee0645a62b0be69c31f8a45cfd2195545998 (diff) | |
| download | llvm-dcad913ab66fde15d00c8d5116b00efef082cc41.zip llvm-dcad913ab66fde15d00c8d5116b00efef082cc41.tar.gz llvm-dcad913ab66fde15d00c8d5116b00efef082cc41.tar.bz2 | |
tsan: fix leak of shadow stacks
llvm-svn: 276103
| -rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc b/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc index ab8f3c3..13528ae 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc +++ b/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc @@ -125,6 +125,12 @@ void ThreadContext::OnStarted(void *arg) { } void ThreadContext::OnFinished() { +#ifdef SANITIZER_GO + internal_free(thr->shadow_stack); + thr->shadow_stack = nullptr; + thr->shadow_stack_pos = nullptr; + thr->shadow_stack_end = nullptr; +#endif if (!detached) { thr->fast_state.IncrementEpoch(); // Can't increment epoch w/o writing to the trace as well. |
