aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2016-07-20 10:29:08 +0000
committerDmitry Vyukov <dvyukov@google.com>2016-07-20 10:29:08 +0000
commitdcad913ab66fde15d00c8d5116b00efef082cc41 (patch)
tree1829328cdacc16c3b8a958ffc4ca7359b4c713c2
parente3b9ee0645a62b0be69c31f8a45cfd2195545998 (diff)
downloadllvm-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.cc6
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.