summaryrefslogtreecommitdiff
path: root/lib/tsan
diff options
context:
space:
mode:
authorDerek Bruening <bruening@google.com>2016-06-03 04:30:47 +0000
committerDerek Bruening <bruening@google.com>2016-06-03 04:30:47 +0000
commit009632990e8c5b96eb0973782381fa0e778858ae (patch)
treef9569f8e7aac71d2b8621e6364da3cabfd57e8f0 /lib/tsan
parent2edd48d650739735a003d0251544ce10efe8896a (diff)
[esan] Ensure internal_sigaction() bypasses interceptors
Summary: Implements real_sigaction() which it turns out is required for internal_sigaction() to bypass the libc interceptors. Without real_sigaction(), our internal_sigaction() calls during init happen to work due to the EsanDuringInit check in COMMON_INTERCEPTOR_ENTER (though even here it does not feel right for an "internal_" call to go through the interceptor). The real problem is when we call internal_sigaction() after we're initialized, which only happens on an unhandled SIGSEGV for which the app has no handler: then we'll spin in an infinite loop as our attempts to remove our own handler repeatedly fail. It's not easy to add a test for that, unfortunately. Reviewers: aizatsky Subscribers: vitalybuka, zhaoqin, kcc, eugenis, llvm-commits, kubabrecka Differential Revision: http://reviews.llvm.org/D20832 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@271626 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan')
0 files changed, 0 insertions, 0 deletions